如何在SonarQube代码检查中忽略指定Java类文件?
Sonar扫描忽略指定Java类的实现方案
共有4种常用实现方式,可根据实际场景选择:
1. 类级别注解屏蔽
直接在Java类上添加注解即可,无需修改项目或Sonar服务端配置:
- 仅屏蔽重复代码块规则:添加
@SuppressWarnings("common-java:DuplicatedBlocks"),其中common-java:DuplicatedBlocks是Sonar内置的重复代码块规则key - 屏蔽当前类所有Sonar规则:添加
@SuppressWarnings("all")
修改后的类示例如下:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import java.io.Serializable; @SuppressWarnings("common-java:DuplicatedBlocks") @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown=true) public class SnbTransactionVo implements Serializable { private static final long serialVersionUID = 7178997834378189890L; private Integer cellComputerNo; private String tradingDate; public Integer getCellComputerNo() { return cellComputerNo; } public void setCellComputerNo(Integer cellComputerNo) { this.cellComputerNo = cellComputerNo; } public String getTradingDate() { return tradingDate; } public void setTradingDate(String tradingDate) { this.tradingDate = tradingDate; } }
注:该方式默认生效,若未生效可联系Sonar管理员确认服务端是否开启了支持@SuppressWarnings注解的开关。
2. 项目配置文件全局屏蔽指定文件
在项目根目录的sonar-project.properties配置文件中添加以下配置,即可完全忽略该文件的所有Sonar扫描:
sonar.exclusions=**/SnbTransactionVo.java
- 多个文件用英文逗号分隔即可
- 支持通配符匹配,例如
**/vo/*Vo.java可忽略所有vo目录下以Vo结尾的Java类
3. 项目配置文件仅屏蔽指定文件的重复代码规则
如果不需要完全忽略该文件,仅需要屏蔽重复代码规则,可在sonar-project.properties中添加如下配置:
sonar.issue.ignore.multicriteria=duplicateBlockIgnore sonar.issue.ignore.multicriteria.duplicateBlockIgnore.ruleKey=common-java:DuplicatedBlocks sonar.issue.ignore.multicriteria.duplicateBlockIgnore.resourceKey=**/SnbTransactionVo.java
4. Sonar服务端界面配置
进入对应项目的「配置」-「分析范围」-「忽略文件」,添加要忽略的类路径即可,该方式不需要修改项目代码或本地配置。
内容的提问来源于stack exchange,提问作者Parag Kadam
相关产品推荐
相关产品推荐

