现在很多项目里使用Sonarqube管理代码质量,团队一般也会有硬性的指标。如果有些代码虽然不合规范,但是在实际环境中不得不这样写,那么我们为了降低issue的数量,可以让Sonar跳过这一段的检测。
方法1:NOSONAR 注释
加在要忽略的代码的后面,可指定跳过这一行代码:
fos = new FileOutputStream(new File("abc.txt"));// NOSONAR
方法2:用 @SuppressWarnings 注解(Java特性)
@SuppressWarnings("findsecbugs:PATH_TRAVERSAL_IN")
public static void main(String args[]) {
......
@SuppressWarnings("squid:S2755")
public static void main(String args[]) {
......
注解中的参数是Sonarqube的对应的rule的id,可使Sonar对这段代码忽略这条rule。rule的id可在 Sonar UI 上查看
点击一个issue的详情,右上角的这个就是
如果要忽略多条rule, 可传多个参数:
@SuppressWarnings({"squid:S2755","findsecbugs:XXE_DOCUMENT"})
方法3:用sonar.exclusions配置项,忽略整个文件
mvn $MAVEN_CLI_OPTS sonar:sonar
-Dsonar.exclusions=src/main/generated/**/*,target/generated-sources/**/*