我正在使用 SonarQube Scanner for MSBuild 2.0 和 SonarQube 5.4。我已将 Roslyn Wintellect.Analyzers NuGet 包的 SonarQube 插件添加到 SonarQube 服务器,并将规则添加到我的 SonarQube 项目使用的质量配置文件中。在 C# 源代码中,我使用#pragma 禁用了“Wintellect003”规则(然后我尝试了内联和 GlobalSuppressions.cs 中的 SuppressMessage 属性)。该规则已在 Visual Studio 2015 和 msbuild 14 中成功禁用,但 SonarQube 不尊重我已禁用该规则的事实(对于这一行代码 - 我尚未在 SonarQube 或规则集中禁用该规则)。
我可以看到 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 服务器,但这没有帮助)。