Vip*_*ary 11 c# continuous-integration visual-studio sonarqube visual-studio-2015
环境:我们在Visual Studio 2015中构建C#代码并使用Visual Studio 2015中提供的默认规则集生成CodeAnalysis报告.
问题陈述:在与我们的持续集成环境Jenkins集成的SonarQube中运行相同的代码时,我们得到了不同的代码分析报告,所以我们想导入在SonarQube 5.6或更高版本中使用的Visual Studio 2015的默认规则集(如果有解决方案,我准备升级Sonar).但问题是SonarQube无法识别以CS开头的规则集,如...
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp">
<Rule Id="AD0001" Action="Error" />
<Rule Id="CS0028" Action="Error" />
<Rule Id="CS0078" Action="Error" />
<Rule Id="CS0105" Action="Error" />
<Rule Id="CS0108" Action="Error" />
<Rule Id="CS0109" Action="Error" />
Run Code Online (Sandbox Code Playgroud)
我已经安装了以下插件:
简短的回答:没有支持的方法可以做到这一点。但你可以尝试一些破解来解决这个问题。
长答案
您需要解决多个问题:
CoreCompile然后通过参数将其传递给msbuild 中的任务ruleset。因此,即使您创建了自己的参数,也会将其从参数中删除并更改为声纳参数。CS*问题都将被忽略。目前我认为这些问题没有一个简单的解决方案。一般建议是创建 SQ 插件,它定义所有CS*规则。将这些规则放入规则集文件中(可能在开始阶段和构建阶段之间),解析输出 json 文件并将结果发送到服务器。这确实可行,但这是一项相当艰巨的任务,而且有很多地方可能会出现问题。
另一种方法是查看SonarQube Roslyn SDK。该 SDK 可让您从 Roslyn nuget 分析器创建 SonarQube 插件。如果您创建这样的插件,您将看到它嵌入了 2-3 个 XML 文件。这些文件描述了插件的规则。为了支持你的情况,我会:
CS*规则。掌握所有CS*规则的列表可能并不容易,但这可能是一个好的开始。