使用 Sonar 进行代码质量管理及邮件报警

一、Sonar 概述

Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析性工具,以及持续集成工具。

与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

Sonar 的功能就是来检查代码是否有 BUG。除了检查代码是否有 bug 还有其他的功能,比如说:你的代码注释率是多少,代码有一些建议,编写语法的建议。所以称之为质量管理。

Sonar 的相关下载和文档可以在下面的链接中找到:http://www.sonarqube.org/downloads/
需要注意最新版的 Sonar 需要至少 JDK 1.8 及以上版本。

二、部署Sonar

注意:接下来的配置需要基于博文Jenkins+Gitlab实现持续集成的环境进行部署的。

部署环境中所需的软件包及插件均可通过此链接进行下载。
关于Sonar所需的插件也可通过https://docs.sonarqube.org/display/PLUG 该网址进行下载!

[[email protected] ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-5.6.zip
[[email protected] ~]# unzip sonarqube-5.6.zip
[[email protected] ~]# mv sonarqube-5.6 /usr/local/sonarqube
[[email protected] ~]# ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin

三、安装MySQL数据库

sonar需要使用数据库,MySQL、Oracle、SQL server都是支持的,本次博文采用MySQL数据库。如果环境已经存在MySQL数据库,那么就无需再次部署了,创建相应的数据库及用户即可!

为了简单、快速的部署Mysql数据库,采用脚本的方式安装Mysql数据库,下载一键安装mysql

友情提示:sonar 好像不支持 mysql 5.5,建议安装mysql 5.6或更高的版本,提供的脚本安装的是mysql5.7的版本!

[[email protected] ~]# ls mysql*
mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  mysql.sh
[[email protected] ~]# sh mysql.sh
Starting MySQL.. SUCCESS!
mysql: [Warning] Using a password on the command line interface can be insecure.
[[email protected] ~]# mysql -u root -p123               #脚本提供的root的密码是123
#登录mysql数据库
mysql> create database sonar character set utf8 collate utf8_general_ci;
mysql> grant all on sonar.* to ‘sonar‘@‘%‘ identified by ‘123.com‘;
mysql> grant all on sonar.* to ‘sonar‘@‘localhost‘ identified by ‘123.com‘;
mysql>  flush privileges; 

三、配置Sonar

[[email protected] ~]# vim /usr/local/sonarqube/conf/sonar.properties
#编辑sonar的主配置文件
sonar.jdbc.username=sonar
sonar.jdbc.password=123.com                   #指定连接数据库使用的用户及密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerforman
#定义连接mysql数据库的地址及端口(默认存在去除注释即可)
sonar.web.host=0.0.0.0
sonar.web.port=9000                # 定义Sonar提供Web页面监听的IP地址和端口
#接下来配置sonar支持中文页面以及支持PHP语言
[[email protected] ~]# cd /usr/local/sonarqube/extensions/plugins/
[[email protected] plugins]# ls *.jar            #确保这个目录下有这两个jar包
sonar-l10n-zh-plugin-1.11.jar  sonar-php-plugin-2.9-RC1.jar
[[email protected] ~]# sonar.sh start                 #启动sonar
[[email protected] ~]# tail -2 /usr/local/sonarqube/logs/sonar.log
2020.02.13 14:59:03 INFO  ce[o.s.ce.app.CeServer] Compute Engine is up
2020.02.13 14:59:03 INFO  app[o.s.p.m.Monitor] Process[ce] is up
#确保sonar的日志出现以上两行内容
[[email protected] ~]# ss -lnt | grep 9000
LISTEN     0      25           *:9000                     *:*
#确保sonar的端口已经在监听

访问sonar的web页面,如下:


四、配置Sonar实现代码扫描

[[email protected] ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
[[email protected] ~]# unzip sonar-scanner-cli-3.3.0.1492-linux.zip
[[email protected] ~]# mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner
[[email protected] ~]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/local/bin/
[[email protected] ~]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/bin
[[email protected] ~]# vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
#以下是从sonar的主配置文件中复制:/usr/local/sonarqube/conf/sonar.properties中复制过来的,用于连接数据库
sonar.jdbc.username=sonar
sonar.jdbc.password=123.com
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

五、测试代码扫描功能

[[email protected] ~]# unzip testalyzer-master.zip     #该软件包可从博文开头连接中获取
[[email protected] ~]# cd testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/
[[email protected] php-sonar-runner-unit-tests]# cat sonar-project.properties
#看一下下面的文件中都包含了些什么
sonar.projectKey=org.sonarqube:php-ut-sq-scanner     #自定义秘钥,如果秘钥一样,就会自动覆盖之前的测试结果
sonar.projectName=PHP :: PHPUnit :: SonarQube Scanner        #web界面显示的名称
sonar.projectVersion=1.0      #版本
sonar.sources=src        #软件包存放路径
sonar.tests=tests       #测试路径
sonar.language=php        #要测试的语言
sonar.sourceEncoding=UTF-8          #编码格式
sonar.php.coverage.reportPath=reports/phpunit.coverage.xml
sonar.php.tests.reportPath=reports/phpunit.xml
#也就是说在项目里面必须有这个配置文件才可以进行扫描

#测试PHP代码
[[email protected] php-sonar-runner-unit-tests]# pwd    #确定在当前路径
/usr/src/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
[[email protected] php-sonar-runner-unit-tests]# sonar-scanner    #进行测试
#测试js代码
[[email protected] php-sonar-runner-unit-tests]# cd /root/testalyzer-master/projects/languages/javascript/javascript-sonar-runner
[[email protected] javascript-sonar-runner]# sonar-scanner      #进行测试

当执行完成对js及PHP的测试后,即可在sonar的web界面看到如下内容:

点击之后即可查看详细信息,如图:

六、配置Jenkins开启Sonar

登录到Jenkins的web界面,需要安装插件,有在线安装及离线安装两种方式,我这里选择离线安装,可以自行进行在线安装的方式。

1)依次点击:系统管理——>插件管理——>高级,然后下拉页面:

下载所需插件按照“sonar”——>“gerrit-trigger”——>“sonar-gerrit”进行安装即可,在线安装顺序:“SonarQube Scanner”——>“Gerrit Trigger”——>"Sonar Gerrit Plugin"
如图:

2)依次点击:系统管理——>系统设置,配置如下:


