Sonarqube PLSQL自定义规则,用于在SQL脚本文件中检测正确的SQL终止符分号

aej*_*jaz 7 plsql jenkins sonarqube sonarqube-scan sonar-plugin

我正在使用Jenkins和SONARQUBE PL/SQL插件进行Oracle SQL代码分析,我需要使用XPATH创建自定义规则,以便对通过Jenkins进行部署的SQL Script文件进行质量分析.

我正在尝试创建一个自定义规则,检测在任何SQL命令结束时是否缺少分号(";").SQL终止("分号")对于使用SQLPLUS部署SQL脚本非常重要.

代码示例

 insert into table_name values('wait','for','completion'); -- compliant with script 
 insert into table_name values('somename','for','good'); -- compliant with script 
 **insert into table_name values('someplace','for','game')** -- non compliant as semicolon missing
 insert into table_name values('something','for','change'); -- compliant with script 
 delete from table_name ; -- compliant with script 
 delete from table_name ; -- compliant with script 
 update table_name set name='james' where id='22';
Run Code Online (Sandbox Code Playgroud)

有一个缺少分号的插入查询,因此sonarqube应该检测到这个并且无法使jenkins构建失败或者无法进行SONAR质量测试.

请帮助创建PLSQL自定义规则,以便通过分号检测正确的SQL终止.

xpath的例子是: / COMPILATION_UNIT/ANY_DML_EXPRESSION/following-sibling :: SEMICOLON - 这样的东西

Von*_*onC 3

您可以按照指南“使用自定义规则创建插件”,使用模板项目plsql-custom-rules
这比向 XPATH 添加规则更复杂,但您将拥有更多控制权。

要创建支票,您可以创建 的子类org.sonar.plsqlopen.checks.AbstractBaseCheck
您可以使用org.sonar.check.Ruleorg.sonar.squidbridge.annotations.SqaleConstantRemediation注释来配置检查元数据(名称、描述、密钥...)。

通常您只需要重写两个方法:

  • init():订阅所需的语法规则
  • visitNode(AstNode):分析符合订阅语法规则的节点

但首先,如问题 21所示,请检查您的代码是否没有出现“无法解析文件”消息的错误。

我只需要知道像 sonarqube 分析这样的解析器来检测脚本文件中的编译错误

检查您的情况是否不是可选的分号,如“分号不需要CREATE VIEW”中所示。
查看源代码是检查像 sonarqube 分析这样的解析器如何检测脚本文件中的编译错误的好方法。