SonarScanner用于在构建系统没有指定scanner时使用。
在你的项目根目录中创建一个名为 sonar-project.properties
的配置文件
# 在给定的SonarQube实例中必须保持唯一
sonar.projectKey=my:project
# --- 可选属性 ---
# 默认值为projectKey
#sonar.projectName=My project
# 默认值为'not provided'
#sonar.projectVersion=1.0
# 默认为 . 路径相对于sonar-project.properties而言
#sonar.sources=.
# 源代码文件编码. 默认为系统默认编码
#sonar.sourceEncoding=UTF-8
要从 zip 文件运行 SonarScanner,遵循下列步骤操作:
使用以下命令,使用 SonarScanner Docker 镜像进行扫描:
docker run \
--rm \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
-e SONAR_LOGIN="myAuthenticationToken" \
-v "${YOUR_REPO}:/usr/src" \
sonarsource/sonar-scanner-cli
扫描包含 C、C++ 或 ObjectiveC 代码的项目需要一些额外的分析步骤。查看完整信息C/C++/Objective-C
GitHub 上提供了适用于大多数语言的简单项目示例。点击浏览或下载示例项目。
如果在项目的根目录下无法创建 sonar-project.properties
文件,有以下几种选择:
注意:命令行参数优先于sonar-project.properties
配置,也就是说,当命令行和sonar-project.properties
存在相同参数配置的情况下,以命令行的参数配置为准
如果要分析的文件不在运行sonar-scanner
程序时所在目录,那么需要使用sonar.projectBaseDir
属性将分析移动到待分析文件所在目录,否则会导致分析失败,因为程序默认在当前目录下执行扫描。例如,在jenkins/jobs/myjob/workspace
目录下运行sonar-scanner
,但要分析的文件存在/home/ftpdrop/cobol/project1
目录,sonar-project.properties
配置如下:
sonar.projectBaseDir=/home/ftpdrop/cobol/project1
sonar.sources=src
以下部分提供了使用Docker运行sonar-scanner
时的高级配置选项
使用--user
选项,以非root用户运行Docker镜像,例如:
docker run \
--rm \
--user="$(id -u):$(id -g)" \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
-v "${YOUR_REPO}:/usr/src" \
sonarsource/sonar-scanner-cli
注意:以非root用户运行容器时,确保该用户对挂载的目录(比如代码目录或者scanner缓存目录)有读写权限,否则可能会遇到权限相关问题。
为了防止SonarScanner在每次运行扫描时重新下载语言分析器,可以挂载一个供scanner存储下载内容的目录,以便在scanner运行期间可以重用下载的内容。在某些CI系统上,还需要将此目录添加到CI缓存配置中。以下命令将在运行之间存储和使用缓存:
docker run \
--rm \
-v ${YOUR_CACHE_DIR}:/opt/sonar-scanner/.sonar/cache \
-v ${YOUR_REPO}:/usr/src \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
sonarsource/sonar-scanner-cli
还可以使用SONAR_USER_HOME
环境变量更scanner存储下载内容的位置。
Java heap space error or java.lang.OutOfMemoryError
通过SONAR_SCANNER_OPTS
环境变量增加内存
Linux:
export SONAR_SCANNER_OPTS="-Xmx512m"
Windows:
set SONAR_SCANNER_OPTS=-Xmx512m
Unsupported major.minor version
升级用于分析的Java版本,或使用一个本机包(嵌入自己的Java运行时)
Property missing: `sonar.cs.analyzer.projectOutPaths'. No protobuf files will be loaded for this project.
Scanner CLI无法分析.NET项目。请用SonarScanner for .NET。
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/