Sonarqube 5.4 C#的自定义规则

时间:2016-05-09 08:59:25

标签: c# sonarqube fxcop stylecop

我正在使用SonarQube 5.4来分析我自己的C#代码,分析按照我的预期进行。 现在我已经编写了一些自定义规则,一个使用StyleCop,另一个使用FxCop运行我的代码,但我没有找到如何在SonarQube中导入theese自定义规则。 我强调我使用SonarQube 5.4和C#插件5.1。在我的安装中,文件夹“rules”不存在。相反,我可以找到:

sonar-fxcop-library-1.3.jar in /opt/sonarqube-5.4/data/web/deploy/plugins/csharp/META-INF/lib 和 sonar-stylecop-plugin-1.1 in /opt/sonarqube-5.4/extensions/plugins。

任何人都可以帮我在SonarQube安装中导入自定义规则吗?

3 个答案:

答案 0 :(得分:3)

FxCop集成:通过指定自定义FxCop规则的Template for custom FxCop rules来扩展SonarQube中的CheckId fxcop:CustomRuleTemplate )。 [编辑] FxCop规则现在由sonar-fxcop插件覆盖。

StyleCop集成deprecated,因为StyleCop不依赖于Roslyn。

答案 1 :(得分:2)

我正在使用相同的分析工具,用C#for Sonar编写自己的自定义规则。从广义上讲,我们必须遵循三个步骤来实现我们的目标:

1. 使用Roslyn编写实时代码分析器::我使用Roslyn分析器工具编写用于分析目的的自定义规则。确实有一些很好的教程,介绍如何开始编写规则。我曾经开始的一个是 Use Roslyn to Write a Live Code Analyzer for Your API。构建此项目将在项目的bin文件夹中生成一个.nupkg文件。
假设建立专案产生了一个套件 your_project_name.version ,例如AnalyzerExample.1.0.6971.18074,类似的东西。

2. 使用SonarQube Roslyn SDK 生成用于包装Roslyn分析器的自定义SonarQube插件。在SDK版本和SonarQube之间必须遵循一些兼容性矩阵。我们可以克隆存储库,也可以下载分析工具。运行此工具将生成一个jar文件。

RoslynSonarQubePluginGenerator.exe /a:analyzerexample 

运行该工具将在当前工作目录中生成一些xml文件。我们可以在xml文件中配置自定义规则属性,然后通过以下命令生成jar文件:

RoslynSonarQubePluginGenerator.exe /a:analyzerexample /rules:rules.xml

在使用适当的参数运行此生成器之后,我们将得到一个jar文件,作为analyzerexample-plugin-1.0.6971.18074。这是我们正在寻找的必需插件。它将包含我们在步骤1中编写的所有规则。

3. 使用生成的jar文件作为插件:将在步骤1中生成的插件(jar文件)复制到SonarQube的扩展文件夹中。重新启动Sonar服务器。登录到服务器,然后您可以在“质量配置文件”部分的最新规则列表中看到添加的规则。通过将该规则添加到某些质量配置文件中,点击激活该规则。

答案 2 :(得分:0)

好的,我在http://sonarqube-archive.15.x6.nabble.com/FxCop-Custom-Rules-option-unavailable-on-sonarqube-5-0-td5032660.html找到了 一些信息。 总结在Rules文件夹中标识规则所需的唯一字段是CheckId。其他领域只是信息。 我使用CheckId添加了规则,但在我的项目中使用sonarScanner进行MSBuild,我在SonarQube web UI中没有看到有关它的问题。就像我的项目组装没有被处理一样。 有人帮忙吗?