如何在SonarQube中排除项目特定文件

时间:2018-01-18 08:20:10

标签: c# sonarqube

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

我可以排除以下文件:

else if(isset($_POST['other_msg_subj']) && 
    !preg_match ('%^[A-Za-z\.\' \-]{2,30}$%', $_POST['other_msg_subj'])){

或重复如:

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

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

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

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

我只想从项目B中排除文件<Property Name="sonar.cpd.exclusions">**/*.g.cs,Tests/UITest*.cs</Property> ,而不是从项目A中排除。

在排除项中添加a.cs会从两个项目中排除它。

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

  

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

这有效,但后来我得到一个警告,即不推荐使用绝对文件路径(通过使用文件:),所以这将被删除,因此不应该使用。

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

  

../ Project_B / a.cs

     

     

./../ Project_B / a.cs

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

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

2 个答案:

答案 0 :(得分:0)

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

enter image description here

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

答案 1 :(得分:0)

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