1.sonar 介绍
Sonar 是一个用于管理代码质量的开源工具,可以分析代码中的bug和漏洞以及Code Smells,支持20多种编程语言的检测,如java,c/c++,python,PHP等语言,当前有超过85000家组织在使用sonar。Sonar可以与DevOps工具链完全整合,可以与大多数构建工具进行内置集成,与Jenkins,TFS / VSTS,TeamCity,Bamboo等持续整合引擎轻松集成,支持众多源代码管理配置工具,如git,svn,cvs等。@H_502_8@官方地址:https://www.sonarqube.org/@H_502_8@早在2007年,当创建第一行代码时,Sonar的创始人就梦想有一天能够为每个开发人员提供测量其项目代码质量的能力。他的座右铭:“持续检测必须成为持续整合的主流”。@H_502_8@本文的目的就是安装一个sonar,并集成到Jenkins中,实现代码的一个持续质量监测。
2.sonar 安装
2.1.安装环境介绍
注意:sonar服务器至少需要2G的内存才能有效运行,而操作系统则需要1GB的可用内存。
CREATE DATABASE sonar CHaraCTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2.2.sonarQube安装
cd /data/package/
wget https://sonarsource.bintray.com/distribution/sonarqube/sonarqube-6.6.zip
mkdir /data/service/sonar/
unzip sonarqube-6.6.zip -d /data/service/sonar/
配置启动脚本:
[root@c7-node1 ~]# cat /etc/init.d/sonar
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# required-Start: $network
# required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*
授权启动脚本执行权限,并配置路径
chmod +x /etc/init.d/sonar
ln -s /data/service/sonar/sonarqube-6.6/bin/linux-x86-64/sonar.sh /usr/bin/sonar
chkconfig sonar on
[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=$SONAR_RUNNER_HOME/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用户启动。@H_502_8@
@H_502_8@
3.sonar 插件使用及汉化
Sonar可以通过安装插件的方式来扩展自己的功能,具体信息可以访问sonar的插件库,里面提供了众多代码分析插件,认证授权插件,外部分析插件,语言插件,可视化/报告插件等。下面我们就通过安装sonar等中文插件来演示sonar插件的安装。@H_502_8@sonar的插件库:@L_404_1@@H_502_8@3.1.后台安装中文插件@H_502_8@登陆sonar后,在Administration–>System–>Update Center–>Available中搜索Chinese就可以看到中文插件包,点击install即可安装。但是安装时间非常慢,甚至还会失败,建议还是手动安装。@H_502_8@
@H_502_8@
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生效@H_502_8@重启sonar后,访问web验证效果,可以看到汉化成功了@H_502_8@
@H_502_8@
[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 = '[email protected]'
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
@H_502_8@
@H_502_8@
5.sonar 集成Jenkins使用
5.1.设置sonar中的令牌@H_502_8@用 admin 用户登陆 sonarQube,【配置】–>【权限】 –>【用户】
6.后记
本文到这里就结束了,虽然sonar的一些内容,比如项目管理,安全,监控,邮件通知等内容文章中并没有提及,但我认为汉化后的sonar管理还是比较方便易操作的,这里大家可以自己登录到后台进行摸索。@H_502_8@还有就是sonar+Jenkins的这个job并不是很全面,缺少代码自动获取和发布的配置,但是sonar的配置还是正确的,你只需要把他加入到你代码获取后的第一个操作,或者编译之前的操作均可。
文章系作者原创投稿。作者:西门飞冰,一名90后it男,一直在北京工作,热爱运动,热爱冒险,热爱旅行。 原文地址:http://www.fblinux.com/?p=1155。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。