Sonarqube 自定义规则创建中Sonar中的Java AST遍历

Sonarqube 自定义规则创建中Sonar中的Java AST遍历,sonarqube,Sonarqube,我正在尝试使用Sonar的JavaASTAPI在Sonar中编写一个新的自定义Java规则。但我找不到任何用于编写新规则的全面api文档 我在中找到了一个示例,并实现了它,并成功地将给定的自定义规则集成到Sonar中。但由于缺乏适当的api或示例,我无法进一步编写新规则。maven构建插件时出现未知错误 例如,有人能帮我创建一个简单的规则,比如在代码中不使用System.out.print语句吗?任何指向代码示例的指针都将非常感谢。作为sonarqube java插件的维护者,我同意应该改进自定

我正在尝试使用Sonar的JavaASTAPI在Sonar中编写一个新的自定义Java规则。但我找不到任何用于编写新规则的全面api文档

我在中找到了一个示例,并实现了它,并成功地将给定的自定义规则集成到Sonar中。但由于缺乏适当的api或示例,我无法进一步编写新规则。maven构建插件时出现未知错误


例如,有人能帮我创建一个简单的规则,比如在代码中不使用System.out.print语句吗?任何指向代码示例的指针都将非常感谢。

作为sonarqube java插件的维护者,我同意应该改进自定义规则编写的文档(我们的待办事项列表中有这一点),对于api使用的代码示例,您可以查看


至于规则检测
System.out.print
语句,我建议依赖语义API(检查符号和类型)来实现自定义规则,而不是仅仅依赖语法

您好@benzonica,我试图从您上面提供的代码基链接中制定避免System.out的自定义规则。只是更改了规则键,并保持了与前面集成时相同的结构。当我试图构建与以前相同的项目来创建自定义插件jar:--Tests in error:avoidsysstatementchecktest.detected:13时,我遇到了这样一个错误╗ 非法声明至少需要一个问题。。。测试运行:8,失败:0,错误:1,跳过:0我尝试过的其他两个规则也会发生此错误。我遗漏了什么?这是一个失败的单元测试。只需阅读单元测试中的错误消息并修复它。这里它失败了,因为在test.Yup.下的源文件中没有出现任何问题。。解决了。。谢谢@benzonico。但是,我现在必须执行以下规则:1。在Java代码(包括常量)中标识硬编码的URL和端口号,理想情况下,这些URL和端口号应该外部化到属性文件2中。用于确保在catch块中以错误级别记录异常的规则。3.识别任何记录信用卡或SSN号码的日志记录语句。任何关于这些的建议或帮助都将不胜感激。