c# - 如何排除 Sonar 路径中带空格的文件?

标签 c# .net jenkins ant sonarqube

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

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

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

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

我试过用单引号和双引号将路径括起来。 我试过使用反斜杠来转义空格。 我尝试将路径设置为 **/MyProject/Service*/* 以利用通配符(可能有风险),但这也不起作用。

有人有解决办法吗?

最佳答案

我刚遇到同样的问题。我需要在文件夹脚本中排除项目“我的项目”中的 javascript 文件。我首先尝试了这个:

**/Scripts/**/*.js

这工作得很好,但我意识到它也会排除其他项目中的“脚本”文件夹。所以我把它改成这样:

**/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 项目)级别定义排除项。

这意味着我的错误是项目名称中没有空格,而是根本不包含项目名称!我将过滤器更改为:

Scripts/**/*.js

瞧,文件被正确排除了。无需引号或转义。

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

我使用 Web 界面,而不是直接使用配置文件,但这也表明如果你有多个过滤器,逗号分隔的列表不应包含空格(路径中实际的除外),因为它们完全按字面解释。

关于c# - 如何排除 Sonar 路径中带空格的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37731763/

相关文章:

c# - 从 WCF 服务序列化 System.Type 并从 Silverlight 客户端反序列化?

c# - Auto Patcher(高效的自动更新程序)

.net - MVC3 默认模板在哪里存储用户帐户信息?

c# - 如何将子元素作为解码字符串添加到 XElement?

maven - SonarQube 未获得单元测试覆盖率

c# - 模糊匹配与阈值过滤器 C#

c# - .net session 状态已创建 session ID,但无法保存它,因为响应已被应用程序刷新

c# - C#中的Excel进程

jenkins - Jenkins 多配置作业的构建后操作

Android-Jenkins : failed to find Build Tools revision 17. 0.0 在 Jenkins 构建服务器上