参考文章:Just Coding (nkcoder.github.io)
sonarqube扫描lombok注解的java代码时,总是提示Remove this unused "name" private field.这类信息。
这是因为sonarqube在扫描代码时,不能识别Lombok的注解导致。
解决方法:
一般可以在 build 工具,如 maven/gradle 中,定义一个 goal/task,将需要的依赖包拷贝到一个指定目录,然后就可以引用了。比如使用maven-dependency-plugin,配置如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在 gradle 中配置如下:
task copyDependencies(type: Copy) {
// from configurations.default
from configurations.default.filter {it.name.startsWith("lombok")}
into "${project.buildDir}/libs"
}
同时在Jenkins的sonar扫描的时候,配置上sonar.java.libraries = target/libs/lombok-1.18.8.jar。Jenkins的配置一般如下:
sonar.projectKey=cloud-app-sonar sonar.projectName=cloud-app-sonar sonar.projectBaseDir=./ sonar.java.binaries=./ sonar.branch.name=dev sonar.host.url=https://sonar.xxx.com sonar.java.libraries=./xxx/target/libs/*.jar
sonarqube在Jenkins中的配置说明:
sonar.projectkey=projectkey /* sonar平台中相对应项目的key */ sonar.projectName=sonarName /* sonar扫描完的项目名称 */ sonar.language=java /* 扫描对象的语言 */ sonar.java.source=1.8 /* 扫描java语言的版本 */ sonar.sourceFncoding=UTF-8 /* 扫描对象文件的编码 */ sonar.java.libraries= /xx.jar/ /* 项目使用的带有第三方库(jar或zip文件)的文件的都好分割路径。可以使用分隔符:sonar.java.libraries=path/tolibrary.jar,directory/**/*.jar */ sonar.source=file /* 扫描对象的路径 */ sonar.java.binaries=class /* 编译后的文件路径,包含与源文件对应的已编译字节码文件的目录的逗号分隔路径 */
沪公网安备 31011502001064号