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

