SonarQube负责存储代码数据、收集数据、分析代码和生成报告等。
下载地址:https://www.sonarsource.com/products/sonarqube/downloads/
本文下载9.9LTS版本:sonarqube-9.9.1.69595.zip
官方安装使用教程:https://docs.sonarsource.com/sonarqube/latest/try-out-sonarqube/
# Windows系统, 执行命令:StartSonar.bat
D:\sonarqube\bin\windows-x86-64\StartSonar.bat
# 其它系统, 使用非root用户执行命令:sonar.sh
/opt/sonarqube/bin//sonar.sh console
当前版本默认使用Elasticsearch作为内嵌数据库
login: admin
password: admin
登录管理后台,菜单栏administrator -> marketplace,Plugins的输入框输入“chinese”,点击"install",安装完成后,会提示重启,重启后界面会自动变成中文版本。
SonarScanner下载地址:https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
SonarScanner负责扫描代码,并提交给Sonarqube,是在项目中没有特定扫描器时(java有Maven插件和Gradle插件)使用的扫描器。
SonarScanner下载后解压可用,需要把启动脚本配置到环境变量PATH中(windows:sonar-scanner.bat,Linux:sonar-scanner)
扫描参数可配置在项目根目录中sonar-project.properties
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
sonar-project.properties的参数也可以在运行时输入:
mvn clean verify sonar:sonar -Dsonar.projectKey=test_project -Dsonar.host.url=http://localhost:9000 -Dsonar.login=sqp_xxxxxxxx
本文以本地项目代码扫描为例
Java代码扫描有两种方式
mvn clean verify sonar:sonar -Dsonar.projectKey=test_java -Dsonar.host.url=http://localhost:9000 -Dsonar.login=sqp_d02db1db74c3d45b6d3c582795fae73ea6de036f
sonar-scanner.bat -D"sonar.projectKey=test_java" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=sqp_d02db1db74c3d45b6d3c582795fae73ea6de036f" -D"sonar.java.binaries=*/*/target/*"
PHP扫描项目创建的方式与Java项目类似,只是在第5步时选择“其他 (比如 JS,TS,Go,Python,PHP…)”
然后进入代码目录,php目前只能使用sonar-scanner扫描器:
sonar-scanner.bat -D"sonar.projectKey=test_php" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=sqp_e93d1d793b88a7fc4c8c551c25dcfe938c4d74c4"