目前编写SonarQube 4.5检查的最佳方法是:
不幸的是,我找不到一个提供明确解释的最新网页,我发现现有的支票使用了许多弃用的类和方法,使用“桥梁”即将被放弃,支票定期从代码库(例如XPath规则)。
我想确保我即将写的支票写得很好且耐用。
所以......
BytecodeVisitor
来分析字节码吗?BaseTreeVisitor
来分析源代码吗?org.sonar.api.rules.RuleRepository
org.sonar.api.resources.Java
org.sonar.api.rules.AnnotationRuleParser
BaseTreeVisitor
正在使用SSLR,如果我没有错误,SonarQube正在远离SSLR / AbstractXPathCheck
是sslr squid bridge的一部分。)换句话说,我有点失落。
提前感谢您的帮助。
答案 0 :(得分:0)
首先感谢您的反馈, 事实上你的问题中有很多问题(原文如此):
截至今天,为Java编写自定义检查的方法是使用BaseTreeVisitor
。所有其他方法现在都已被弃用,我们正在努力将它们删除(但它并不总是直截了当,因为其中一些方法需要删除完整的语义分析)。此api目前缺少的是访问语义分析以能够请求从字节码读取的类型信息。
您可以查看此项目:https://github.com/SonarSource/sonar-examples/tree/master/plugins/java-custom-rules
对于所有其他问题,请在邮件列表中询问。
(虽然小注意事项:BaseTreeVisitor不直接使用SSLR,但java插件并没有远离SSLR而是从一个类,特别是ASTNode
,以便在SyntaxTree上使用特定于每种类型的类节点,Xpath检查的丢弃发生在远离非类型语法树的逻辑中。)