sonar+Jenkins 构建代码质量自动化分析平台

[root@c7-node1 ~]# cd /data/service/sonar/sonarqube-6.6/conf/
[root@c7-node1 conf]# cp sonar.properties{,.bak}
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

2.3.sonarQube Scanner 安装

cd /data/package/
wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.8.zip
unzip sonar-scanner-2.8.zip -d /data/service/sonar/
ln -s /data/service/sonar/sonar-scanner-2.8/bin/sonar-scanner /usr/bin/sonar-scanner

修改配置文件

[root@c7-node1 ~]# cd /data/service/sonar/sonar-scanner-2.8/conf/
[root@c7-node1 conf]# cp sonar-scanner.properties{,.bak}
[root@c7-node1 conf]# vim sonar-scanner.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8

2.4.sonarQube runner 安装

cd /data/service/
wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
unzip sonar-runner-dist-2.4.zip -d /data/service/sonar/
ln -s /data/service/sonar/sonar-runner-2.4/bin/sonar-runner /usr/bin/sonar-runner

修改配置文件

[root@c7-node1 ~]# cd /data/service/sonar/sonar-runner-2.4/conf/
[root@c7-node1 conf]# cp sonar-runner.properties{,.bak}
[root@c7-node1 conf]# vim sonar-runner.properties
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.username=sonar
sonar.jdbc.password=123456

添加环境变量

[root@c7-node1 ~]# vim /etc/profile.d/sonar.sh
export SONAR_HOME=/data/service/sonar/sonarqube-6.6
export SONAR_RUNNER_HOME=/data/service/sonar/sonar-runner-2.4
export PATH= S O N A R R U N N E R H O M E / b i n : SONAR_RUNNER_HOME/bin: SONARRUNNERHOME/bin:PATH
[root@c7-node1 ~]# source /etc/profile.d/sonar.sh

2.5.启动sonar

注意:sonar默认不允许使用root用户启动,所以我们需要创建sonar用户,并以sonar用户启动

[root@c7-node1 ~]# useradd sonar
[root@c7-node1 ~]# chown -R sonar:sonar /data/service/sonar/
[root@c7-node1 ~]# su sonar
[sonar@c7-node1 root]$ /etc/init.d/sonar start

sonar启动成功后,访问服务器的9000端口即可打开sonar的web界面,默认账号和密码为admin:admin注意:sonar默认不允许使用root用户启动,所以我们需要创建sonar用户,并以sonar用户启动。

出现如下页面说明sonar安装成功,如果sonar安装失败,则根据日志报错内容进行排查即可。
在这里插入图片描述

3.Sonar 插件使用及汉化

Sonar可以通过安装插件的方式来扩展自己的功能,具体信息可以访问sonar的插件库,里面提供了众多代码分析插件,认证授权插件,外部分析插件,语言插件,可视化/报告插件等。下面我们就通过安装sonar等中文插件来演示sonar插件的安装。
sonar的插件库:https://docs.sonarqube.org/display/PLUG/Plugin+Library
3.1.后台安装中文插件
登陆sonar后,在Administration–>System–>Update Center–>Available中搜索Chinese就可以看到中文插件包,点击install即可安装。但是安装时间非常慢,甚至还会失败,建议还是手动安装。
在这里插入图片描述
3.2.手动安装插件
中文插件github地址:https://github.com/SonarQubeCommunity/sonar-l10n-zh
我们把中文插件源码下载到我们本地,并且切换到相应的版本(我安装的sonar6.6版本,需要切换到1.18tag),进行编译

git clone https://github.com/SonarQubeCommunity/sonar-l10n-zh.git
cd sonar-l10n-zh/
git checkout sonar-l10n-zh-plugin-1.18
mvn package
cp target/sonar-l10n-zh-plugin-1.18-SNAPSHOT.jar /data/service/sonar/sonarqube-6.6/extensions/plugins/

复制中文插件到sonar插件目录后,重启sonar生效
重启sonar后,访问web验证效果,可以看到汉化成功了

这样我们的中文插件就完成安装了,如果需要安装其它的插件,可以直接访问官方插件库进行寻找安装。

4.Sonar 分析Python代码小例

