一. SonarQube介绍
SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。
官网:https://www.sonarqube.org/
二. SonarQube环境要求:
| 软件 | 版本 |
|---|---|
| JDK | 1.8 |
| MySQL | 5.7 |
三. 安装SonarQube:
1. 安装依赖
#安装jdk:yum install java-1.8.0-openjdk* -y#安装MySQL可以查看我的另一篇博文:https://blog.csdn.net/fengxueliuke/article/details/105958632
2. 安装sonarqube:
此处以sonarqube-6.7.4举例,当然你也可以通过下面的链接来下载不同的版本.
下载地址:https://www.sonarqube.org/downloads/
3. 解压sonar,并设置权限:
#因为下载的包以zip结尾,故我们需要zip工具yum install unzip#解压到/usr/local目录 -d 指定目录unzip sonarqube-6.7.4.zip -d /usr/local/#创建sonar用户,必须sonar用于启动,否则报错useradd sonarqube#更改sonar目录及文件权限chown -R sonarqube. /usr/local/sonarqube-6.7.4
4. 创建sonarqube数据库,用于存放代码审查记录:

5. 修改sonar配置文件:
vi /usr/local/sonarqube-6.7.4/conf/sonar.properties#修改内容如下:#数据库用户名sonar.jdbc.username=root#数据库密码sonar.jdbc.password=@Abcd1234sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false#修改端口sonar.web.port=9000
6. 启动sonar:
cd /usr/local/sonarqube-6.7.4#切换到sonarqube用户来启动,不然会失败.su sonarqube ./bin/linux-x86-64/sonar.sh start#查看状态su sonarqube ./bin/linux-x86-64/sonar.sh status#停止su sonarqube ./bin/linux-x86-64/sonar.sh stop#查看日志tail -f logs/sonar.log
7. 测试:
访问地址: http://{IP}:9000
看到下面的界面代表安装并启动成功.
8. 登陆:
admin/admin
9. 创建token:
输入token名称:
10. 记录token:
33368386e5e38b1782918243a20729db95cd3ab2

11. 配置代理:
#如果你需要访问下载插件,恰好你懂的如何加速访问国际互联网,可进行下面配置:vim /usr/local/sonarqube-6.7.4/conf/sonar.properties#放开此配置:sonar.updatecenter.activate=true# 配置代理服务器及端口:http.proxyHost=192.168.31.150http.proxyPort=1080
12. 安装汉化插件:
因我的版本不匹配,此处不做演示:
四. Jenkins+SonarQube代码审查之前期准备:
1. 安装SonarQube Scanner插件

2. 添加SonarQube凭证:

3. 安装SonarQube Scanner:
在Global Tool Configuration菜单中进行安装:
4. 进行SonarQube配置:
Manage Jenkins->Configure System->SonarQube servers:
5. SonaQube关闭审查结果上传到SCM功能

五. Jenkins+SonarQube代码审查实战:
1. 在项目添加SonaQube代码审查(非流水线项目)
⑴. 修改自由风格项目:

⑵. 配置Execute SonarQube Scanner:
添加构建步骤:
# 给需要代码审查的项目取一个唯一的名称sonar.projectKey=web-demo-freestyle-project#SonarQube UI中显示的名称和版本,必填.sonar.projectName=web-demo-freestyle-projectsonar.projectVersion=1.0#需要扫描代码的路径,点代表当前项目的所有内容 当然你也可以指定目录,如:/src/main/**sonar.sources=.#排除扫描的目录sonar.exclusions=**/test/**,**/target/**#jdk版本sonar.java.source=1.8sonar.java.target=1.8#源代码的编码sonar.sourceEncoding=UTF-8
⑶. 修改Jenkinsfile,加入SonarQube代码审查阶段:

⑷. 查看控制台输出:
我们可以从控制台看到,代码审查已经成功了.
⑸. 查看代码审查记录:

⑹. 查看代码审查详情:

2. 在项目添加SonaQube代码审查(流水线项目):
⑴. 项目根目录下,创建sonar-project.properties文件:
sonar.projectKey=web-demo-freestyle-project1#SonarQube UI中显示的名称和版本,必填.sonar.projectName=web-demo-freestyle-project1sonar.projectVersion=1.0#需要扫描代码的路径,点代表当前项目的所有内容 当然你也可以指定目录,如:/src/main/**sonar.sources=.#排除扫描的目录sonar.exclusions=**/test/**,**/target/**#jdk版本sonar.java.source=1.8sonar.java.target=1.8#源代码的编码sonar.sourceEncoding=UTF-8
⑵. 修改Jenkinsfile脚本文件,增加代码审查脚本:
pipeline {agent anystages {stage('拉取代码') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ef0f4ce0-c68a-4607-9e25-21c38c50442f', url: '此处填写你的git地址']]])echo '拉取代码成功'}}stage('代码审查') {steps {script {//引入SonarQube Scanner工具,在下图图一定义scannerHome = tool 'SonarQube'}//引入SonarQube的环境,在下图图二定义withSonarQubeEnv('SonarQube') {//执行代码审查sh "${scannerHome}/bin/sonar-scanner"}echo '拉取代码成功'}}stage('构建项目') {steps {sh 'mvn clean package'echo '构建项目成功'}}stage('项目部署') {steps {deploy adapters: [tomcat8(credentialsId: '40de4b9b-71f8-4514-8694-2307daa9963f', path: '', url: 'http://192.168.31.101:8080')], contextPath: null, war: 'target/*.war'echo '项目部署成功'}}}post {always {emailext(subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',body: '${FILE,path="email.html"}',to: '1805222511@qq.com')}}}
脚本中引入的SonarQube Scanner工具定义位置
脚本中引入的SonarQube环境定义位置
⑶. 推送代码:

⑷. 查看构建:

⑸.查看代码审查结果:

文章转载自风雪留客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




