天天看点

sonar-scanner的使用

在服务器搭建sonarqube后,本地的windows个人电脑如何使用sonar-scanner?

在服务器搭建sonarqube后,每个人都可以在本地使用sonar-scanner扫描代码。

sonarqube与sonar-scanner的关系

sonar-scanner的使用

一、本地电脑安装jdk

至少安装1.8版本以上的jdk,安装后配置后环境变量。

二、下载sonar-scanner

  • 官网下载:​​https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/​​
    sonar-scanner的使用
  • 同步地址:​​https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/​​
    sonar-scanner的使用

三、将sonar-scanner添加到环境变量

下载后解压

sonar-scanner的使用

方法1:直接将bin目录添加到path环境变量中

如:E:\sonar-scanner-cli-4.6.2.2472-windows\sonar-scanner-4.6.2.2472-windows\bin

sonar-scanner的使用
sonar-scanner的使用

方法2:先将一个SONAR_SCANNER_HOME,再添加到path环境变量中

sonar-scanner的使用

注意:SONAR_SCANNER_HOME是填写到sonar-scanner的根目录,E:\sonar-scanner-cli-4.6.2.2472-windows

然后path添加:%SONAR_SCANNER_HOME%\bin

sonar-scanner的使用

之后,打开cmd,输入:sonar-scanner -version,如下图所示,代表环境变量配置正确

sonar-scanner的使用

如果出现:不是内部命令、外部命令的提示,代表环境变量没有配置正确

四、修改sonar-scanner配置文件

进入conf:E:\sonar-scanner-cli-4.6.2.2472-windows\sonar-scanner-4.6.2.2472-windows\conf,找到sonar-scanner.properties文件

sonar-scanner的使用

配置sonarqube服务器地址,数据库地址,编码格式

sonar-scanner的使用
sonar.host.url=http://192.168.2.122:9000/code_scan
#----- Default source code encoding
#配置编码格式
sonar.sourceEncoding=UTF-8
#数据库配置
sonar.jdbc.url=jdbc:postgresql://192.168.2.122:5432/code_scan
useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=postgres
sonar.jdbc.password=123456      

五、将项目拉到本地并添加配置文件

假设需要扫描的项目是:G:\sonar-scanning-examples-master\sonarqube-scanner\src,扫描其中的python目录

sonar-scanner的使用

添加一个sonar-project.properties文件

可以是txt文件直接把后缀改为.properties

sonar-project.properties文件是放到项目目录里

配置文件的说明

  • sonarprojectKey=在sonarQube上的实例键名(必须是唯一的,不可重复相同)
  • sonar.projectName=在sonarQube上的项目名称
  • sonar.projectVersion=1.0(项目版本号,可以不指定)
  • sonar.sources=.(java源代码目录指定,可以知道扫描目录,填写sonar-project.properties文件所在目录的相对路径)

    如下图,sonar-project.properties文件在G:\sonar-scanning-examples-master\sonarqube-scanner\src

    想要扫描python目录,就直接填写:sonar.sources=python

  • sonarsourceEncoding=UTF-8(编码格式指定)
  • sonar.language=java(指明只扫描ava语言)
  • sonarjava.binaries=target/classes(class文件的目录)
sonar-scanner的使用

六、获取扫描命令

可以从sonarqube中直接获取扫描命令,进入项目

sonar-scanner的使用
sonar-scanner的使用
sonar-scanner的使用

Token: 8dcba09f6faf72b81258e58ead4d1d2ca31628d0

sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://192.168.2.122:9000/code_scan" -D"sonar.login=8dcba09f6faf72b81258e58ead4d1d2ca31628d0"

七、进行扫描

在sonar-project.properties文件所在目录,进入cmd

执行:sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://192.168.2.122:9000/code_scan" -D"sonar.login=8dcba09f6faf72b81258e58ead4d1d2ca31628d0"

上面的参数应该是可以修改的,这里是扫描python代码,所以可以用这个命令执行

sonar-scanner的使用

执行成功,可以访问http://192.168.2.122:9000/code_scan/dashboard?id=test,查看结果

sonar-scanner的使用

遇到问题

直接在项目目录执行sonar-scanner,报错

sonar-scanner的使用

直接在项目目录执行sonar-scanner,没有权限

sonar-scanner的使用

这样执行:sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://192.168.2.122:9000/code_scan" -D"sonar.login=8dcba09f6faf72b81258e58ead4d1d2ca31628d0"

项目包含java代码

sonar-scanner的使用

不能这样执行:sonar-scanner.bat -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://192.168.2.122:9000/code_scan" -D"sonar.login=8dcba09f6faf72b81258e58ead4d1d2ca31628d0"

需要使用其他命令

密码错误

提示如下

sonar-scanner的使用