本文基于已经构建好的jenkins自动化平台,添加sonarqube质量检测平台,本文主要展示sonar环境安装以及接入jenkins的操作(同一台机器)

jenkins自动化平台搭建,请参考连接文章,https://blog.51cto.com/superleedo/2376664

sonarqube介绍

SonarQube是一个开源平台, 用于管理源代码的质量,它不仅是一个质量数据报告工具,更是代码质量管理平台。
它通过插件的形式来管理代码,它支持的语言包括:Java,PHP,C#,C,Python等多种开发语言。
七个维度来检测代码质量
1.代码标准
通过PMD,CheckStyle,Findbugs等代码规则检测工具规范代码的编写;
2.潜在的缺陷
通过PMD,CheckStyle,Findbugs等代码规则检测工具检测出潜在的缺陷;
3.代码复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这使得开发热女难以理解它们,且如果没有自动化的单元测试,
对于程序中的任何组件的改变都将可能导致需要全面的回归测试;
4.重复
显然程序中包含大量复制粘贴的代码质量低下的,sonar可以展示源码中重复严重的地方;
5.注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅度下降;
6.单元测试
sonar可以很方便地统计并展示单元测试覆盖率;
7.架构规则
通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以展示自定义的架构规则。
通过SonarQube可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用秦高,检测耦合。

------------------------------

            系统及应用环境

------------------------------

系统环境

[root@localhost jenkins]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) 修改内核参数
vim /etc/sysctl.conf    增加修改以下参数
vm.max_map_count=262144fs.file-max=65536sysctl -p 配置生效修改系统资源限制
vim /etc/security/limits.conf ,在末尾添加如下
sonarqube   -   nofile   65536
sonarqube   -   nproc    2048

jenkins git maven环境

[root@localhost jenkins]# git --version
git version 1.8.3.1[root@localhost jenkins]# mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_201, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"[root@localhost ~]# rpm -qa|grep jenkins
jenkins-2.171-1.1.noarch

java环境(sonar必须)

[root@localhost jenkins]# java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)如果没有java环境,则执行下面命令安装
yum install java-1.8.0-openjdk.x86_64 -y
yum install java-1.8.0-openjdk*-y

mysql环境(sonar必须mysql5.6以上)

