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

Gradle+SpringBoot项目Lombok注解类遭Sonar报Missing Ctor问题求解决

解决Sonar 8.9中Lombok构造函数注解被Checkstyle误报的问题

问题场景

使用Gradle 6.9、SpringBoot 2.7.0的项目,Lombok依赖配置如下:

compileOnly 'org.projectlombok:lombok:1.18.22'
annotationProcessor 'org.projectlombok:lombok:1.18.22'
testCompileOnly 'org.projectlombok:lombok:1.18.22'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'     

通过Sonar 8.9做代码分析时,即便类添加了@NoArgsConstructor注解或标注@Entity的实体类,仍会触发Checkstyle的MissingCtorCheck规则,提示“Class should define a constructor”。已尝试配置sonar.java.libraries指向错误路径、开启lombok.addLombokGeneratedAnnotation = true均无效,且无法禁用该规则。

解决方案

1. 让Sonar读取编译后的class文件

Sonar需要分析编译后的二进制文件才能识别Lombok生成的构造函数,确保配置正确的二进制路径:

  • 在sonar-project.properties中添加:
sonar.java.binaries=build/classes/java/main
sonar.java.test.binaries=build/classes/java/test
  • 或者在build.gradle的Sonar配置中加入:
sonar {
    properties {
        property "sonar.java.binaries", "build/classes/java/main"
        property "sonar.java.test.binaries", "build/classes/java/test"
    }
}

2. 正确配置Sonar的Lombok依赖路径

之前配置的sonar.java.libraries路径错误,Lombok的jar不在build/resources目录下,通过Gradle自动获取正确路径:
在build.gradle中修改Sonar配置:

sonar {
    properties {
        // 获取编译用的Lombok jar路径
        def lombokJar = configurations.compileOnly.resolvedConfiguration.resolvedArtifacts.find { 
            it.moduleVersion.id.name == 'lombok' 
        }.file.absolutePath
        property "sonar.java.libraries", lombokJar
        // 测试环境也配置
        property "sonar.java.test.libraries", lombokJar
    }
}

3. 调整Checkstyle规则,忽略特定注解的类

既然已经开启lombok.addLombokGeneratedAnnotation = true,可以让Checkstyle忽略带有@Generated或@Entity注解的类的构造函数检查:

  • 如果是通过Sonar后台配置规则:找到MissingCtorCheck规则,添加参数ignoreAnnotation,值设为lombok.Generated,javax.persistence.Entity
  • 如果项目有自定义的checkstyle.xml配置文件,修改规则:
<module name="MissingCtor">
    <property name="ignoreAnnotation" value="lombok.Generated,javax.persistence.Entity"/>
</module>

4. 确保Sonar Java插件兼容

Sonar 8.9对应的Java插件版本应为7.x,该版本原生支持Lombok,检查Sonar后台是否已安装Java插件,且版本匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:25:56