Jenkins+SonarQube
代码审查 - 安装SonarQube
SonaQube简介
SonarQube是
一个用于管理
代码质量的开放平台,可以
快速的定位
代码中潜在的或者明显的
错误。目前
支持java,C#,C/C++,Python,PL/
sql,Cobol,JavaScrip,Groovy等二十几种编程语言的
代码质量管理与检 测,底层使用elasticsearch作为
代码检索工具。
官网:
https://www.sonarqube.org/ 环境要求
软件
|
服务器
|
版本
|
jdk
|
192.168.153.20
|
1.8
|
MysqL
|
192.168.153.20
|
5.7
|
SonarQube
|
192.168.153.20
|
6.7.4
|
安 装 SonarQube
1)安装
MysqL(已完成)abc123 2)安装SonarQube
在
MysqL创建sonar
数据库

下载sonar压缩包:
https://www.sonarqube.org/downloads/
解压sonar,并设置权限
yum install unzip (已装)
unzip sonarqube-6.7.4.zip 解压
mkdir /opt/sonar 创建目录
mv sonarqube-6.7.4/* /opt/sonar 移动
文件
useradd sonar 创建sonar
用户,必须sonar用于启动,否则报错
chown -R sonar. /opt/sonar 更改sonar目录及
文件权限
修改sonar
配置文件
vi /opt/sonarqube-6.7.4/conf/sonar.properties
内容如下:
sonar.jdbc.username=root
sonar.jdbc.password=abc123
sonar.jdbc.url=jdbc:
MysqL://localhost:3306/sonar? useUnicode=true&ch
aracterEncoding=utf8&rewriteBatchedStatements=true&useConfigs= maxPerformance&useSSL=false (取消注释即可)
注意:sonar
默认监听9000端口,如果9000端口被占用,需要更改。 启动sonar(注意:切换sonar
用户)
cd /opt/sonar
su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止
tail -f logs/sonar.logs
查看日志访 问 sonar
http://192.168.153.20:9000
默认账户:admin/admin 创建token进log in

ww: 07670ec186e7ebcdfccbec4f7477fdd6792d7110(和Jenkins整合会使用此密钥)
token要记下来!!!
Jenkins+SonarQube
代码审查- 实现
代码审查
安装SonarQube Scanner
插件


安装SonarQube

添加SonarQube凭证

Jenkins进行SonarQube配置
Manage Jenkins->Configure Sy
stem->SonarQube servers

在项目
添加SonaQube
代码审查(非流水线项目)
以自由风格为例:打开web_demo_freestyle



直接构建

在sonarqube服务器上刷新,查看结果

测试
错误代码
新建Java和resource目录

配置pom.xml
文件添加对servlet的依赖


新建编写Servlet
文件


代码提交



进行构建测试结果

解决方法:


再次提交项目

代码检查后,发现问题

发现
代码BUG和未使用变量等问题

在项目
添加SonaQube
代码审查(流水线项目)
1) 项目根目录下,创建sonar-project.properties
文件

2)
修改Jenkinsfile,加入SonarQube
代码审查阶段
pipeline {
agent any
stages {
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteCon
figs: [[credentialsId: '1be38991-873b-4a68-8eb6-312347fdc0a4', url: '
[email protected]:kgc_group/web_demo.git']]])
}
}
stage('code checking') {
steps {
script {
//引入了sonarqube-scanner工具
scannerHome = tool 'sonar-scanner'
}
//引入了sonarqube服务器系统环境
withSonarQubeEnv('sonarqube') {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
stage('build project') {
steps {
sh 'mvn clean package'
}
}
stage('publish project') {
steps {
deploy adapters: [tomcat8(credentialsId: 'd8b013fd-7545-43c0-83b3-6dbbf584887c', path: '', url: 'http://192.168.195.182:8080/')],
contextpath: null, war: 'target/*.war'
}
}
}
post {
always {
emailext(subject: '构建
通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',body: '${FILE,path="email.html"}', to: '
[email protected]')
}
}
}
把更改后的sonar-project.properties和Jenkinsfile进行提交


开始构建web_demo_pipeline

查看检测结果

邮件通知也会收到

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。