Sonarqube 忽略排除项
Sonar cube ignores exclusions
我有一个 C# 项目,其中还包括不应由 SonarCube 调查的 som 测试用户界面,(SonarCube 由 teamcity 调用)
我希望 SonarCube 忽略以下文件夹和所有内容
- .\src\ExamplePredictionCascadingResourceProvider(应被本地规则忽略)
- .\src\TestPredictionCascadingGUI(应被本地规则忽略)
- .\src\VM.PredictionCascade.Tests(应该被全局规则忽略**/Tests/.cs)
我已经在 sonar.exclusions 的本地声纳立方体项目的用户界面中添加了第一个文件夹,但是该文件夹中的源代码仍然存在问题。
在 SonarQubeAnalysisConfig.xml 中,该值似乎最终没问题
- <属性 Name="sonar.exclusions">**/ExamplePredictionCascadingResourceProvider/**/*属性>
除了项目排除之外还有以下全局排除
- <属性 姓名="sonar.global.exclusions">**/bin/x64/,/bin/x86/, /packages/,/obj/x64/,/obj/x86/,/src//bin/,/src//obj/,/AssemblyInfoAppend.cs,**/AssemblyInfo.cs属性>
- <属性 名称="sonar.global.test.exclusions">**/测试/.cs,**/测试/.cs属性>
对于其他项目,'sonar.global.test.exclusions' 的相同值似乎有效
所以我很纳闷,也不知道从哪里开始调查为什么会包含这些文件...难道是因为我在创建项目后更改了'exclusions',然后是sonarcube还记得之前的几期吗?
关于问题是什么或要调查什么的任何提示?
通过查看 teamcity 构建日志,我才意识到 SonarQube 应用这些排除规则假设基目录是正在分析的项目的目录,这意味着没有明确的方法来排除其中的所有文件ExamplePredictionCascadingResourceProvider 文件夹。换句话说,当 SonarQube 开始为 ExamplePredictionCascadingResourceProvider 项目分析文件时,它将基本目录设置为此文件夹,因此它无法匹配任何具有给定模式的文件以排除。
作为解决方案,您应该使用与 ExamplePredictionCascadingResourceProvider 文件夹中的所有文件名匹配的模式。假设该文件夹中的所有文件都以 "Example" 开头,将 "Example*.cs" 添加到排除规则就足够了。
在适用于所有项目的 SonarQube 服务器上设置排除规则的一个很好的用例是“**/AssemblyInfo.cs”,因为 AssemblyInfo.cs 下的所有 c# 项目都存在项目文件夹中的 Properties 子文件夹。
如果您想在项目中本地指定排除规则而不是在 SonarQube 服务器上(这对您的特定场景更有意义,因为此规则是特定于项目的)。
我有一个 C# 项目,其中还包括不应由 SonarCube 调查的 som 测试用户界面,(SonarCube 由 teamcity 调用)
我希望 SonarCube 忽略以下文件夹和所有内容
- .\src\ExamplePredictionCascadingResourceProvider(应被本地规则忽略)
- .\src\TestPredictionCascadingGUI(应被本地规则忽略)
- .\src\VM.PredictionCascade.Tests(应该被全局规则忽略**/Tests/.cs)
我已经在 sonar.exclusions 的本地声纳立方体项目的用户界面中添加了第一个文件夹,但是该文件夹中的源代码仍然存在问题。
在 SonarQubeAnalysisConfig.xml 中,该值似乎最终没问题
- <属性 Name="sonar.exclusions">**/ExamplePredictionCascadingResourceProvider/**/*属性>
除了项目排除之外还有以下全局排除
- <属性 姓名="sonar.global.exclusions">**/bin/x64/,/bin/x86/, /packages/,/obj/x64/,/obj/x86/,/src//bin/,/src//obj/,/AssemblyInfoAppend.cs,**/AssemblyInfo.cs属性>
- <属性 名称="sonar.global.test.exclusions">**/测试/.cs,**/测试/.cs属性>
对于其他项目,'sonar.global.test.exclusions' 的相同值似乎有效
所以我很纳闷,也不知道从哪里开始调查为什么会包含这些文件...难道是因为我在创建项目后更改了'exclusions',然后是sonarcube还记得之前的几期吗?
关于问题是什么或要调查什么的任何提示?
通过查看 teamcity 构建日志,我才意识到 SonarQube 应用这些排除规则假设基目录是正在分析的项目的目录,这意味着没有明确的方法来排除其中的所有文件ExamplePredictionCascadingResourceProvider 文件夹。换句话说,当 SonarQube 开始为 ExamplePredictionCascadingResourceProvider 项目分析文件时,它将基本目录设置为此文件夹,因此它无法匹配任何具有给定模式的文件以排除。
作为解决方案,您应该使用与 ExamplePredictionCascadingResourceProvider 文件夹中的所有文件名匹配的模式。假设该文件夹中的所有文件都以 "Example" 开头,将 "Example*.cs" 添加到排除规则就足够了。
在适用于所有项目的 SonarQube 服务器上设置排除规则的一个很好的用例是“**/AssemblyInfo.cs”,因为 AssemblyInfo.cs 下的所有 c# 项目都存在项目文件夹中的 Properties 子文件夹。
如果您想在项目中本地指定排除规则而不是在 SonarQube 服务器上(这对您的特定场景更有意义,因为此规则是特定于项目的)。