5

我正在为 SonarQube 创建一个新插件,它允许开发人员对 ESQL 代码执行静态代码分析。

使用 Maven,我可以构建一个插件的外壳,它会生成 JAR 文件,我可以将其放置在正确的文件夹中,以便将其添加到 SonarQube。

下一个阶段是为规则编写 Java 类,但是我不确定这些规则的外观和位置。我正在使用以下 GIT 存储库中的示例:https ://github.com/SonarSource/sonar-examples/tree/master/plugins/sonar-reference-plugin

我是否只是创建一个包含一些类的新包?我如何真正地规则?

4

1 回答 1

3

如果要为 ESQL 语言编写规则引擎,这意味着您必须首先为该语言编写解析器。只有在您完成此阶段之后,您才会基于该解析器创建一个规则引擎(使用通过 AST 导航并在特定情况下产生问题的访问者类)。

你可以看看我们是如何实现 Javascript 插件的(见 1.3 版本的代码):

  • “javascript-squid”模块是编写解析器的地方
  • “javascript-checks”模块是编写规则引擎(基于解析器)的地方
  • “sonar-javascript-plugin”模块是实际的插件,它嵌入了解析器和规则引擎,并在它们周围提供了所有必需的粘合剂。
于 2013-07-31T07:12:32.003 回答