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

什么';这是为SonarQube 4.5编写自定义检查的正确方法,sonarqube,Sonarqube,目前编写SonarQube 4.5检查的最佳方法是: 字节码分析 来源分析 不幸的是,我找不到提供清晰解释的最新网页,我看到现有检查使用了许多不推荐的类和方法,使用了即将放弃的“桥”,检查定期从代码库中删除(例如XPath规则) 我想确保我将要开的支票写得很好,而且经久耐用 所以 我应该使用BytecodeVisitor分析字节码吗 我应该使用BaseTreeVisitor分析源代码吗 org.sonar.api.rules.RuleRepository的替代品是什么 什么是org.sonar

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

  • 字节码分析
  • 来源分析
  • 不幸的是,我找不到提供清晰解释的最新网页,我看到现有检查使用了许多不推荐的类和方法,使用了即将放弃的“桥”,检查定期从代码库中删除(例如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桥的一部分。)
    • 我还应该知道什么
    换句话说,我有点迷路了


    提前感谢您的帮助。

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

    到目前为止,为Java编写自定义检查的方法是使用
    BaseTreeVisitor
    。所有其他方法现在都不推荐了,我们正在努力删除它们(但这并不总是简单的,因为其中一些方法需要删除完整的语义分析)。该api目前缺少的是对语义分析的访问,以便能够请求从字节码读取的类型信息。 您可以查看此项目:

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


    (小提示:BaseTreeVisitor不直接使用SSLR,java插件不是从SSLR移开,而是从一个类移开,特别是
    ASTNode
    ,为了使用特定于每种节点类型的类处理SyntaxTree,Xpath检查的删除发生在从非类型SyntaxTree移开的逻辑中).

    我倾向于认为stackoverflow不是回答此类问题的最佳场所,您应该在邮件列表中询问他们,这将更适合此类讨论。感谢您的回答,不幸的是,它没有完全回答问题。我已经阅读了您提到的示例页面,不幸的是,它不是为SonarQube 4.5编写的,而是为4.1编写的。除此之外,它还使用了
    规则定义
    ,从4.3开始就被弃用,应该被
    规则定义
    所取代,但没有提供关于这一修改的影响(如果有)的信息。老实说,在6月中旬的邮件列表中或多或少地询问了关于规则定义使用的相同问题,到目前为止,关于如何将支票与规则绑定,还没有给出明确的答案: