sonarqube扫描Lombok问题

参考文章: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            /* 编译后的文件路径,包含与源文件对应的已编译字节码文件的目录的逗号分隔路径 */
转载请备注引用地址:编程记忆 » sonarqube扫描Lombok问题