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

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

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

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

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

一、部署Sonar

接下来的配置是基于博文部署Jenkins+Gitlab实现持续集成的环境进行部署
所有的源码包及插件都可以在此链接(提取码: t976)下载

[[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数据库,如果环境中存在数据库,则无需部署,只需要创建相应的库及账号即可

#采用RPM包的方式部署MySQL
[[email protected] ~]# mkdir mysql
[[email protected] ~]# cd mysql/
[[email protected] mysql]# rz
[[email protected] mysql]# ls            # 确定有如下几个包
mysql-community-client-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-common-5.7.25-1.el7.x86_64.rpm
mysql-community-server-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-5.7.25-1.el7.x86_64.rpm
[[email protected] mysql]# yum -y localinstall mysql-community-*       # 安装MySQL
[[email protected] mysql]# systemctl start mysqld         # 启动
[[email protected] mysql]# netstat -anput | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      11411/mysqld
[[email protected] mysql]# grep password /var/log/mysqld.log        # 在MySQL日志中查看登陆密码
2020-03-19T17:29:37.381630Z 1 [Note] A temporary password is generated for [email protected]: DfkgCtPsu5:4
#上面末尾就是MySQL的默认root密码
[[email protected] mysql]# mysql -u root -p‘DfkgCtPsu5:4‘
mysql> alter user ‘root‘@‘localhost‘ identified by ‘[email protected]‘;
mysql> create database sonar character set utf8 collate utf8_general_ci;
mysql> grant all on sonar.* to ‘sonar‘@‘%‘ identified by ‘[email protected]‘;
mysql> grant all on sonar.* to ‘sonar‘@‘localhost‘ identified by ‘[email protected]‘;
mysql> flush privileges;

三、配置Sonar

[[email protected] mysql]# cd /usr/local/sonarqube/conf/
[[email protected] conf]# sed -i ‘s/#sonar.jdbc.username=/sonar.jdbc.username=sonar/g‘ sonar.properties
#定义连接数据库的用户
[[email protected] conf]# sed -i ‘s/#sonar.jdbc.password=/[email protected]/g‘ sonar.properties
#指定数据库用户的密码
[[email protected] conf]# echo ‘sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance‘ >> sonar.properties
#用来定义连接数据库的地址及端口
[[email protected] conf]# sed -i ‘s/#sonar.web.port=9000/sonar.web.port=9000/g‘ sonar.properties
#配置sonar支持中文页面及支持PHP
[[email protected] conf]# cd /usr/local/sonarqube/extensions/plugins/
[[email protected] plugins]# cp ~/sonar-l10n-zh-plugin-1.11.jar ./
[[email protected] plugins]# cp ~/sonar-php-plugin-2.9-RC1.jar ./
[[email protected] plugins]# sonar.sh start            #启动sonar,给它点初始化的时间
[[email protected] conf]# tail -2 /usr/local/sonarqube/logs/sonar.log              #查看sonar日志
2020.03.20 02:00:29 INFO  ce[o.s.ce.app.CeServer] Compute Engine is up
2020.03.20 02:00:29 INFO  app[o.s.p.m.Monitor] Process[ce] is up
#当出现上面两行以“up”结尾的则表示sonar启动正常。
[[email protected] conf]# netstat -anput | grep 9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      52610/java   

client访问sonar的web界面:

四、配置代码扫描功能

#配置代码扫描
[[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] ~]# cd /usr/local/sonar-scanner/conf/
[[email protected] conf]# egrep -v ‘^#|^$‘ sonar-scanner.properties            # 修改配置文件至如下
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
#以下是从sonar的主配置文件中复制:/usr/local/sonarqube/conf/sonar.properties中复制过来的,用于连接数据库
sonar.jdbc.username=sonar
[email protected]
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          #编码格式
#测试PHP代码
[[email protected] php-sonar-runner-unit-tests]# pwd           # 确定当前路径
/root/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 ../../javascript/javascript-sonar-runner
[[email protected] javascript-sonar-runner]# sonar-scanner 

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

点击进入后可以看到详细信息:

六、配置Jenkins开启Sonar

登录到Jenkins的web界面,需要安装插件,有在线安装及离线安装两种方式,我这里选择离线安装,可以自行进行在线安装的方式
1、依次点击:系统管理===>>插件管理===>>高级,然后下拉页面:
下载我提供的插件,按照以下顺序依次添加,若是在线安装,依次搜索“SonarQube Scanner”、“Gerrit Trigger”、"Sonar Gerrit Plugin"进行安装即可:

2、依次点击:系统管理===>>系统设置,然后配置如下:


切记要点保存
3、依次点击:系统管理===>>全局工具配置,然后单击如下:


4、进入构建的项目,然后点击进入,如下:



在终端复制一下代码:

[[email protected] /]# cd ~/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/
[[email protected] php-sonar-runner-unit-tests]# egrep -v ‘^#|^$‘ sonar-project.properties
#复制如下代码
sonar.projectKey=org.sonarqube:php-ut-sq-scanner
sonar.projectName=PHP :: PHPUnit :: SonarQube Scanner
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、然后在图中粘贴复制的代码(为了方便区分测试结果,建议修改“sonar.projectKey”的值):

6、回到终端,向gitlab提交代码,即可实现自动sonar扫描

[[email protected] php-sonar-runner-unit-tests]# pwd
/root/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
[[email protected] php-sonar-runner-unit-tests]# cp -r * ~/test1/
#将测试代码复制到本地git库(如果没有本地git库,可以再次克隆一下)
[[email protected] php-sonar-runner-unit-tests]# cd ~/test1/           # 进入到本地git库
[[email protected] test1]# rm -rf sonar-project.properties              #删除这个文件,不需要使用它来给我们指定要测试的代码了
#因为我们在刚才的web界面已经将其配置文件写在了web界面。优先使用web界面配置的检测代码。
#不删除这个文件也行
#然后提交到远端的gitlab库
[[email protected] test1]# git add *
[[email protected] test1]# git commit -m "test sonar"
[[email protected] test1]# git push origin master

当提交到远端gitlab库后,即可看到sonar的web界面已经进行了代码扫描,并且显示出了扫描结果,如下:

7、配置Jenkins邮件报警
开始配置邮件报警:
在Jenkins的web界面依次点击:系统管理===>>系统设置,然后在下面输入系统管理员的邮箱地址并保存:

再次点击:系统管理===>>系统设置

配置项目,如下:




在此点击项目>>配置




至此,邮箱报警就配置完成了,此时,可以在控制台关闭gitlab或者手动构建代码,测试是否可以收到报警邮件。

原文地址:https://blog.51cto.com/14227204/2480387

时间: 2024-10-29 19:08:31

持续集成之代码质量管理———Sonar的相关文章

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

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

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

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

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

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

通过静态分析和持续集成 保证代码的质量 (PRQA )2

续上.... 第二章 部署示例:Jenkins and PRQA 工具 第一节 Jenkins 作为持续集成系统 现在有很多持续集成工具,既有免费的,也有商业的.最近的研究显示,Jenkins正发展成为最受欢迎的持续集成工具.Jenkins是Hudson持续集成系统的一个分支,但是Jenkins拥有最活跃的生态系统. 在MIT许可下,Jenkins是免费的,但是和一些开源软件一样,Jenkins也有付费版本,并会提供技术支持.虽然Jenkins是一个开源项目,但是对核心代码所作的所有修改,都由核

使用Jenkins持续集成Vue项目配置Sonar任务

背景 关于SonarQube的配置与安装就不再赘述 各位可以自己寻找相关文档 前置条件 SonarQube的js插件版本高于3.1 有条件的小伙伴可以查看https://twitter.com/SonarQube/status/878165039840194561 我们升级插件版本到最新 可以看到 步骤 Jenkins安装SonarQube插件 安装 SonarQube Plugin插件,系统管理?插件管理—>可选插件—>SonarQube Plugin安装即可 配置对应参数  系统管理系统设

持续集成与自动化部署 - 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

持续集成--Jenkins--1

持续集成之Jenkins安装部署 1.安装JDK Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK. [[email protected] ~]# yum install -y java-1.8.0 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mir

jenkins - 持续集成

实现接口自动化持续集成操作,具体操作步骤如下: windows - jenkins简单安装配置: 1. 下载最新版本的jenkins,jenkins官网地址:http://Jenkins-ci.org/ 2. 运行jenkins,找到jenkins.war所在目录,执行命令:java -jar jenkins.war 3. jenkins启动成功后,访问jenkins,地址:http://127.0.0.1:8080/ 4. 访问jenkins的最初页面如下: 5. 输入密码后,进入安装界面 6

持续集成:采用Xvfb+Selenium+Firefox搭建linux服务器下的自动化测试环境

自动化测试属于软件测试的一部分,QTP.LoadRunner等都可以编写自动化测试脚本,但是QTP.LoadRunner等工具毕竟还需要人工操作,在持续集成思想下,软件应该自动发布并且自动测试,这样可以加快软件的开发测试周期,及时发现软件错误.持续集成应该包括代码的自动化检查.版本的自动化发布.以及程序的自动化测试.在自动化测试之外,再辅助以人工测试. 在我负责的项目中,代码自动化检查采用了SVN+CheckStyle实现,前文已有介绍,版本自动化发布采用了Jenkins或者crontab+An