Sonar 安装汉化完成就可以用来实际的分析代码了,我准备了一个分析python代码的小例子用来演示sonar分析代码过程。
例:我的python项目是使用3.0版本开发,但是使用了2.0的语法,我们试试sonar能不能分析出来(sonar内置了python 3.0分析插件,我们无须额外安装)。演示脚本就一个,功能为发送邮件,其中的print为2.0语法,在3.0环境下是无法正常运行的,我们通过分析这个脚本,来演示sonar的分析代码过程。

[sonar@c7-node1 ~]$ cat python_test/sendEmail.py
#!/usr/bin/python

-- coding: UTF-8 --

import sys
import smtplib
from email.mime.text import MIMEText
from email.header import Header

第三方 SMTP 服务

mail_host=“xxx” #设置服务器
mail_user=“xxx” #用户名
mail_pass=“xxx” #口令

sender = ‘bigdata_monitor@xueleyun.com’
receivers = sys.argv[1]

content=sys.argv[3]
message = MIMEText(content, ‘plain’, ‘utf-8’)

message[‘From’] = Header(sender, ‘utf-8’)
message[‘To’] = Header(receivers, ‘utf-8’)

subject = sys.argv[2]
message[‘Subject’] = Header(subject, ‘utf-8’)

try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print “邮件发送成功”
except smtplib.SMTPException:
print “Error: 无法发送邮件”

在项目根目录下创建一个配置文件sonar-project.properties,项目如果在sonar中没有创建,首次分析会自动根据填入到配置文件的名称和key自动创建

[sonar@c7-node1 ~]$ cat python_test/sonar-project.properties
sonar.projectKey=python_test
sonar.projectName=python_test
sonar.projectVersion=1.0
sonar.sources=.
sonar.sourceEncoding=UTF-8

在项目根目录下运行下面的命令启动分析

sonar-scanner

扫描完成之后,我们再次打开web页面就可以看到,我们的sonar根据配置文件填入的内容自动创建了python_test的项目,并且分析出来了两个bug
在这里插入图片描述
点击项目名称,可以进入到项目,查看项目的详细分析信息
在这里插入图片描述
点击bugs,可以看到具体的bug信息,我们可以看到bug的信息为python print语句有问题
在这里插入图片描述
sonar不仅可以找到bug,而且还会告诉我们我们这样为什么错误,还会给出正确示例子;
查看bug具体信息:说print语句在python3.0中被删除。应该使用内置函数,并且给出了正确实例。
在这里插入图片描述
在这里插入图片描述

5.Sonar 集成Jenkins使用

5.1.设置sonar中的令牌
用 admin 用户登陆 sonarQube,【配置】–>【权限】 –>【用户】
在这里插入图片描述
在这里插入图片描述
5.2.Jenkins 安装sonar相关插件
安装红框中的两个插件即可
在这里插入图片描述
5.3.Jenkins配置sonar插件
点击【系统管理】 –> 【系统设置】 配置 Sonar认证信息,设置完保存
在这里插入图片描述
点击【系统管理】 –> 【全局工具配置】,配置sonar扫描器信息
在这里插入图片描述
5.4.Jenkins job 中配置sonar
为了操作方便我这里就不把刚才的代码放到git中进行拉取了,而且直接配置工作目录为刚才的python_test目录,生产环境你可以根据公司实际情况,选择是从svn或者git获取需要分析的代码
在这里插入图片描述
增加一个构建步骤,选择Execute SonarQube Scanner,选择一个用于分析的jdk,并填入Analysis properties为刚才手动扫描的sonar-project.properties配置文件即可
在这里插入图片描述
这样我们Jenkins中sonar的部分就配置完了,我们可以保存job进行构建,构建完成,可以通过构建历史,直接跳转到sonar到分析页面,如下图所示,并附Jenkins job 完整内容及构建视频。
在这里插入图片描述

6.后记

本文到这里就结束了,虽然sonar的一些内容,比如项目管理,安全,监控,邮件通知等内容文章中并没有提及,但我认为汉化后的sonar管理还是比较方便易操作的,这里大家可以自己登录到后台进行摸索。
还有就是sonar+Jenkins的这个job并不是很全面,缺少代码自动获取和发布的配置,但是sonar的配置还是正确的,你只需要把他加入到你代码获取后的第一个操作,或者编译之前的操作均可。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-OYXSytVt-1712914332710)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值