You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SonarQube分析中忽略Java Spring Boot应用的@Data注解?

解决@Data注解拉低SonarQube代码覆盖率的方案

1. 全局配置批量排除模型类

直接在SonarQube后台操作,适合一次性排除整个模型类目录:

  • 打开项目的设置 -> General Settings -> Analysis Scope
  • 在Files to exclude(要排除的文件)里添加路径规则,比如:
    **/model/*.java 或者精准到包 com/yourcompany/project/model/**/*.java
  • 保存后重新分析,整个目录的类就不会计入覆盖率统计了

2. 代码级注释排除单个类

如果只想排除特定的@Data类,不用动全局配置,直接在类上加Sonar专属注释:

// 告诉SonarQube跳过该类的覆盖率分析
@SuppressWarnings("sonar.coverage.exclusions")
@Data
public class Order {
    private Long id;
    private String orderNo;
    // ...其他字段
}

也可以更精准地排除生成的方法,但直接排除整个类更省心,毕竟@Data生成的getter/setter等本来就没必要测。

3. 构建工具里配置排除范围

如果不想碰Sonar后台,在Maven或Gradle里配置更灵活,适合团队统一构建规则:

Maven 配置

在pom.xml的Sonar插件里加排除规则:

<build>
    <plugins>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.9.1.2184</version>
            <configuration>
                <!-- 排除model目录下所有java文件的覆盖率统计 -->
                <sonar.coverage.exclusions>**/model/*.java</sonar.coverage.exclusions>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle 配置

在build.gradle里添加SonarQube扩展配置:

sonarqube {
    properties {
        property "sonar.coverage.exclusions", "**/model/*.java"
    }
}

4. 验证配置是否生效

不管用哪种方式,配置完后重新跑一遍Sonar分析,查看覆盖率报告,确认目标模型类已经被排除在外。如果没生效,检查路径规则的通配符是否正确——**匹配任意层级子目录,*匹配单个文件或目录。

内容的提问来源于stack exchange,提问作者mwiginton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:02:42