配置好sonar的服务端后,接下来就要使用sonar检测我们的代码了,sonar主要是借助客户端检测工具来检测代码,所以要使用sonar就需要先在我们本地配置好客户端检测工具。
客户端可以通过IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式进行扫描分析。常用的有扫描器有Sonar-Scanner和Sonar-Runner,使用起来都差不多。这里我使用Sonar-Scanner来作为检测客户端。
下载sonar-scanner
地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
安装sonar-scanner
1)确保安装jdk
# javac -version javac 11.0.14
2)解压
unzip sonar-scanner-cli-4.7.0.2747-linux.zip
3)配置环境变量,修改文件 /etc/profile
SONAR_SCANNER_HOME=/root/sonar-scanner-4.7.0.2747-linux
export PATH=${SONAR_SCANNER_HOME}/bin:$PATH
环境变量生效
# source /etc/profile
4)验证安装
# sonar-scanner -v
5)配置sonar-scanner
编辑
vi /root/sonar-scanner-4.7.0.2747-linux/conf/sonar-scanner.properties
修改sonar.host.url=http://localhost:9000
三、分析项目
新建配置文件
在java项目下,新建 sonar-project.properties 文件,添加以下内容
# must be unique in a given SonarQube instance sonar.projectKey=my:container # --- optional properties --- # defaults to project key #sonar.projectName=My project sonar.projectName=container # defaults to 'not provided' #sonar.projectVersion=1.0 sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Defaults to . #sonar.sources=. sonar.sources=src sonar.java.binaries=target/classes # Encoding of the source code. Default is default system encoding #sonar.sourceEncoding=UTF-8
参考参数说明:
#key,唯一标识,直接用项目名即可
sonar.projectKey=项目名
sonar.projectName=项目名
sonar.projectVersion=1.0
#要扫描的代码路径,sonar-project.properties文件的相对路径。【配成.或src】
sonar.sources=.
sonar.sourceEncoding=UTF-8
sonar.language=java
分析项目
在java项目目录下执行以下命令
# sonar-scanner
报错1:
ERROR: Error during SonarScanner execution ERROR: Not authorized. Analyzing this project requires authentication. Please provide a user token in sonar.login or other credentials in sonar.login and sonar.password.
解决1:
因为在配置文件中缺乏sonar.login和sonar.password参数,配置后即可
# vi /root/sonar-scanner-4.7.0.2747-linux/conf/sonar-scanner.properties
添加
sonar.login=xxxx sonar.password=xxxx
报错2:
INFO: JavaClasspath initialization ERROR: Invalid value for 'sonar.java.binaries' property. INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 10.946s INFO: Final Memory: 15M/176M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarScanner execution java.lang.IllegalStateException: No files nor directories matching 'target/classes' at org.sonar.java.classpath.AbstractClasspath.getFilesFromProperty(AbstractClasspath.java:128) at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:58) at org.sonar.java.classpath.AbstractClasspath.getElements(AbstractClasspath.java:319)
解决2:
因为在配置文件中sonar.java.binaries参数配置的值不正确,创建相应的目录即可。
在target目录下创建classes目录
# mkdir target/classes
成功后打开sonarqube,查看报告
参考链接:
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/



