SonarQube质量管理
SonarQube是开源的代码分析平台,用来持续分析和评测项目源代码的质量。
通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。
代码质量注意点
- 编码规范:是否遵守了编码规范,遵循了最佳实践
- 潜在的BUG:可能在最坏的情况下出现问题的代码,以及存在安全漏洞的代码
- 文档和注释:过少,缺少必要信息,过多,没有信息量,过时的文档或者注释
- 重复代码:违反了Don’tRepeatYourself 原则
- 测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够
- 设计与架构:是否高内聚,低耦合,依赖最少
SonarQube架构
安装
#安装MySQL,版本一定大于等于5.6
官网:www.sonarqube.org
安装mysql
卸载之前的mysql全部删除
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -qa | grep -i mysql
rpm -e MySQL-client-5.6.38-1.el7.x86_64
删除服务
chkconfig --list | grep -i mysql //查看服务
chkconfig --del mysql //删除服务
删除mysql分散的文件夹
whereis mysql
rm -rf /use/lib/mysql
rm -rf /etc/my.cnf #删除系统默认的配置文件)
安装8.0的mysql
yum localinstall -y https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
yum install mysql-community-server -y
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log #获取到mysql初始密码
#mysql -uroot -p’,LW:N3)&hQ8h’ #登录到mysql
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; #创建sonar数据库
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar@pw'; #配置sonar本机登录密码
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar@pw'; #配置sonar远程登录密码
FLUSH PRIVILEGES;
配置并启动Sonar
安装java
yum install -y java-1.8.0
安装Sonar
cd /usr/local/src
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.3.48735.zip #下载官方安装包
unzip sonarqube-8.9.3.48735.zip
mv sonarqube-8.9.3.48735.zip /usr/local/
ln -s /usr/local/sonarqube-8.9.3.48735.zip/ /usr/local/sonarqube
Sonar的配置文件主要是配置相关启动参数和数据库的信息,数据库不需要初始化,Sonar启动的过程中会自动初始化。
cd /usr/local/sonarqube/conf/
vim sonar.properties #编写配置文件,修改数据库配置
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar@pw
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.web.host=0.0.0.0 #你的公网IP
sonar.web.port=9000 #自定义你想要配置的未被占用的端口
启动Sonar
/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
安装SonarQube会自带Elasticsearch
Elasticsearch 一定要非root用户启动
Jenkins与SonarQube集成
在Jenkins上安装插件,搜索Sonar,安装下列插件
进入Jenkins系统配置,找到SonarQube
从SonarQube网址的admin/我的账户,生成token,复制到Jenkins里,添加一个认证
填写完名称网址后,选择上面新添加的token
Pipline使用SonarQube
在脚本里添加一个sh,用于启动sonar-scanner (node上一定安装有SonarQube)
集成
stage('质量扫描'){
withSonaQubeENV('SonarQube'){
sh '/usr/local/sonar-scanner/bin/sonar-scanner'
}
}
有了小图标,点击直接就跳转到SonarQube