【问题标题】:Sonar cube ignores exclusionsSonarqube 忽略排除项
【发布时间】:2020-02-20 17:47:05
【问题描述】:

我有一个 C# 项目,其中还包括 SonarCube 不应调查的 som 测试用户界面,(SonarCube 由 teamcity 调用)

我希望 SonarCube 忽略以下文件夹和所有内容

  • .\src\ExamplePredictionCascadingResourceProvider(应该被本地规则忽略)
  • .\src\TestPredictionCascadingGUI(应该被本地规则忽略)
  • .\src\VM.PredictionCascade.Tests(应该被全局规则忽略**/Tests/.cs)

我在 sonar.exclusions 中为本地 sonarcube 项目添加了用户界面中的第一个文件夹,但该文件夹中的源代码仍然存在问题。

在 SonarQubeAnalysisConfig.xml 中,该值似乎很好

  • **/ExamplePredictionCascadingResourceProvider/**/*

除了项目排除之外,还有以下全局排除

  • **/bin/x64/,/bin/x86/,/packages/, /obj/x64/,/obj/x86/,/src//bin/,/src/ /obj/,/AssemblyInfoAppend.cs,**/AssemblyInfo.cs
  • **/Test/.cs,**/Tests/.cs

对于其他项目,“sonar.global.test.exclusions”的相同值似乎有效

所以我很困惑,不知道从哪里开始调查为什么包含这些文件......难道是因为我在创建项目后更改了“排除项”,然后 sonarcube 记得以前的问题?

关于问题是什么或要调查什么的任何提示?

【问题讨论】:

    标签: c# sonarqube teamcity


    【解决方案1】:

    通过查看 teamcity 构建日志,我刚刚意识到 SonarQube 应用了这些排除规则,假设基本目录是正在分析的项目的目录,这意味着没有明确的方法可以排除 ExamplePredictionCascadingResourceProvider 文件夹中的所有文件.换句话说,当 SonarQube 开始分析 ExamplePredictionCascadingResourceProvider 项目的文件时,它会将基目录设置为此文件夹,因此它无法匹配任何具有给定模式的文件以排除。

    作为一种解决方案,您应该使用与 ExamplePredictionCascadingResourceProvider 文件夹中的所有文件名匹配的模式。假设该文件夹中的所有文件都以“Example”开头,那么将“Example*.cs”添加到排除规则中就足够了。

    在适用于所有项目的 SonarQube 服务器上设置排除规则的一个很好的用例是使用“**/AssemblyInfo.cs”,因为项目内 Properties 子文件夹下的所有 c# 项目都存在 AssemblyInfo.cs文件夹。

    我还建议您查看SonarQube with C# plugin with MSBuild Runner does not take exclusions 的答案,如果您想在项目中本地而不是在 SonarQube 服务器上指定排除规则(这对您的特定场景更有意义,因为此规则是项目具体)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-15
      • 2018-04-26
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2018-10-05
      • 2020-03-30
      相关资源
      最近更新 更多