SonarQube Scanner是SonarQube扫描器,它通过各种不同的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到SonarQube的数据库,通过SonarQube的Web界面对分析结果进行展示与管理。
SonarQube建议将SonarQube Scanner用作使用SonarQube分析项目的默认启动器。你可以在 SonarQube扫描器下载地址 下载到对应系统的SonarQube扫描器版本。并在下载完成后,移动压缩包文件到任意目录下。
cd Downloads
ls
mv sonar-scanner-cli-3.2.0.1227-linux.zip ~/
cd ~/
ls
将上一步移动好的压缩包解压缩在任意目录,然后你可以选择删除压缩包或另行保存。
unzip sonar-scanner-cli-3.2.0.1227-linux.zip
ls
rm sonar-scanner-cli-3.2.0.1227-linux.zip
ls
通过编辑SonarQube Scanner存放目录下的 /conf/sonar-scanner.properties 文件以更新全局设置,指向SonarQube服务器的地址。
cd sonar-scanner-3.2.0.1227-linux/conf
ls
vim sonar-scanner.properties
你需要添加SonarQube Scanner存放路径下的 /bin 目录到你的path变量中。配置环境变量以后,您可以通过打开新Shell窗口并执行命令 sonar-scanner -h
来验证您的安装。(在Windows平台上,命令是 sonar-scanner.bat -h
)
sudo vim /etc/profile
# 添加内容
SONAR_HOME="/home/parallels/sonarqube-7.3/"
SCANNER_HOME="/home/parallels//sonar-scanner-3.2.0.1227-linux/"
PATH=$PATH:$HOME/bin:$SCANNER_HOME/bin
. /etc/profile
sonar-scanner -h
如果你需要更多调试信息,可以通过添加命令行参数 -Dsonar.verbose=true
来添加 sonar.verbose
属性。
为了帮助您入门,GitHub上的大多数语言都提供了简单的项目示例,SonarQube也不例外,提供了如何使用SonarQube扫描器简单示例,你可以 浏览 或直接 下载 它们,你会发现它们是根据项目/语言提交的。
任何被授予 Execute Analysis (执行分析)权限的用户都可以运行分析。如果任何组未被授予 Execute Analysis 权限或SonarQube实例受到保护(当 sonar.forceAuthentication 属性设置为true时),则必须通过 sonar.login 属性提供具有 Execute Analysis 权限的用户的分析标记,例如: sonar-scanner -Dsonar.login=[我的分析标记] 。
在你想分析的项目根目录中创建配置文件 sonar-project.properties 。
touch sonar-project.properties
vim sonar-project.properties
添加下面的配置内容。
# 在给定的SonarQube实例中必须是唯一的。
sonar.projectKey=my:project
# 这是SonarQube UI中显示的名称和版本。在SonarQube 6.1之前是强制性的。
sonar.projectName=My project
sonar.projectVersion=1.0
# Path是相对于sonar-project.properties文件的。在Windows上将"\"替换为"/"。
# 如果设置了sonar.modules,则此属性是可选的。
sonar.sources=.
# 源代码编码。默认是系统默认编码。
#sonar.sourceEncoding=UTF-8
然后,你需要从SonarQube的Web界面点击 分析新项目 。
如果你是第一次创建分析,SonarQube必须要你创建一个令牌,然后选择你本机的操作系统,再将配置文件 sonar-project.properties 中的 sonar.projectKey 属性复制到 定义唯一的任务标识 中,这一步非常重要。
点击 完成 按钮,SonarQube会给出你需要在项目根目录下执行的命令,直接复制执行就可以执行第一次分析。
稍等一会,当SonarQube扫描器完成第一次分析,你会在SonarQube首页看到当前项目的最后一次分析概括,点击可以查看更多详情。