首页 文章

如何在SonarQube 4.5的插件中注册自定义规则?

提问于
浏览
1

SonarQube version: 4.5

我创建了一个基于sonar-xoo-plugin的Java项目 . 然后我添加了一个简单的规则,它在 visitMethod(MethodTree) 中继承 BaseTreeVisitoralways raises an issue . 我在 @Rule(key = "x1") 中使用 @Rule(key = "x1") 注释了该类,并在存储库中创建新规则时在类 MyRulesDefinition 中使用了相同的键 .

我构建了项目,将jar文件放入plugins文件夹并启动了声纳服务器 . 插件已加载,规则已存在 . 我为选定的质量配置文件激活它并运行分析但是 no issues were found by the rule.

我究竟做错了什么? MyRulesDefinition 中的规则模板如何映射到规则的逻辑?

是否存在使用最新API的SonarQube插件的任何其他示例?

3 回答

  • 3

    使用最新API的SonarQube插件是否存在任何其他示例?

    不,我今天遇到了完全相同的问题,找不到任何问题 . 但这是解决方案:

    • 创建一个实现 RulesDefinition 的类 - >它是 ServerExtension ,其唯一目的是使您的自定义规则显示在SonarQube 's UI if you' ve中明确提供定义(以编程方式,或在XML文件中,或通过注释) . 此扩展在服务器启动时加载 .

    • 创建一个实现 BatchExtensionJavaFileScannersFactory 的类 - >其目的是通过返回规则实例在批处理分析期间使所有自定义Java规则可用 . 在分析期间加载此扩展 .

    • 创建一个扩展SonarPlugin的类,该类返回在上面的第1点和第2点中创建的扩展 .

    然后,您的自定义规则将在UI和分析期间可用 . 如果您不这样做,您将无法激活/配置它们 . 如果您忘记2,它们将是可激活/可配置的,但永远不会被执行(并且不会出现任何错误)

    RulesRepository 略有不同:您的 CustomRulesRepository 扩展 RulesRepository 可以直接实现BatchExtension和 JavaFilesScanner .

  • 3

    我在github上公开了示例示例(基于gradle):https://github.com/misak69/misak69-sonar-custom . 所有重要事实均基于@kraal之前的回答 . 随意寻找https://github.com/misak69/misak69-sonar-custom/blob/master/README.md

  • 0

    你可以看一下Java Custom Rules example plugin . 这个应该给你所需的所有答案 .

相关问题