正如下面的图像所指出的,SonarSource结束了对运行代码分析器的支持,使用了pre-11 Java版本。

我尝试搜索一个完整示例,说明如何使用java11Analyzer运行bitbucket管道来执行SonarScanner分析,但是目标代码使用java 11前版本(例如java 8),但是我找不到。根据这张照片,这应该是可能的。
发布于 2021-02-21 19:57:00
我不知道是什么问题。公告通知您必须使用Java来执行扫描,但是您仍然可以用11+ <11编译代码。您没有提供任何关于您的项目的信息,所以让我们以一个Maven项目为例。
这通常意味着你必须做这样的事情:
// set Java to 8
export JAVA_HOME=/path/to/jdk8/
// compile, test and build
mvn package
// set Java to 11
export JAVA_HOME=/path/to/jdk11/
// execute scanner
mvn sonar:sonar发布于 2021-10-02 11:05:39
@agabrys提供了最简单的解决方案和我们使用的解决方案,尽管通过Jenkins自由式作业,调用maven顶层目标包,然后端注入JAVA_HOME变量和调用maven声纳步骤,另一种方法是.
始终使用Java 11,但在maven pom中指定:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>这是运行时不兼容的一个小风险,如页面底部所指出的。
另一种选择是将配置文件与maven工具链结合使用,这些配置文件绑定到不同的配置文件,一个用于编译,另一个用于分析步骤。
发布于 2022-04-11 08:30:40
我在我的项目中也遇到了同样的问题,我的项目需要jdk8编译,而SonarScan需要jdk11,而且我一定要为maven使用sonar:sonar插件,而不是直接的sonarscanner二进制。
为了解决这个问题,我使用了docker容器,只是运行了声纳扫描部分。编译部分仍然是用主机的maven完成的。
若要使用docker运行SonarScan,请使用以下命令:
docker run -u $(id -u ${USER}):$(id -g ${USER}) --rm -v "$PWD":/usr/src/mymaven -v "$HOME/.m2":/tmp/.m2 -w /usr/src/mymaven maven:3-openjdk-11 \
mvn -gs=/tmp/.m2/settings.xml -Dmaven.repo.local=/tmp/.m2/repository sonar:sonar \
-Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
-Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html \
-Dsonar.dependencyCheck.summarize=true \
-Dsonar.host.url=https://my-sonar-url \
-Dsonar.login=****https://stackoverflow.com/questions/66267806
复制相似问题