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

使用Lombok的@Getter/@Setter时SonarQube无法检测未使用导入

解决方案:Lombok+SonarQube未检测到未使用导入问题

针对你遇到的Lombok生成Getter/Setter时SonarQube无法识别未使用导入的问题,以下是几个可行的解决办法:

1. 安装SonarQube Lombok插件

SonarQube社区版原生对Lombok注解的支持有限,安装官方维护的Lombok插件可以让SonarQube正确识别Lombok生成的方法,从而准确检测未使用导入:

  • 登录SonarQube后台管理界面,进入Marketplace
  • 搜索「Lombok」插件并完成安装
  • 重启SonarQube服务后,重新执行项目扫描

2. 提前执行Delombok转换源码

SonarQube分析源码时无法直接识别Lombok注解生成的方法,通过Delombok将带注解的代码转换为普通Java代码后再扫描,能彻底解决这类分析偏差:

Maven配置示例

在pom.xml中添加Lombok Maven插件,配置delombok目标:

<build>
    <plugins>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>1.18.24.0</version>
            <executions>
                <execution>
                    <id>delombok</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/generated-sources/delombok</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后在SonarQube扫描配置中,将转换后的目录加入扫描范围:

sonar.sources=src/main/java,target/generated-sources/delombok

3. 优化SonarQube分析配置

确保SonarQube能正确获取编译后的字节码和注解处理信息:

  • 确认Maven/Gradle中Lombok的依赖范围为compile或provided,且编译插件配置了注解处理器路径(以Maven为例):
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.10.1</version>
    <configuration>
        <source>17</source>
        <target>17</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.24</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>
  • 配置SonarQube扫描参数,指定字节码目录和Java版本:
sonar.java.binaries=target/classes
sonar.java.source=17
sonar.java.target=17

额外验证步骤

  • 扫描前执行mvn clean compile,清理旧的编译产物,确保SonarQube分析的是最新编译的代码
  • 查看SonarQube扫描日志,检查是否有「Lombok」相关的警告信息,确认注解处理器是否正常工作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:57:30