SonarQube-质量检测
代码质量采用sonarqube
进行源码的扫描,并生成检测报告,如下:
这里主要关注Bugs
、漏洞
、复审热点
几个指标需要进行代码检查确认是否需要修复。
Bugs
:代码写法存在bug,需要检查确认是否修复
漏洞
:代码中的写法存在漏洞,需要检查确认是否修复
安全热点
:需要人为去识别是否为bug,需要检查确认是否修复
异味
:一般可以不关注,有时间也可以查看一下给出的优化建议
覆盖率
:这里不做处理,这里指单元测试的覆盖,我们一般都没写。
重复
:代码块中的重复,有时间可以优化下。
Maven项目
手工执行检测
在本地maven的setting.xml
文件添加一个profile
<!-- setting.xml文件添加sonarqube -->
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.token>squ_d0776e92c22dfeb1f724a26ae00ebc235589a8c8</sonar.token>
<sonar.host.url>http://172.16.102.52:9000/</sonar.host.url>
</properties>
</profile>
<activeProfiles>
<activeProfile>nexusRepository</activeProfile>
<activeProfile>sonar</activeProfile>
</activeProfiles>
# 在应用中开个终端执行下列命令(执行完后,可以在网页上查看检测的报告,根据检测的示例进行修复后再进行重新检测 )
mvn sonar:sonar
流水线构建配置
// Jenkins流水线配置文件添加一个步骤(在拉取代码后就可以执行检测)
stage('sonarqube-质量检测') {
steps {
sh '/var/jenkins_home/apache-maven-3.8.6/bin/mvn sonar:sonar -Dsonar.java.binaries=target/sonar'
}
}
Web项目
web项目在本地检测需要下载SonarScanner
手工执行检测
SonarScanner 下载:https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/
下载解压:D:\software\sonar-scanner
(目录自定选择)
# 在前端项目根目录执行
D:\software\sonar-scanner\bin\sonar-scanner.bat -D"sonar.projectKey=dmm-web" -D"sonar.sources=." -D"sonar.host.url=http://172.16.102.52:9000/" -D"sonar.token=squ_d0776e92c22dfeb1f724a26ae00ebc235589a8c8"
sonar.projectKey
:dmm-web (应用ID,自行修改)
sonar.sources
:. (.表示当前命令执行时扫描的目录)
sonar.host.url
:http://172.16.102.52:9000/ (SonarQube服务地址,默认)
sonar.login
:squ_d0776e92c22dfeb1f724a26ae00ebc235589a8c8(访问令牌,默认)
sonar.token
:squ_d0776e92c22dfeb1f724a26ae00ebc235589a8c8(在sonarqube:10.0
及之后版本该属性调整为sonar.login-->sonar.token
)
流水线构建配置
// Jenkins流水线配置文件添加一个步骤(在拉取代码后就可以执行检测)
stage('sonarqube-质量检测') {
steps {
script{
SCANNER_HOME = tool 'sq-scanner'
}
withSonarQubeEnv('sonarqube') {
sh"""
${SCANNER_HOME}/bin/sonar-scanner \
-Dsonar.projectKey=${JOB_BASE_NAME} \
-Dsonar.sources=. \
-Dsonar.host.url=http://172.16.102.52:9000/ \
-Dsonar.token=squ_d0776e92c22dfeb1f724a26ae00ebc235589a8c8
"""
}
}
}
报告查看
SonarQube :http://172.16.102.52:9000/
访问账号/密码:说明使用的项目,申请创建相关账号