如何在Sonar中的路径中排除带空格的文件?

我试图从Sonars静态代码和unit testing覆盖率分析中排除一些自动生成的代码(服务引用)。 该项目是C#.Net和Sonar在Windows服务器上通过Jenkins运行。

在我的sonar-project.properties文件中,我可以使用sonar.exclusions属性排除各种其他文件和目录,但这不适用于路径中有空格的文件。

sonar.exclusions=**/Global.asax.cs, **/MyProject/Service References/* 

鉴于上面的示例,解决方案中的所有项目都排除了Global.asax.cs文件,但服务引用却没有。

我试过用单引号和双引号括起路径。 我曾尝试使用反斜杠来逃避空间。 我已经尝试将路径作为** / MyProject / Service * / *来利用通配符(可能有风险),但这也不起作用。

有人有解决方案吗?

我刚遇到同样的问题。 我需要在项目文件Scripts中排除项目中的javascript文件“我的项目”。 我先试过这个:

 **/Scripts/**/*.js 

这很好,但我意识到它也会排除其他项目中的“Scripts”文件夹。 所以我改成了这个:

 **/My Project/Scripts/**/*.js 

它停止了工作。 我的第一直觉是项目名称中的空间应该受到指责。 所以我尝试了你做的同样的事情:

 "**/My Project/Scripts/**/*.js" '**/My Project/Scripts/**/*.js' **/My\ Project/Scripts/**/*.js 

但它都没有奏效。

然后我偶然发现了这个论坛: sonarqube-archive.15.x6.nabble.com/Project-exclusions-for-Code-Coverage-not-working-C-td5023058.html

特别是这一行提供了答案: 模块(.Net项目)不是完全限定名称的一部分。 您必须在模块(.Net项目)级别定义排除项。

这意味着我的错误是项目名称中没有空格,但包括项目名称! 我将filter更改为:

 Scripts/**/*.js 

瞧,这些文件被正确排除在外。 没有报价或逃避必要。

当然,这仍然存在另一个项目中的“Scripts”文件夹也将被排除的问题。 此处提供的信息: docs.sonarqube.org/display/SCAN/Excluding+Artifacts+from+the+Analysis可能对此有用。

我使用的是web界面,而不是直接使用配置文件,但这也表明如果你有多个filter,那么逗号分隔的列表不应该包含空格(除了实际在路径中的空格),因为它们被解释得相当从字面上。