2016-04-27 82 views
3

我在SonarQube 5.4中使用了MSBuild 2.0的SonarQube掃描儀。我已經爲Roslyn Wintellect.Analyzers NuGet軟件包添加了SonarQube插件到SonarQube服務器,並將規則添加到我的SonarQube項目使用的質量配置文件中。在C#源代碼中,我已經使用#pragma禁用了「Wintellect003」規則(然後我嘗試了SuppressMessage屬性內嵌然後在GlobalSuppressions.cs中)。該規則在Visual Studio 2015和msbuild 14中被成功禁用,但SonarQube不尊重我禁用了規則的事實(對於這一行代碼 - 我沒有禁用SonarQube或規則集中的規則)。SonarQube忽略isSuppressedInSource?

我可以看到,MsBuild.SonarQube.Runner.exe正在識別抑制,因爲在「結束」階段它生成RoslynCA.json文件發送給SonarQube,它包括以下部分: -

"ruleId": "Wintellect003", 
"kind": "warning", 
"locations": [ 
    { 
    "analysisTarget": [ 
     { 
     "uri": "file:\/\/\/C:\/CS5Tests/Mycode.cs", 
     "region": { 
      "startLine": 920, 
      "startColumn": 17, 
      "endLine": 923, 
      "endColumn": 118 
     } 
     } 
    ] 
    } 
], 
"shortMessage": "'if' statements must have braces", 
"fullMessage": "If and else statements must use braces even for single line results", 
"isSuppressedInSource": true, 

正如你可以看到它說「isSuppressedInSource」是真的。不幸的是SonarQube不尊重這個設置。有任何想法嗎? (我試過停止SonarQube服務器,刪除data \ es文件夾來清除緩存並重新啓動SonarQube服務器,但這沒有幫助)。

回答

1

的C#5.2的插件增加了支持這一點:

https://groups.google.com/d/msg/sonarqube/0gghnIQf3XU/aEMSwMkvBAAJ

我們希望釋放SonarQube C#插件版本5.2。

有什麼新內容?

發行抑制通過[SuppressMessage現在支持

所有的FxCop問題都是進口的SonarQube,甚至場可能不會被映射回一個特定的文件

再添6條新的規則 這對那些發佈關閉了您在Visual Studio和SonarQube中看到的問題之間的差距。

+0

謝謝,Mike,將C#插件升級到5.2 RC1確實解決了我的問題。 –

+0

沒問題。樂意效勞。如果您不介意,請將此答案標記爲已接受。 –