正如下面的声明所指出的,SonarSource终止了对运行11之前的Java版本的代码分析器的支持:
2021年1月-将分析移至Java 11
扫描仪环境中安装的Java版本必须在2021年2月1日之前至少升级到Java 11。Java 11之前的版本已弃用,使用这些版本的扫描仪将在该日期停止运行。
此外,2021年1月11日至2021年1月15日期间将实行限电,在此期间,使用Java版本低于11的扫描仪运行的首次分析将失败。为避免这种不便,您应在2021年1月11日前升级。
此处讨论的Java安装特指在SonarCloud扫描仪分析工具运行的环境中安装和使用的JDK或JRE。这可能是您的本地构建环境或CI服务。
这对项目代码所针对的Java版本没有任何影响。您仍然可以分析针对版本低于11的Java项目。
我试图搜索一个完整的例子关于如何运行一个比特桶管道来执行SonarScanner分析,使用java 11分析器,但目标代码使用java 11之前的版本(如java 8),但我无法找到一个。根据该图像,这应该是可能的。
3条答案
按热度按时间jq6vz3qz1#
我不知道是什么问题。公告中告知您必须使用Java 11+执行扫描,但您仍然可以使用Java〈11编译代码。您没有提供任何有关您项目的信息,因此我们以Maven项目为例。
它通常意味着你必须做这样的事情:
t30tvxxf2#
虽然@agabrys提供了最直接的解决方案,也是我们使用的解决方案,尽管是通过Jenkins freestyle作业调用maven顶层目标包,然后结束注入JAVA_HOME变量并调用maven sonar步骤,但另一种方法是......
始终使用Java 11,但在maven pom中,请指定:
这是一个运行时不兼容的小风险,如该页底部所示。
另一种选择是将概要文件与maven toolchains结合使用,绑定到不同的概要文件,一个用于编译步骤,一个用于分析步骤。
vd8tlhqk3#
我在我的项目中也遇到了同样的问题,我的项目需要jdk8来编译,但SonarScan需要jdk11,我必须使用maven的
sonar:sonar
插件,而不是直接的sonarscanner
二进制文件。为了解决这个问题,我使用了
docker
容器,只运行sonarscan部分,编译部分仍然是由主机的maven本身完成的。要使用Docker运行SonarScan,请使用如下命令: