温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何安装部署Sonar

发布时间:2021-09-26 17:53:18 来源:亿速云 阅读:290 作者:柒染 栏目:系统运维

本篇文章给大家分享的是有关如何安装部署Sonar,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前言

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

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

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

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

关于Sonar的相关下载及文档可以移步至其官方网站。

一、部署Sonar

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

以下所有的源码包及插件都可以在此网盘链接中下载。

[root@jenkins src]# unzip sonarqube-5.6.zip 
[root@jenkins src]# mv sonarqube-5.6 /usr/local/sonarqube
[root@jenkins src]# ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin

二、安装MySQL

sonar需要使用到数据库,这里我使用MySQL数据库,如果环境中存在数据库,则无需部署,只需要创建相应的库及账号即可。

#采用RPM包的方式部署MySQL
[root@jenkins mysql]# ls        #确定当前目录下有这几个包,可以在我文章开头的链接中下载
mysql-community-client-5.7.25-1.el7.x86_64.rpm
mysql-community-common-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-server-5.7.25-1.el7.x86_64.rpm
[root@jenkins mysql]# yum localinstall mysql-community-* -y   #安装MySQL
[root@jenkins mysql]# grep password /var/log/mysqld.log     #在MySQL日志中查看数据库的root密码
2019-11-18T14:11:15.565475Z 1 [Note] A temporary password is generated for root@localhost: qzg6X)qt%MQg
#上面末尾就是MySQL的默认root密码
[root@jenkins mysql]# mysql -uroot -p'qzg6X)qt%MQg'   #登录数据库,密码需要用单引号引起来
#创建相应的库及用户
mysql> alter user 'root'@'localhost' identified by 'Ljz@123.com';
mysql> create database sonar character set utf8 collate utf8_general_ci;
mysql> grant all on sonar.* to 'sonar'@'%' identified by 'Ljz@123.com';
mysql> grant all on sonar.* to 'sonar'@'localhost' identified by 'Ljz@123.com';
mysql> flush privileges;

三、配置Sonar

[root@jenkins mysql]# cd /usr/local/sonarqube/conf/
[root@jenkins conf]# vim sonar.properties      #编辑主配置文件
sonar.jdbc.username=sonar     #定义连接数据库的用户
sonar.jdbc.password=Ljz@123.com   #指定数据库用户的密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
#用来定义连接数据库的地址及端口
sonar.web.port=9000                #指定其监听端口
#配置sonar支持中文页面及支持PHP
[root@jenkins src]# cd /usr/local/sonarqube/extensions/plugins/
[root@jenkins plugins]# cp /usr/src/sonar-l10n-zh-plugin-1.11.jar .
[root@jenkins plugins]# cp /usr/src/sonar-php-plugin-2.9-RC1.jar .
[root@jenkins conf]# sonar.sh start       #启动sonar,给它点初始化的时间
[root@jenkins conf]# tail -2 /usr/local/sonarqube/logs/sonar.log   #查看sonar日志
2019.11.18 22:26:16 INFO  ce[o.s.ce.app.CeServer] Compute Engine is up
2019.11.18 22:26:16 INFO  app[o.s.p.m.Monitor] Process[ce] is up
#当出现上面两行以“up”结尾的则表示sonar启动正常。
[root@jenkins conf]# netstat -anpt | grep 9000    #确定端口在监听
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      10655/java

client访问sonar的web界面:

如何安装部署Sonar

四、配置代码扫描功能

#配置代码扫描
[root@jenkins src]# unzip sonar-scanner-cli-3.3.0.1492-linux.zip
[root@jenkins src]# mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner
[root@jenkins src]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/local/bin/
[root@jenkins src]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/bin
[root@jenkins src]# cd /usr/local/sonar-scanner/conf/
[root@jenkins 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
sonar.jdbc.password=Ljz@123.com
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

五、测试代码扫描功能

[root@jenkins src]# unzip testalyzer-master.zip 
[root@jenkins src]# cd testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/
[root@jenkins 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代码
[root@jenkins php-sonar-runner-unit-tests]# pwd    #确定在当前路径
/usr/src/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
[root@jenkins php-sonar-runner-unit-tests]# sonar-scanner    #进行测试
#测试js代码
[root@jenkins php-sonar-runner-unit-tests]# cd ../../javascript/javascript-sonar-runner
[root@jenkins javascript-sonar-runner]# sonar-scanner      #进行测试

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

如何安装部署Sonar

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

如何安装部署Sonar

六、配置Jenkins开启Sonar

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

1、依次点击:系统管理===》插件管理===》高级,然后下拉页面:

下载我提供的插件,按照以下顺序依次添加,若是在线安装,依次搜索“SonarQube Scanner”、“Gerrit Trigger”、"Sonar Gerrit Plugin"进行安装即可:

如何安装部署Sonar

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

如何安装部署Sonar

如何安装部署Sonar

3、依次点击:系统管理===》全局工具配置,然后单击如下:

如何安装部署Sonar

如何安装部署Sonar

4、进入上个博文中构建的项目,然后点击进入,如下:

如何安装部署Sonar

如何安装部署Sonar

如何安装部署Sonar

在终端复制一下代码:

[root@jenkins sonar-scanner]# cd /usr/src/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
#切换至此路径
[root@jenkins 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”的值):

如何安装部署Sonar

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

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

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

如何安装部署Sonar

7、配置Jenkins邮件报警

这里先附一个所有操作的截图,因为我的做完以后,有些小问题,已经凌晨十二点半了,懒的排错了,可以结合下面这张图做邮件报警:

如何安装部署Sonar

开始配置邮件报警:

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

如何安装部署Sonar

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

如何安装部署Sonar

配置项目,如下:

如何安装部署Sonar

如何安装部署Sonar

增加构建后的操作:
如何安装部署Sonar

其实是增加两个构建后的操作,如下(最后我的邮件发送报警有问题,建议下面的E-mail Notification和Editable Email Notification依次添加,不要这两个一起添加了):

如何安装部署Sonar

然后下拉页面,点击如下:

如何安装部署Sonar

如何安装部署Sonar

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

以上就是如何安装部署Sonar,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI