SonarScanner用来执行源代码分析。这个独立的程序在CI/CD主机上运行,并将分析结果发送到SonarQube服务器,由其计算分析结果,计算质量门并生成报告。我们可以通过命令行和maven构建两种方式来执行SonarScanner的源码分析。关于SonarScanner更多的内容可以参考文章:
一文带您了解SonarScanner的原理和使用方法(包括maven构建和命令行执行)_sonar-scanner-CSDN博客
本人最近在maven项目中使用高版本的sonar-maven-plugin 进行构建时遇到了两个问题,在这里跟大家分享一下!
问题一:本地jdk与 sonar-maven-plugin 需要的jdk不一致
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.10.0.2594:sonar (default-cli) on project PerformaceDemo: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.10.0.2594:sonar failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.10.0.2594:sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
如果我们使用最新版本的sonar-maven-plugin3.10.x那么就要确保你本地的jdk最低版本是jdk17
问题二:maven构建时JAVA_HOME变量一定指定的是JDK目录而不能是JRE
因为本人PC没有使用jdk17,所以想投机取巧,JAVA_HOME直接指定了sonarqube-10.7.0.96327\jres目录下的jre
导致错误如下:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project PerformaceDemo: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
所以要想使用高版本的sonar-maven-plugin,乖乖的下载jdk17!
maven pom.xml配置SonarScanner
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>yourPluginVersion</version>
</plugin>
</plugins>
</pluginManagement>
</build>
maven构建命令
基础命令
mvn clean verify sonar:sonar
配置sonarqube相关信息
mvn clean verify sonar:sonar
-Dsonar.projectKey=KevinDemo1
-Dsonar.host.url=http://localhost:9000
-Dsonar.token=sqp_173f67919bbf5cbbaa6f728e0f02c2c750752a4a
参数解释
sonar.projectKey sonar中项目的key
sonar.host.url sonarqube 服务器地址
sonar.token 项目令牌
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!