3)依次点击:系统管理——>全局工具配置,然后下拉页面:


4)进入上篇博文构建的项目中,如下:



为了便于区分,输入以下代码:

sonar.projectKey=web-demo
sonar.projectName=web-demo
sonar.projectVersion=1.0
sonar.sources=src
sonar.tests=tests
sonar.language=php
sonar.sourceEncoding=UTF-8
sonar.php.coverage.reportPath=reports/phpunit.coverage.xml
sonar.php.tests.reportPath=reports/phpunit.xml   

5)回到终端,向gitlab提交代码,即可实现Sonar自动扫描

[[email protected] ~]# cp -r testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/* test01/
[[email protected] ~]# cd test01/
[[email protected] test01]# git add .
[[email protected] test01]# git commit -m "test sonar"
[[email protected] test01]# git push origin master

如图:

如果没有出现的话,建议上Jenkins页面查看是否构建成功!

七、配置Jenkins实现邮件报警

1)获取邮箱授权码

本次以QQ邮箱为例:




2)配置邮件报警:

在Jenkins的web界面依次点击:系统管理——>系统设置,然后下拉输入系统管理员的邮箱地址并保存:

下拉列表,继续填写!

3)配置项目






4)测试

重启gitlab服务,重新构建项目,如下:

[[email protected] ~]# gitlab-ctl restart

如图:

收到的邮件如下:

————————————本文到此为止,感谢阅读————————————

原文地址:https://blog.51cto.com/14157628/2470940

时间: 2024-10-16 16:34:41

使用 Sonar 进行代码质量管理及邮件报警的相关文章

Sonar——代码质量管理平台

Sonar——代码质量管理平台 一.基本认识 Sonar (SonarQube)是一个开源平台,用于管理源代码的质量. Sonar 不只是一个质量数据报告工具,更是代码质量管理平台.通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd.checkstyle.findbugs.Jenkins.通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理.同时 Sonar 还对大量的持续集

SonarQube代码质量管理平台比较好的搭建和使用资料

http://www.voidcn.com/blog/lidujun1028/article/p-3831235.html Sonar (SonarQube)是一个开源平台,用于管理源代码的质量.Sonar 不只是一个质量数据报告工具,更是代码质量管理平台.支持的语言包括:Java.PHP.C#.C.Cobol.PL/SQL.Flex 等. 主要特点: 代码覆盖:通过单元测试,将会显示哪行代码被选中 改善编码规则 搜寻编码规则:按照名字,插件,激活级别和类别进行查询 项目搜寻:按照项目的名字进行

持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知

一:Sonar是什么?Sonar 是一个用于代码质量管理的开放平台,通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如FindBugs,PMD等)直接显示在Web页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理.在对其他工具的支持方面,Sonar 不仅提供了对

持续集成之代码质量管理——Sonar

前言 Sonar是一个用于代码质量管理的开放平台,通过插件机制,Sonar可以集成不同的测试工具.代码分析工具以及持续集成工具.与持续集成工具(如Hudson/Jenkins等)不同,Sonar并不是简单地把不同代码检查结果(例如:FindBugs.PMD等)直接显示在web UI界面上,而是通过不同的插件对这些结果再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理. 在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Ecl

持续集成之代码质量管理———Sonar

Sonar是一个用于代码质量管理的开放平台,通过插件机制,Sonar可以集成不同的测试工具.代码分析工具以及持续集成工具.与持续集成工具(如Hudson/Jenkins等)不同,Sonar并不是简单地把不同代码检查结果(例如:FindBugs.PMD等)直接显示在web UI界面上,而是通过不同的插件对这些结果再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理. 在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclips

持续集成之代码质量管理-Sonar [三]

Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理. Sonar介绍 Sonar 是一个用于代码质量管理的开放平台.

SonarLint(Sonar) 代码质量管理

Sonar是什么? Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测 Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题 1. 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 2. 潜在的缺陷 sonar可以通过PMD,Chec

持续集成与自动化部署 - jenkins & sonar代码质量管理平台 部署和基础使用(五)

1 jenkins 安装参考链接 1.1 安装jenkins [[email protected] ~]# yum install -y java-1.8.0 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo [[email protected] yum.repos.d]# rpm --import

持续集成之代码质量管理 Sonar(五)

一.Sonar 介绍 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理. 在对其他工具的支持方面,Sonar 不仅提