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

Lombok、Gradle、JaCoCo与Sonar代码覆盖率过滤问题排查

解决Sonar统计Lombok生成代码覆盖率的问题

我来帮你搞定这个头疼的覆盖率问题!咱们先理清楚问题出在哪,再一步步解决:

问题根源

你已经配置了lombok.addLombokGeneratedAnnotation = true,生成的代码也带了@lombok.Generated注解,但SonarJava 5.0.1和JaCoCo 0.8.0的组合可能存在两个关键问题:

  1. 早期版本的SonarJava默认不会自动识别@lombok.Generated注解,所以依然会把这些生成的代码纳入覆盖率统计
  2. 你的JaCoCo配置里的classDirectories路径和过滤规则有问题,导致JaCoCo没有排除这些生成代码,Sonar读取JaCoCo报告时自然会算进去

分步解决方案

1. 修正JaCoCo的Class目录配置

你原来的jacocoTestReport.doFirst里的路径写错了,而且没有做过滤。改成下面的配置,确保JaCoCo只统计业务代码,排除Lombok生成的类/方法:

jacoco { 
    toolVersion = "0.8.0" 
    reportsDir = file("$buildDir/reports/jacoco") 
} 

jacocoTestReport.doFirst {
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it, exclude: [
            // 排除@Builder生成的内部Builder类
            '**/*$Builder.class',
            // 按需调整:比如排除实体类包下的所有类(如果你的实体类都用了Lombok注解)
            '**/model/**/*.class'
        ])
    })
}

task jacocoReport(type: JacocoReport){ 
    sourceSets sourceSets.main 
    executionData test, integrationTest
    // 同步classDirectories过滤规则,确保报告只包含业务代码
    classDirectories = sourceSets.main.output.asFileTree.matching {
        exclude '**/*$Builder.class'
        exclude '**/model/**/*.class'
    }
}

2. 配置SonarQube识别Lombok的Generated注解

SonarJava 5.0.1需要明确配置才能识别@lombok.Generated,在你的build.gradle里添加SonarQube的配置:

sonarqube {
    properties {
        // 告诉Sonar忽略带指定注解的生成代码
        property 'sonar.java.generatedCodeAnnotations', 'lombok.Generated'
        // 保险起见,直接排除已知的生成类
        property 'sonar.java.coverage.exclusions', '**/*$Builder.class, **/model/**/*.class'
    }
}

3. 验证Lombok注解是否正确生成

先确认lombok.config放在项目根目录或者src/main/resources下,然后反编译build/classes里的class文件,检查生成的getter、builder方法上是否真的带有@lombok.Generated注解。如果没有,可能是Lombok配置没生效,你可以尝试升级Lombok版本到1.18+(确保稳定支持addLombokGeneratedAnnotation属性)。

最后验证顺序

  1. 先执行./gradlew clean test jacocoReport,查看JaCoCo的HTML报告,确认生成的代码已经被排除
  2. 再执行Sonar扫描,检查Sonar的覆盖率报告是否不再统计这些Lombok生成的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:55:03