gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:16:00 25 4
gpt4 key购买 nike

SonarQube 版本:4.5

我基于 sonar-xoo-plugin 创建了一个 Java 项目。然后我添加了一个简单的规则,该规则继承 BaseTreeVisitor 并在 visitMethod(MethodTree)始终引发问题。我使用 @Rule(key = "x1") 注释了该类,并在存储库中创建新规则时在类 MyRulesDefinition 中使用了相同的键。

我构建了项目,将 jar 文件放入插件文件夹中并启动了 Sonar 服务器。插件已加载且规则存在。我针对选定的质量配置文件激活了它并运行了分析,但规则没有发现任何问题。

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

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

最佳答案

Do any other examples exist for SonarQube plugins using the latest API?

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

  1. 创建一个实现 RulesDefinition 的类 -> 它是一个 ServerExtension,其唯一目的是让您的自定义规则出现在 SonarQube 的 UI 中(如果您明确提供了定义)以编程方式,或在 XML 文件中,或通过注释)。此扩展在服务器启动时加载。
  2. 创建一个实现 BatchExtensionJavaFileScannersFactory 的类 -> 其目的是通过返回规则实例,使所有自定义 Java 规则在批量分析期间可用。此扩展在分析期间加载。
  3. 创建一个扩展 SonarPlugin 的类,该类返回在上面第 1 点和第 2 点中创建的扩展。

您的自定义规则将在 UI 中和分析过程中均可用。如果您不执行 1. 您将无法激活/配置它们。如果您忘记 2,它们将是可激活/可配置的,但永远不会被执行(也不会引发任何错误)

这与 RulesRepository 略有不同:扩展 RulesRepositoryCustomRulesRepository 可以直接实现 BatchExtension 和 JavaFilesScanner

关于java - 如何在 SonarQube 4.5 插件中注册自定义规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26609632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com