SonarQube版本:4.5
我基于sonar-xoo-plugin创建了一个Java项目。
然后我添加了一个简单的规则,继承BaseTreeVisitor
,始终在visitMethod(MethodTree)
中引发问题。我使用@Rule(key = "x1")
对类进行了注释,并在存储库中创建新规则时在类MyRulesDefinition
中使用了相同的键。
我构建了项目,将jar文件放入plugins文件夹并启动了声纳服务器。插件已加载,规则已存在。我为选定的质量配置文件激活了它并进行了分析,但是规则没有发现任何问题。
我做错了什么? MyRulesDefinition
中的规则模板如何映射到规则的逻辑?
是否存在使用最新API的SonarQube插件的任何其他示例?
答案 0 :(得分:3)
是否存在使用最新API的SonarQube插件的任何其他示例?
不,我今天遇到了完全相同的问题而无法找到任何问题。但这是解决方案:
RulesDefinition
- >的类它是ServerExtension
,其唯一目的是让您的自定义规则显示在SonarQube的UI中,如果您已明确提供定义(以编程方式,或在XML文件中或通过注释)。此扩展在服务器启动时加载。BatchExtension
和JavaFileScannersFactory
- >的类其目的是通过返回规则实例,在批处理分析期间使所有自定义Java规则可用。在分析期间加载此扩展名。您的自定义规则将在UI和分析期间可用。如果你不做,1。你将无法激活/配置它们。如果您忘记2,它们将是可激活/可配置的,但永远不会执行(并且不会出现任何错误)
与RulesRepository
略有不同:您的CustomRulesRepository
扩展RulesRepository
可以直接实现BatchExtension和JavaFilesScanner
。
答案 1 :(得分:3)
我在github上展示了示例示例(基于gradle):https://github.com/misak69/misak69-sonar-custom。所有重要事实均基于@kraal之前的回答。随意查找https://github.com/misak69/misak69-sonar-custom/blob/master/README.md
答案 2 :(得分:0)
您可以查看Java Custom Rules example plugin。这个应该给你所需的所有答案。