我正在启动一个新项目,我需要使用sonarqube
,我想使用lombok
,我已经在Eclipse中配置了它,除了静态分析之外,所有的工作都很好。
@data
类时,所有字段都报告为未使用的专用字段
。@getter(lazy=true)
:当我使用此批注时,我会得到已知为非空值的冗余nullcheck
请参阅@getter(lazy=true)(这与编译的代码有关)。我认为一个可能的解决方案是delombok
项目,编译并运行Sonar。
Sonarqube Jira
中的类似问题:
(@suppresswarnings(“pmd.unusedprivatefield”)
解决方案不适用于最新的Sonarqube 4.2
)
我该如何解决这个问题呢?
作为一种变通方法,我现在让sonar对delombok生成的代码进行分析。
我想这也不是一个完美的解决方案,因为我分析的是生成的代码,而不是开发人员实际编写的代码。但我发现它比使用@suppresswarnings、//nosonar
或关闭Sonar中的规则更好。
请参阅下面的一个示例,以在Maven中实现此功能。将此添加到pom.xml中:
<properties>
...
<!-- This is exposed as a workaround to do the sonar analysis in combination with delombok -->
<src.dir>src/main/java</src.dir>
...
</properties>
...
<plugins>
...
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>${lombok-plugin.version}</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<addOutputDirectory>false</addOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
...
<profiles>
...
<profile>
<!-- we have to use this profile to analyse code with sonar until https://jira.codehaus.org/browse/MSONAR-70 is fixed ! -->
<id>sonar</id>
<properties>
<src.dir>target/generated-sources/delombok</src.dir>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>${lombok-plugin.version}</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<addOutputDirectory>true</addOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
</profile>
...
</profiles>
我有一个用Lombok的@Data注释的类,在一个gradle项目中,使用Sonarqube和Jacoco插件。 源代码可在 github 上找到 我有一个本地运行的sonarqube服务器作为docker容器运行,开始如下: 我添加了一个“lombok.config”文件,要求它添加@lombok。根据文档中的“全局配置键”部分,为其生成的代码生成注释。 我有以下声纳状态配置。 当我第一次运行s
我用jacoco做报道。当我看jacoco报告时,覆盖面似乎不错。但是在Sonarqube中,覆盖率很低,因为它说来自lombok的< code>@Data注释没有被测试覆盖。 编译的类被标记为但 Sonar 不会忽略它。 如何排除分析的?
我使用Gradle 4.10.2(但使用最新版本让它工作会很好)。这是我的gradle文件: 当我执行时,它会失败并出现很多错误。这些错误都是由于没有找到lombok自动生成的getter、setter等。如何解决这些错误?我看过其他关于这个问题的帖子,他们都建议将lombok依赖项添加为 使现代化 以下是我得到的几个错误: 日志应该来自注释。并且来自于在CarDto上注释的@Builder(Bu
@adilooze解决方案
已经给出了所有的DTO@data、@noargsconstructor、@allargsconstructor,所以理想情况下所有的构造函数都应该可用。 我已经尝试用新旧版本的Spring tool suite和更改的lombok jar来构建这个项目。但同样或不同的错误仍在出现。 用STS4和STS 3.9.7尝试,3.9.8同样的问题即将到来。尝试龙目岛1.16.22、1.18.0、1.18.