[root@localhost ~]# mysql --version
mysql  Ver 14.14 Distrib 5.6.43, for Linux (x86_64) using  EditLine wrappermysql环境安装
cd /home
yum -y install autoconf
wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.41-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-5.6.43-1.el7.x86_64.rpm-bundle.tar
yum install ./*.rpm
systemctl start mysql  此时启动后 mysql自动生成了root密码,无法登陆的
systemctl stop mysql  先停止
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &  免密码方式启动
mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD('root') where USER='root';  不执行flush privileges 退出
systemctl restart mysql 启动
mysql -uroot -proot
mysql> use mysql;
mysql> select host,user,password from user;
mysql> update user set password=password('123456') where user='root';
mysql> update user set host='%' where user='root' and host='localhost';
mysql> flush privileges;
mysql> exit
然后就可以用root 123456登陆了

创建sonar数据库与连接帐号

mysql -uroot -p123456
CREATE DATABASE sonarqube_db CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL ON sonarqube_db.* TO 'sonarqube_user'@'localhost' IDENTIFIED BY '12345678';
FLUSH PRIVILEGES;

下载与部署SonarQube

cd /usr/local/

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip

unzip sonarqube-6.7.6.zip

mv sonarqube-6.7.6 sonarqube

vim /etc/profile  增加环境变量

SONAR_HOME=/usr/local/sonarqube
export SONAR_HOME
source /etc/profile  执行生效

创建用户组

groupadd sonarqube

useradd sonarqube -g sonarqube -p sonarqube

chown -R sonarqube.sonarqube /usr/local/sonarqube/

修改sonar配置文件

vim /usr/local/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonarqube_user
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube_db?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=0.0.0.0
sonar.web.port=9000

增加服务启动脚本

vim /etc/init.d/sonar

#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.linuxhub.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.linuxhub.org)
# Description: SonarQube system (www.linuxhub.org)
### END INIT INFO
su sonarqube -lc "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh $*"

chmod 755 /etc/init.d/sonar   增加执行权限

/etc/init.d/sonar start       启动sonar   (必须是普通用户才能启动sonar,脚本中是sonarqube)

/etc/init.d/sonar stop      停止sonar

查看进程

[root@localhost ~]# netstat -lnupt |grep java
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      33214/java          
tcp6       0      0 :::9000                 :::*                    LISTEN      33669/java              
tcp6       0      0 127.0.0.1:9001          :::*                    LISTEN      33587/java                  
tcp6       0      0 127.0.0.1:32857         :::*                    LISTEN      33721/java

浏览器访问

192.168.0.88:9000

默认账号密码 admin:admin 登陆后配置安装中文插件包

sonarqube基本安装完成,下面需要安装sonar-scanner

-------------------------------------------------

下载安装sonar-scanner

cd /usr/local/

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip

unzip sonar-scanner-cli-3.3.0.1492-linux.zip

mv sonar-scanner-3.3.0.1492-linux sonar-scanner

修改配置文件

vim /usr/local/sonar-scanner/conf/sonar-scanner.properties

sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8

添加环境变量

export SONARRUNNER_HOME=/usr/local/sonar-scanner
export PATH=$SONARRUNNER_HOME/bin:$PATH

source /etc/profile

查看版本信息  sonar-scanner -v

[root@localhost ~]# sonar-scanner -v
INFO: Scanner configuration file: /usr/local/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 3.3.0.1492
INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-327.el7.x86_64 amd64

登陆sonar界面调整配置

生成令牌,jenkins配置中要用

关闭SCM --保存


jenkins界面集成sonar

安装sonar相关插件

安装后重启生效

然后系统管理--系统设置--配置sonarqube

系统管理---全局工具配置--sonar-scanner

然后调整项目的配置,增加sonarqube-scanner

配置

#key和name保持一致且在sonar下唯一
sonar.projectKey=$JOB_NAME
sonar.projectName=$JOB_NAME
#工程版本
sonar.projectVersion=1.0
#源代码目录
sonar.sources=$WORKSPACE
#分析的语言
sonar.language=java
#编码sonar.sourceEncoding=UTF-8
sonar.java.binaries=$WORKSPACE

然后执行构建,第一次构建时间比较长

查看sonar报告

可参考文章:http://www.cnblogs.com/sunyllove/p/9857462.html
https://blog.51cto.com/yanconggod/2096583
http://www.fblinux.com/?p=1155

转载于:https://blog.51cto.com/superleedo/2377688

sonarqube+jenkins 构建代码质量管理平台相关推荐

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

    1 jenkins 安装参考链接 1.1 安装jenkins [root@test-node3 ~]# yum install -y java-1.8.0 [root@test-node3 ~]# c ...

  2. Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台

    Jenkins+SonarQube6.5.5+SonarScanner2.5代码质量管理平台 简介 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar ...

  3. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube

    1.前言 上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强调代码提交之前必须找团队中经验丰富的人来审核通过后方可提交,但这一条有时候 ...

  4. Windows10 部署 Sonarqube 代码质量管理平台

    Windows10 部署 Sonarqube 代码质量管理平台 一 安装MySQL解压版 此部分参看Win10安装MySQL5.7.22 解压缩版(手动配置)方法 1.下载MySQL MySQL官网下 ...

  5. 代码质量管理平台搭建

    代码质量管理平台搭建 sonar简介 sonar是一款静态代码质量分析工具,支持Java.Python.PHP.JavaScript.CSS等25种以上的语言,而且能够集成在IDE.Jenkins.G ...

  6. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强 ...

  7. SonarQube代码质量管理平台安装与使用--转载

    原文:http://blog.csdn.net/hunterno4/article/details/11687269 Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量, ...

  8. SonarQube代码质量管理平台安装与使用

    Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaS ...

  9. SonarQube代码质量管理平台安装与配置

    1.安装说明 PS:为什么要有安装说明?本人在网上找资料的时候发现很多教程是没有交代清楚安装环境的.所以,不清楚他们的教程是否适合我的环境.明确『安装说明』方便网友了解我的配置环境,便于大家深入理解此 ...

最新文章

  1. 开源监控软件-Nagios-Rhel5.9安装手册
  2. JavaScript TreeView
  3. springmvc十五:数据输出
  4. [Black Watch 入群题]PWN 栈劫持的利用
  5. 【iCore1S 双核心板_ARM】例程十七:FSMC实验——读写FPGA
  6. java爬虫-简单爬取网页图片
  7. 君子动手不动口,阿里云喊你做云上体验官啦!
  8. 浏览器打开出现证书错误_2分钟轻松解决ie证书错误
  9. ZZULIOJ 1060:逆序数字
  10. jsp和mysql乱码
  11. 什么是暗物质?有没有理科大神解答一下啊?
  12. 虚度大一一年又如何,双非本科大三学弟连斩腾讯字节
  13. IEEE1588 同步机制
  14. 快门光圈感光度口诀_基础教程之单反设置篇:60秒让你设置好快门光圈以及感光度...
  15. Ubuntu截图快捷键
  16. BPM实例分享——金额规则大写
  17. YC创始合伙人Jessica Livingston七年经验总结:创业路上如何避开这八只拦路虎
  18. 打印后台程序没有运行,怎么办?
  19. “真香”是什么意思?
  20. java thread 匿名_Java 匿名内部类

热门文章

  1. es 中关于 term,match, text, keyword
  2. python黑白棋结课设计报告_黑白棋游戏课程设计
  3. 判断 list 集合是否含有重复对象
  4. 关于go访问rabbitmq的连接池
  5. java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题
  6. 高效实用Kafka-入门介绍
  7. 假期把技术书籍和焦虑放一边,我做了几天...
  8. java volatile 原子性_为什么volatile不能保证原子性而Atomic可以?
  9. idea高效找出全部未被使用的代码
  10. Yii-模型- criteria查找数据库方法