SonarQube检测SQL DML重复值,无需PL/SQL如何忽略该错误?
如何让SonarQube忽略重复字面量的错误(无需改用PL/SQL)
问题场景
你使用的SQL插入语句如下:
INSERT INTO lookup_tables.view_da_status_lookup(status_id, object_type, status_name, status_type, ui_dropdown_flag, last_updt_ts) VALUES (1,'View','Validation success','Maker Validation',true,CURRENT_TIMESTAMP), (2,'View','Validation Failed','Maker Validation',true,CURRENT_TIMESTAMP), (3,'View','Approved','Checker Validation',true,CURRENT_TIMESTAMP);
其中'Maker Validation'重复出现,SonarQube触发了以下规则错误:
Define a constant instead of duplicating this literal 1 times.
但你无需改用PL/SQL结构,需要忽略该错误。
解决方案
单行代码忽略:在触发错误的代码行添加SonarQube专属注释,直接跳过该行的规则检查。可以用通用的
-- NOSONAR,或者指定具体规则ID(该规则通常为S1192):
修改后的示例代码:INSERT INTO lookup_tables.view_da_status_lookup(status_id, object_type, status_name, status_type, ui_dropdown_flag, last_updt_ts) VALUES (1,'View','Validation success','Maker Validation',true,CURRENT_TIMESTAMP), (2,'View','Validation Failed','Maker Validation',true,CURRENT_TIMESTAMP), -- NOSONAR (3,'View','Approved','Checker Validation',true,CURRENT_TIMESTAMP);全局禁用规则:如果项目中这类场景较多,可直接在SonarQube的项目配置里,找到对应的“重复字面量”规则(ID多为
S1192),将其设置为禁用状态,整个项目就不会再触发该规则检查。局部排除规则:针对单个文件或代码块排除规则检查,在SonarQube项目配置中,指定该SQL文件不应用
S1192规则即可。
内容的提问来源于stack exchange,提问作者djgcp
相关产品推荐
相关产品推荐

