持续集成之代码质量管理-Sonar [三]
Sonar 介绍
Sonar 是一个用于代码质量管理的开放平台。通过插件机制, Sonar 可以集成不同的测试工
具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同, Sonar
并不是简单地把不同的代码检查工具结果(例如 FindBugs, PMD 等)直接显示在 Web 页面上,而
是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方
便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面, Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ
IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方
便地在持续集成中使用 Sonar。
此外, Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化
也有良好的支持。
站在用户的角度思考问题,与客户深入沟通,找到灌南网站设计与灌南网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、网站空间、企业邮箱。业务覆盖灌南地区。
Sonar 部署
Sonar 的相关下载和文档可以在下面的链接中找到: http://www.sonarqube.org/downloads/。
需要注意最新版的 Sonar 需要至少 JDK 1.8 及以上版本。
上篇文章我们已经可以成功的使用 git 进行拉去, Sonar 的功能就是来检查代码是否有 BUG。除了
检查代码是否有 bug 还有其他的功能,比如说:你的代码注释率是多少,代码有一些建议,编写语
法的建议。所以我们叫质量管理
Sonar 还可以给代码打分,并且引用了技术宅的功能(告诉你有很多地方没改)
Sonar 部署
89 cd /usr/src/sonar
90 rz 上传所需软件包
软件包我们通过 wget 或者下载, rz 上传到服务器
#软件包下载: https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.zip
95 unzip sonarqube-5.6.zip 解压软件包
96 mv sonarqube-5.6 /usr/local/sonarqube
97 cd /usr/local/sonarqube/
98 ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin/ 链接命令目录
准备 Sonar 数据库
如果没有数据库请执行 yum install -y mariadb mariadb-server
102 cd /usr/src/ MySQL5.7RPM
103 rz 上传所需rpm包
105 cd MySQl5.7RPM/
107 ls
108 yum -y localinstall mysql-community-* 安装此目录的MySQL包
109 systemctl start mysqld 开启mysql
100 systemctl enable mariadb 设置开机自启
登录数据库并操作
110 mysqladmin -u root password 123 设置MySQL数据库密码
可以看到这里有问题。解决:
111 grep password /var/log/mysqld.log
红框中的就是密码
112 mysql -u root -p'yq%9XsyE:r&g' 登陆数据库
alter user 'root'@'localhost' identified by '123.com'
alter user 'root'@'localhost' identified by 'Xgp@123.com';
create database sonar character set utf8 collate utf8_general_ci; 创建数据库
grant all on sonar.* to 'sonar'@'%' identified by 'Sonar@123.com'; 设置授权用户
grant all on sonar.* to 'sonar'@'localhost' identified by 'Sonar@123.com'; 设置授权用户
配置 Sonar
113 cd /usr/local/sonarqube/bin/
115 ls
116 ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin/ 链接命令目录
117 vim conf/sonar.properties 修改sonar配置文件
sonar.jdbc.username=sonar #14用户名
sonar.jdbc.password=Sonar@123.com #15密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance #23去注释
sonar.web.host=0.0.0.0 #99去注释
sonar.web.port=9000 #106去注释
配置 Java 访问数据库驱动(可选)
默认情况 Sonar 有自带的嵌入的数据库,那么你如果使用类是 Oracle 数据库,必须手动复制驱动类到${SONAR_HOME}/extensions/jdbc-driver/oracle/目录下,其它支持的数据库默认提供了驱动。其它数据库的配置可以参考官方文档:
http://docs.sonarqube.org/display/HOME/SonarQube+Platform
启动 Sonar并查看端口
你可以在 Sonar 的配置文件来配置 Sonar Web 监听的 IP 地址和端口,默认是 9000 端口。
118 sonar.sh start 启动sonar
119 netstat -anpt | grep 9000 查看端口
120 tailf /usr/local/sonarqube/logs/sonar.log 查看sonar日志
#端口是 9000 哦!
Web 登陆: IP:9000
提示:
sonar 跟 jenkins 类似,也是以插件为主
sonar 安装插件有 2 种方式:第一种将插件下载完存放在 sonar 的插件目录,第二种使用 web 界面来使用安装存放插件路径[/usr/local/sonarqube/extensions/plugins/]
安装中文插件
登陆:用户名: admin 密码: admin
sonar安装‘中文’和php插件
132 cd /usr/local/sonarqube/extensions/plugins/ 进入sonar宿主目录
133 cp /usr/src/sonar/sonar-l10n-zh-plugin-1.11.jar ./ 拷贝中文插件到sonar目录
134 cp /usr/src/sonar/sonar-php-plugin-2.9-RC1.jar ./ 拷贝php插件到sonar目录需要重启才会生效
134 sonar.sh restart 重启sonar
135 netstat -anpt | grep 9000 查看端口
生效后如下图:
下载扫描器插件
140 cd /usr/src/sonar/ 进入刚刚上传sonar包的目录
141 unzip sonar-scanner-cli-3.3.0.1492-linux.zip 解压扫描插件
142 mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner 移动解压文件到sonar宿主目录
143 cd /usr/local/sonar-scanner/ 进入sonar宿主目录
145 ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/local/bin/ 链接命令目录
146 ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/bin/ 链接命令目录
我们要将扫描器和 sonar 关联起来
143 cd /usr/local/sonar-scanner/
144 vim conf/sonar-scanner.properties 修改sonar配置文件
sonar.host.url=http://localhost:9000 #去注释 sonar 地址
sonar.sourceEncoding=UTF-8 #8去注释 字符集
以下四行来自/usr/ldocal/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonar #数据库账号
sonar.jdbc.password=Sonar@123.com #数据库密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance #数据库连接地址
#打开注释即可
我们现在需要找一个代码进行分析。
sonar 插件提供了一个代码的库
github:https://github.com/SonarSource/sonar-examples
我们下载软件包: https://github.com/SonarSource/sonar-examples/archive/master.zip
解压
150 unzip testalyzer-master.zip 解压测试文件
151 cd /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests 进入测试文件
163 sonar-scanner 测试代码文件
提示: 我们什么都不指定就会在当面目录下扫描 sonar-project.properties 文件,根据配置文件进行扫描工作。扫描之后我们在 web 界面上就可以看到代码的扫描结果这里的名字,版本 都是在 sonar-project.properties 文件中定义的
质量阈帮我们设定好一个阈值,超过相应的阈值就算有 bug
测试第二个文件
cd /usr/src/sonar/testalyzer-master/projects/languages/javascript/javascript-sonar-runner
sonar-scanner 测试
为了让 jenkins 可以在构建项目的时候执行 sonar,所以我们需要在 jenkins 上安装插件
现在就可以进行配置,让 jenkins 和 sonar 结合在一起。这样我们构建项目的时候就会进行代码检测
http://192.168.1.40:8081/ jdk安装插件SonarQube Scanner. Gerrit Tr igge 需要一个一个来
安装完毕之后:现在就可以进行配置,让 jenkins 和 sonar 结合在一起。这样我们构建项目的时候就会进行代码检测
系统管理---系统设置---- add sonarqube server---name随意写 url sonarqube的路径http://192.168.1.40: 9000
点击保存
系统管理---全局工具配置---新增SonarQube Scanner--- 取消勾选自动安装----name随意写--- SONAR_RUNNER_HOME /usr/local/sonar- scanner
配置
配置上次课的web- demo项目----构建--- Execute SonarQube Scanner ----Analysis properties 内容在cat /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/sonar-project.properties(每个人安装目录不一样)
编辑我们的项目,选择最下放。找到构建
cat /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/sonar-project.properties
填写完毕后,我们点击保存
217 cd /usr/src/sonar/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
219 cp -r * /root/xgp-demo/
220 cd /root/xgp-demo/ 进入xgp项目
221 git add * 上传到缓存
222 git commit -m "sonar" 上传到版板库
223 git push origin master 上传到远程库
提示: 此时的 SonarQube 是无法点击的
浏览器JDK查看
点击 Console Output 可以查看构建输出的内容
#提示:只要没有 error 就可以
Gielab查看并修改名字
再次修改一下并把密钥修改一下
在sonar上查看添加了一个xgpa
Jenkins邮件告警
登陆QQ邮箱获取授权码
1、需要开启 POPE3/SMTP 服务
2、在 jenkins 上配置的密码我们需要点击生成授权码进行使用
回到jdk
系统管理---系统设置---Jenkins Location---- 系统管理员邮件地址
-----邮件通知---SMTP服务器smtp . qq. com
---用户默认邮件后缀@qq. com
---勾选使用smtp认证
用户名密码 (生成的授权码)
---勾选使用ssl
--- smtp端口 465
---勾选通过发送测试邮件测试配置
配置web- demo项目---构建后操作- --添加E -mail Notification---Recipient收件 人地址
---- Editable Email Notification---Project From填写项目名称----Project Recipient Lis t收件人邮箱地址-
Triggers---add Triggers----always-- Send To只保留Recipient List
失败邮件
测试:关闭git(失败邮件)
gitlab-ctl stop
成功邮件
测试:成功邮件
启动gitlab-ctl start
名称栏目:jenkins代码管理
链接分享:http://scpingwu.com/article/ijcgce.html