Dubbo入门到精通学习笔记(五):持续集成管理平台之sonarqube代码质量管理平台的介绍与安装
SonarQube的介绍
SonarQube是一个管理代码质量的开放平台。
可以从七个维度检测代码质量(为什么要用SonarQube):
(1) 复杂度分布(complexity):代码复杂度过高将难以理解、难以维护
(2) 重复代码(duplications):程序中包含大量复制粘贴的代码是质量低下的表现 (3) 单元测试(unit tests):统计并展示单元测试覆盖率
(4) 编码规范(coding rules):通过Findbugs,PMD,CheckStyle等规范代码编写
(5) 注释(comments):少了可读性差,多了看起来费劲
(6) 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
(7) 结构与设计(architecture & design):依赖、耦合等
Sonar 可以集成不同的测试工具、代码分析工具、持续集成工具、IDE。
Sonar通过对代码质量分析结果数据进行再加工处理,通过量化的方式来度量代码质量的变化,从而可以方便地对工程进行代码质量管理。 支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。
SonarQube平台的组成:
(1) 数据库:存放SonarQube的配置数据、代码质量的快照数据
(2) Web服务:用于查看SonarQube的配置数据、代码质量的快照数据
(3) 分析器:对项目代码进行分析,生成质量结果数据并存入数据库中
(分析器有多种,sonarQube Runner(通用的)、SonarQube Ant Task(用ank继承的项目给通过这个),我们选用 SonarQube Maven Plugin)
source code(代码)传入Analysers(分析器)>Analysers通过该database拿到分析规则,回来分析>将分析后的数据传给database保存起来==>通过server(web管理界面)==>查看最终质量管理的结果
当然eclipse等ide中也能集成sonar
SonarQube的安装
安装简介
安装环境要求说明:
http://docs.sonarqube.org/display/SONAR/Requirements
本教程安装环境:
(1) CentOS 6.6
(2) Oracle JDK 7u72
(3) MySQL5.1
(4) SonarQube-4.5.4 (LTS)
安装步骤:
http://docs.sonarqube.org/display/SONAR/Installing
详细安装过程
IP:192.168.4.221
环境:CentOS 6.6、JDK7、MySQL5.1 、SonarQube-4.5.4(LTS) root 用户操作
准备工作:已安装 JDK7 并配置好了环境变量
1 、安装 MySQL5.1
(可参考前面 SVN 管理平台的 MySQL 安装步骤,如果已安装则无需安装)
# rpm -qa | grep mysql
## 查看该操作系统上是否已经安装了 mysql 数据库, 有的话,可以通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉
# yum install mysql-server mysql mysql-devel
# service mysqld start
# chkconfig --list | grep mysqld
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
用上面的命令查看到 MySQL 并没有设置开机启动,所以需要设置开机启动
# chkconfig mysqld on
为了方便远程管理,防火墙中打开 3306 端口
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
重启防火墙,使端口配置生效
# service iptables restart
设置 MySQL 数据库 root 用户的密码:
# mysqladmin -u root password 'wusc.123'
登录数据库:
# mysql -u root -p
MySQL 授权远程访问(先用 root 登录 mysql)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'wusc.321' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
2、配置 MySQL
结合 SonarQube,MySQL 数据库最好使用 InnoDB 引擎,可提高性能
。 看你的 mysql 现在已提供什么存储引擎:
mysql> show engines;
看你的 mysql 当前默认的存储引擎:
mysql> show variables like '%storage_engine%';
修改 MySQL 存储引擎为 InnoDB, 在配置文件/etc/my.cnf
中的 [mysqld] 下面加入 default-storage-engine=INNODB
# vi /etc/my.cnf
[mysqld]
default-storage-engine=INNODB
重启 mysql 服务器
# service mysqld restart
再次登录 MySQL 查看默认引擎设置是否生效
mysql> show variables like '%storage_engine%';
+---------------------+--------+
| Variable_name | Value |
+--------------------+--------+
| storage_engine | InnoDB |
+--------------------+--------+
innodb_buffer_pool_size 参数值设置得尽可能大一点 这个参数主要作用是缓存 innodb 表的索引,数据,插入数据时的缓冲 默认值:128M,专用 mysql 服务器设置的大小:操作系统内存的 70%-80%最佳。 设置方法:my.cnf 文件[mysqld] 下面加入 innodb_buffer_pool_size 参数
# vi /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 256M
(我们这里设置为 256M,因为我们的不是专用的 MySQL 数据库服务器,还有很多其他的服 务需要占用系统内存)
设置 MySQL 的查询缓存query_cache_size,最少设置 15M
# vi /etc/my.cnf
[mysqld]
query_cache_type=1
query_cache_size=32M
重启 mysql 服务器
# service mysqld restart
验证缓存设置是否生效:
mysql> show variables like '%query_cache%';
+---------------------------------------------+-----------+
| Variable_name | Value |
+---------------------------------------------+-----------+
| have_query_cache |YES |
| query_cache_limit | 104878 |
| query_cache_min_res_unit |324 |
| query_cache_size |sdf |
| query_cache_type |on |
| query_cache_wlock_invalidate |off |
+---------------------------------------------+-----------+
上面设置query_cache_type=1,这里query_cache_type变成了on
3、创建 sonarqube 数据库(UTF-8 编码)
二、安装 SonarQube 的 Web Server
下载最新 LTS 版的 SonarQube 安装包(当前版本为 sonarqube-4.5.4.zip):
下载地址:http://www.sonarqube.org/downloads/
http://dist.sonar.codehaus.org/sonarqube-4.5.4.zip
下载:
# wget http://dist.sonar.codehaus.org/sonarqube-4.5.4.zip
解压安装:
# unzip sonarqube-4.5.4.zip
# mv sonarqube-4.5.4 sonarqube
编辑 sonar 配置:
# cd sonarqube/conf/
# vi sonar.properties
//打开注释配置数据库的用户名密码
sonar.jdbc.username=root
sonar.jdbc.password=wusc.123
#----- MySQL 5.x
//设置mysql连接
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterE
ncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
//允许所有ip访问
sonar.web.host=0.0.0.0
//访问路径名
sonar.web.context=/sonarqube
//访问端口
sonar.web.port=9090
保存以上配置(注意,要看看默认的 9000 端口是否已被占用)
防火墙中打开 9090 端口:
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT
重启防火墙,使端口配置生效
# service iptables restart
启动 SonarQube Web Server
# /root/sonarqube/bin/linux-x86-64/sonar.sh start
(初次启动会自动建表和做相应的初始化)
浏览器中输入:http://192.168.4.221:9090/sonarqube/
登录,默认用户名/密码为 admin/admin
到此,SonarQube 已安装完毕,接下来是对 SonarQube 做相应的配置和使用
详细使用过程
一、SonarQube 的配置(前提,先用 admin 用户登录)
1、 安装中文汉化包:
Setting >> Update Center >> Available Plugins >> LOCALIZATION >> Chinese Pack >> Install
安装完汉化包之后需要重启 SonarQube 才能生效(重启前可顺便把 CheckStyle、PMD 等插件 安装一下)
上图是插件安装成功的图片
# /root/sonarqube/bin/linux-x86-64/sonar.sh restart Stopping SonarQube...
Stopped SonarQube.
Starting SonarQube...
Started SonarQube.
重启完之后刷新 SonarQube:http://192.168.4.221:9090/sonarqube/
汉化成功(注意,汉化包并没有完全汉化),重新登录
2、 MyEclipse/Eclipse 中安装 SonarQube 插件的安装、配置、使用:
http://docs.sonarqube.org/display/SONAR/SonarQube+in+Eclipse
http://docs.sonarqube.org/display/SONAR/Installing+SonarQube+in+Eclipse http://docs.sonarqube.org/display/SONAR/Configuring+SonarQube+in+Eclipse http://docs.sonarqube.org/display/SONAR/Working+with+SonarQube+in+Eclipse
(请参考官方文档操作,在此不作讲解,我们重点讲 SonarQube 结合 Maven 插件的使用)
3、 Maven 分析器插件的配置与使用
http://docs.sonarqube.org/display/SONAR/Installing+and+Configuring+Maven
在 Maven 本地库中的 settings.xml(我这里是 settings_edu.xml)配置文件中的 节点中添加如下配置:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault> </activation>
<properties>
<!-- Example for MySQL-->
//修改连接sonar的数据库
<sonar.jdbc.url>
jdbc:mysql://192.168.4.221:3306/sonarqube?useUnicode=true&chara cterEncoding=utf8
</sonar.jdbc.url>
//mysql的用户名密码
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password>wusc.321</sonar.jdbc.password>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
//这里填写上面浏览器访问sonar客户端的路径
<sonar.host.url>http://192.168.4.221:9090/sonarqube</sonar.host.url>
</properties>
</profile>
使用 Maven 分析器进行分析,命令:
纯 Maven 命令:mvn clean install sonar:sonar(客户端)
或者:
MyEclipse 中执行: clean install sonar:sonar(点击到pom.xml文件,右键run as==>maven build==>Goals:clean install sonar:sonar==>Profiles:pom.xml==>run)
(如果你是第一次运行此命令,看执行日志你会发现它会先下载 sonar-runner 等插件)
sonar插件咬嘴jdk1.7以上(设置中的java build path)
成功执行完分析命令后便可到 Web Server(浏览器) 中查看代码质量分析结果数据。
直接刷新页面==>右边的projects下面就出现了项目
点击进去就能看到具体的代码分析了
把所有的项目都构建到sonar上面==>刷新==>项目==>所有项目==>出现所有的项目
4、 配置: (1) 配置 (2) 权限 (3) 系统
上图是一些通用配置,点击java可以自定义一些检测规则,不做详细介绍
上图权限的作用是:因为有一个选项是问题,里面有许多任务,需要指派的人,其中的权限就是在这里分配的
系统中可以批量删除,更新中心是一些可以安装的插件
5、 质量配置介绍(切换默认配置)
质量门(上面选择器中的最右边Quality Gates)
质量配置:
sonar way是一些质量规则,点击sonar awy进入下图
这里是一些规则,比如点击阻断,进入
点击左侧的表亲,右边可以看到问题,比如上图就是阻断类型的说明比较严重
当然可以新建配置,比如
上面没有规则,点击最上面导航栏中的规则,进入规则页面
可以发现有很多规则的标签,点击左侧的某个规则==>active激活==>选择刚刚创建的配置,将这个规则设置为自己认为合适的优先级。
再回到刚才的质量配置页面,发现有了新的规则,如下图所示
当然自带的FindBugs和Sonar way已经能够满足需求了,当然可以将某个配置谁知为默认的。
6、 代码规则介绍(自定义规则)
如上图,在规则页面可以加入规则的详细描述,比如中文描述,自己的理解等,这样等在问题页面查看问题的时候,就能查看到详细的注释了。
7、 问题处理介绍(质量管理的体现)
导航栏中的问题按钮进入。
如图有错误的详细介绍
如图能够对错误进行设置是佛解决,修改严重性,评论等,也可以对错误根据严重性、分配人等进行筛选。
8、 指标
点击其中某个项目进入具体的仪表盘
9、 仪表盘(自定义)
从多种维度展示项目
可以将仪表盘设置的更加绚丽,即点击右上角==>配置控件
添加控件,并且选择项目
tips:最主要的是规则的配置和问题的发现和解决
Dubbo入门到精通学习笔记(五):持续集成管理平台之sonarqube代码质量管理平台的介绍与安装的更多相关文章
- 持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知
持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知 一:Sonar是什么?Sonar 是一个用于代码质量管理的开放平台,通过插件机制,Sonar 可以集成不同的测试工具 ...
- Dubbo入门到精通学习笔记(三):持续集成管理平台之SVN版本管理系统的安装和使用
文章目录 持续集成管理平台介绍 持续集成介绍 持续集成管理平台的组成 持续集成实践介绍 即将学习 SVN版本管理系统的安装 安装 Subversion + Apache 安装 jsvnadmin 简单 ...
- Dubbo入门到精通学习笔记(六):持续集成管理平台之Hudson 持续集成服务器的安装配置与使用
文章目录 安装Hudson 使用Hudson tips:自动化部署 附录:两个脚本 安装Hudson IP:192.168.4.221 8G 内存(Hudson 多个工程在同时构建的情况下比较耗内存) ...
- Dubbo入门到精通学习笔记(九):简易版支付系统介绍、部署(单节点)
文章目录 部署(单节点) 一.前期准备 二.对部署环境进行规划 创建数据库 调整公共配置文件 应用部署前期准备 部署服务 部署 Web 应用 部署定时任务 一. 工程结构 第三方支付系统架构 pay- ...
- Dubbo入门到精通学习笔记(一):Dubbo对传统工程进行改造、注册中心安装(Zookeeper-3.4.6)、工程结构优化
文章目录 改造思路 样例工程:传统的单工程项目(edu-demo) 模型结构 思路 改成dubbo调用方式后的工程结构 部署环境规划 改造 愚公移山 迁移包 迁移页面: 迁移配置相关 新项目的主要作用 ...
- Dubbo入门到精通学习笔记(十三):ZooKeeper集群的安装、配置、高可用测试、升级、迁移
文章目录 ZooKeeper集群的安装.配置.高可用测试 ZooKeeper 与 Dubbo 服务集群架构图 1. 修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射: 2. 下载或上 ...
- Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试
文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...
- Dubbo入门到精通学习笔记(四):持续集成管理平台之Maven私有库和本地库的安装与配置
文章目录 介绍 Maven私有库和本地库的安装与配置 Nexus安装 Nexus 配置(登录后) 介绍 如果构建的Maven项目本地仓库没有对应的依赖包,那么就会去Nexus私服去下载, 那么如果Ne ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
随机推荐
- Android_开发片段(Part 1)
1.maven环境配置时也跟java类似,进行我的电脑环境的设置,cmd查询:mvn -version 2.在新建AVD时,要注意AVD的版本(API),版本太低或者太高,经常不能运行项目或者在运行项 ...
- API参考文档
Android 中文版:http://www.apiref.com/android-zh/index.html Bootstrap3 教程:http://www.apiref.com/bootstra ...
- appium 链接真机运行时报错
今天用appium链接真机时,碰到的第一个问题:Attempt to re-install io.appium.settings without first uninstalling.(这是日志中显示 ...
- 重写__eq__函数——对象list中使用in index()——获得list中不同属性对象个数
https://blog.csdn.net/anlian523/article/details/80868961
- 树状数据删除(TP5)
应用场景:类似上图中树状菜单,选中一级菜单 点击上方删除按钮 所有子菜单删除 以下是代码截图(代码基于 TP5)
- Rust <0>:源代码组织,Cargo 入门
Rust 源代码组织,使用配套的 Cargo 工具,其功能强大,程序员可摆脱 C/C++ 中需要自行维护 make.cmake 之类配置的工作量. 初始化一个项目: cargo new --bin h ...
- vue实现轮播效果
vue实现轮播效果 效果如下:(不好意思,图有点大:) 功能:点击左侧图片,右侧出现相应的图片:同时左侧边框变颜色. 代码如下:(也可以直接下载文件) <!DOCTYPE html> &l ...
- 第一节:mybatis入门
1.新建数据表 本次测试使用mysql数据,数据库名称为mybatis,新建一张表person,建表语句如下: CREATE TABLE `person` ( `id` ) PRIMARY KEY a ...
- python+tushare获取沪深港股通持股明细
接口:hk_hold 描述:获取沪深港股通持股明细,数据来源港交所. 限量:单次最多提取3800条记录,可循环调取,总量不限制 积分:用户积120积分可调取试用,2000积分可正常使用,单位分钟有流控 ...
- java性能调优03
1.java中的四种引用类型(级别由高到低为:强引用,软引用,弱引用和虚引用) 1.1 强引用:默认创建的变量都是强引用,垃圾回收机制不会将其回收,当内存空 间不足,Java虚拟机宁愿抛出OutOfM ...