c# – 将Visual Studio 2015规则集导出/导入SonarQube

环境:我们正在Visual Studio 2015中构建C#代码,并使用Visual Studio 2015中提供的认规则集生成CodeAnalysis报告.
问题陈述:在将SonarQube与我们的持续集成环境Jenkins集成在一起的同时,我们正在获得不同的代码分析报告,所以我们要导入Visual Studio 2015的认规则集,以在SonarQube 5.6或更高版本中使用(我准备好升级声纳如果有解决方案).但是问题是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" />

我已经安装了以下插件

> C#代码分析器
> C#的CodeCracker

解决方法

简短的答案:没有支持这样做的方法.但是你可以尝试一下来解决这个问题.

长答案

您需要解决多个问题:

>您可能用于将分析结果推送到SonarQube服务器的MsBuild的SonarQube扫描仪正在从SQ服务器中拉下活动规则.然后,它通过ruleset参数传递到msbuild中的CoreCompile任务.所以即使你创建了自己的,那将被删除参数,并改为声纳一个.
>结束步骤将问题推送到SQ服务器,但SQ服务器将忽略不知道的任何规则ID.所以在你的情况下,所有的CS *问题将被忽略.

目前我不认为这些问题有一个简单的解决方案.一般的建议是创建你的SQ插件,它定义所有的CS *规则.将这些规则纳入规则集文件(可能在begin和build阶段之间),解析输出json文件并将结果发送到服务器.这可以工作,但这是一个很大的任务,有很多地方可以去干草.

另一种方法是看看SonarQube Roslyn SDK.这个SDK让我们从Roslyn nuget分析仪中创建一个SonarQube插件.如果你创建了这样一个插件,你会看到它嵌入了2-3个XML文件.这些文件描述了插件的规则.为了支持你的情况我会:

>创建一个具有一个规则的Roslyn分析器包. (其中没有报告任何问题.)
>更改嵌入文件以定义CS *规则.获得所有CS *规则的清单可能不是那么容易,但this可能是一个好的开始.>将SQ插件部署到SQ服务器,并希望它可以正常工作.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...