【问题标题】:What's the right way to write custom checks for SonarQube 4.5为 SonarQube 4.5 编写自定义检查的正确方法是什么
【发布时间】:2014-10-29 02:51:27
【问题描述】:

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

  1. 字节码分析
  2. 来源分析

不幸的是,我找不到提供明确解释的最新网页,并且我看到现有检查使用许多已弃用的类和方法,使用即将被放弃的“桥梁”,检查定期从代码库(例如 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 的一部分。)
  • 我还应该知道什么?

换句话说,我有点迷路了。

提前感谢您的帮助。

【问题讨论】:

  • 我倾向于认为 stackoverflow 不是解决此类问题的最佳场所,您应该在更适合此类讨论的邮件列表中询问他们。

标签: sonarqube


【解决方案1】:

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

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

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

(小注意:BaseTreeVisitor 不直接使用 SSLR,java 插件并没有从 SSLR 转移,而是从一个类,特别是 ASTNode,以便在具有特定于每种节点类型的类的 SyntaxTree 上工作, Xpath 检查的下降发生在远离非类型化 SyntaxTree 的逻辑中。

【讨论】:

  • 感谢您的回答,遗憾的是它并没有完全回答问题。我已经阅读了您所指的示例页面,不幸的是,它不是为 SonarQube 4.5 编写的,而是为 4.1 编写的。除其他外,它使用自 4.3 起已弃用的 RulesRepository,应该由 RulesDefinition 替换,但没有提供有关此修改的影响(如果有)的信息。
  • 老实说,6 月中旬的邮件列表上或多或少地询问了关于 RuleDefinition 使用的相同问题,直到现在还没有提供关于如何将检查绑定到规则的明确答案:sonarqube.15.x6.nabble.com/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多