【问题标题】:How to exclude a project specific file in SonarQube如何在 SonarQube 中排除项目特定文件
【发布时间】:2018-06-27 06:03:19
【问题描述】:

我正在使用 SonarQube(撰写本文时为 6.7)来分析我的 C# 解决方案。 我现在正在努力从重复或完整分析中排除文件。

我可以排除以下文件:

<Property Name="sonar.exclusions">**/*.Designer.cs</Property>

或重复:

<Property Name="sonar.cpd.exclusions">**/*.g.cs,Tests/UITest*.cs</Property>

据我所知,排除模式是相对于项目的根目录的。

现在,如果我有以下设置:

  • 项目A
    • a.cs
    • b.cs
  • 项目B
    • a.cs
    • c.cs

我只想从项目 B 中排除文件 a.cs 而不是从项目 A 中。

a.cs 添加到排除项中会将其从两个项目中排除。

我发现这样做的唯一方法是使用绝对路径,例如:

文件:C:/Development/Solution/Src/Project_B/a.cs

这可行,但随后我收到警告说不推荐使用绝对文件路径(通过使用文件:),因此它会在某个时候被删除,因此不应使用。

我已经尝试过使用相对路径,例如:

../Project_B/a.cs

./../Project_B/a.cs

但这并没有排除任何文件。

是否有任何不推荐的方式仅从一个项目中删除文件?

【问题讨论】:

  • Src/Project_B/a.cs 怎么样
  • 由于路径是相对于项目根目录的,这也没有帮助。
  • 您找到解决方案了吗?我正在努力解决同样的问题。 :)
  • 很遗憾还没有。

标签: c# sonarqube


【解决方案1】:

查看 SonarQube 中的 Project B/a.cs。文件头会显示 SonarQube 理解的路径,例如:

在排除规范中使用该路径的全部或部分。

【讨论】:

  • 嗨,Ann 感谢您的回答,但问题是此路径与项目相关。所以我在那里看到a.cs。如果我添加这个,那么这个文件将从项目 A 和项目 B 中删除,但我只希望它从项目 B 中删除。
  • 你在SQ​​中的整个路径字符串是“a.cs”?
  • 是的。我已经重建了上面写的内容,这里是:Image 那里的路径只是/a.cs。对于 Project_A,a.cs 的路径完全相同,这就是问题所在。
【解决方案2】:

您可以直接在项目文件中使用 SonarQubeExclude MSBuild 属性来排除整个项目或单个文件。有关详细信息,请参阅 SonarQube.Integration.Targets 文件中的comments

【讨论】:

  • 感谢您的提示。这至少可以从 SonarQube 中完全排除项目特定文件:&lt;Compile Include="a.cs"&gt; &lt;SonarQubeExclude&gt;true&lt;/SonarQubeExclude&gt; &lt;/Compile&gt; 是否还有一种方法可以使用它仅从重复检查中排除文件?没有找到任何提示。
  • 我看到根据github.com/SonarSource/sonar-.net-documentation/blob/master/doc/… 也可以设置项目的具体设置。我尝试使用&lt;ItemGroup&gt; &lt;SonarQubeSetting Include="sonar.cpd.exclusions"&gt; &lt;Value&gt;a.cs&lt;/Value&gt; &lt;/SonarQubeSetting&gt; &lt;/ItemGroup&gt;,但这并没有从重复文件中排除该文件。虽然如果我使用sonar.exclusions,该文件将被排除在所有分析之外。
猜你喜欢
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 2018-01-04
  • 2011-07-08
  • 2019-03-16
  • 1970-01-01
相关资源
最近更新 更多