为SonarQube 4.5编写自定义检查的正确方法是什么

时间:2014-10-28 11:06:54

标签: sonarqube

目前编写SonarQube 4.5检查的最佳方法是:

  1. 字节码分析
  2. 来源分析
  3. 不幸的是,我找不到一个提供明确解释的最新网页,我发现现有的支票使用了许多弃用的类和方法,使用“桥梁”即将被放弃,支票定期从代码库(例如XPath规则)。

    我想确保我即将写的支票写得很好且耐用。

    所以......

    • 我应该使用BytecodeVisitor来分析字节码吗?
    • 我应该使用BaseTreeVisitor来分析源代码吗?
    • org.sonar.api.rules.RuleRepository
    • 的替代品是什么?
    • org.sonar.api.resources.Java
    • 的替代品是什么?
    • org.sonar.api.rules.AnnotationRuleParser
    • 的替代品是什么?
    • 如何编写类似规则的XPath(BaseTreeVisitor正在使用SSLR,如果我没有错误,SonarQube正在远离SSLR / AbstractXPathCheck是sslr squid bridge的一部分。)
    • 我还应该知道什么?

    换句话说,我有点失落。

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先感谢您的反馈, 事实上你的问题中有很多问题(原文如此):

截至今天,为Java编写自定义检查的方法是使用BaseTreeVisitor。所有其他方法现在都已被弃用,我们正在努力将它们删除(但它并不总是直截了当,因为其中一些方法需要删除完整的语义分析)。此api目前缺少的是访问语义分析以能够请求从字节码读取的类型信息。 您可以查看此项目:https://github.com/SonarSource/sonar-examples/tree/master/plugins/java-custom-rules

对于所有其他问题,请在邮件列表中询问。

(虽然小注意事项:BaseTreeVisitor不直接使用SSLR,但java插件并没有远离SSLR而是从一个类,特别是ASTNode,以便在SyntaxTree上使用特定于每种类型的类节点,Xpath检查的丢弃发生在远离非类型语法树的逻辑中。)