我在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服務器,但這沒有幫助)。
謝謝,Mike,將C#插件升級到5.2 RC1確實解決了我的問題。 –
沒問題。樂意效勞。如果您不介意,請將此答案標記爲已接受。 –