jenkins-代码质量测试
Posted 小怪獣55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins-代码质量测试相关的知识,希望对你有一定的参考价值。
官方网站:http://www.sonarqube.org/
SonarQube
是一个用于代码质量管理的开放平台,通过插件机制,SonarQube可以集成不同的测试工具,代码分析工具,
以及持续集成工具,例如 Hudson/Jenkins等。
下载地址:https://www.sonarqube.org/downloads/
七个维度检测代码质量
复杂度分布:代码复杂度过高将难以理解
重复代码:程序中包含大量复制、粘贴的代码而导致代码臃肿, sonar可以展示源码中重复严重的地方
单元测试统计:统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
代码规则检查:检查代码是否符合规范
注释率:若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
潜在的Bug :检测潜在的bug
结构与设计:找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度
代码测试工具SonarQube 简介
7.9.x 版本不再支持 mysql
基础环境依赖
https://docs.sonarqube.org/6.7/Requirements.html
1.数据库环境依赖
数据库要使用5.6 版本,不支持5.5的版本
2.java 环境依赖
3.系统及内核参数
useradd -s /bin/bash -m sonarqube 使用普通账户启动sonarqube;
注意一定要建一个用户,sonarqube是不能以root账户启动的
vim /etc/sysctl.conf
-----------------------------
vm.max_map_count=262144
fs.file-max=65536
-----------------------------
vim /etc/security/limits.conf
-----------------------------
sonarqube - nofile 65536
sonarqube - nproc 2048
-----------------------------
部署SonarQube
#1.数据库安装
apt-get install mysql-server mysql-client
vim /etc/mysql/mysql.conf.d/mysqld.cnf
--------------------------------------------
bind-address = 0.0.0.0
--------------------------------------------
#2.启动:
/etc/init.d/mysql start
#3.创建数据库默认编码utf-8并授权
mysql> create database sonar default character set utf8 collate utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON sonar.* TO sonar@% IDENTIFIED BY 123456;
#4.测试sonar账户连接 mysql
mysql -usonar -p123456
解压sonarqube并配置文件
sonar依赖于java环境,而且java版本必须是1.8版本或更高,否则sonar启动失败
6.7. X 版本的sonar需要调用elasticsearch而默认需要使用普通用户启动
cd /usr/local/src/
unzip sonarqube-6.7.7.zip
ln -sv /usr/local/src/sonarqube-6.7.7 /usr/local/sonarqube
chown sonarqube.sonarqube /usr/local/src/sonarqube-6.7.7 /usr/local/sonarqube -R
su - sonarqube
sonarqube@ubuntu:~$ cd /usr/local/sonarqube
sonarqube@ubuntu:/usr/local/sonarqube$ vim conf/sonar.properties
---------------------------------------------------------------------------------------
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=ut
f8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
---------------------------------------------------------------------------------------
sonarqube@ubuntu:/usr/local/sonarqube$ grep "^[a-Z]" conf/sonar.properties
启动sonarqube【注意,注意:一定要普通用户才能启动】
sonarqube@ubuntu:/usr/local/sonarqube$ ./bin/linux-x86-64/sonar.sh start
查看日志
不能以root启动sonarqube
登录:http://192.168.47.108:9000
log in登录,默认用户名密码都是admin
安装中文支持
#查看插件位置
sonarqube@ubuntu:/usr/local/sonarqube$ ll extensions/plugins/
安装中文插件
#Web界面安装完成插件后或者在插件目录下载插件后需要重启sonarquebe服务生效或者在web界面重启:
sonarqube@ubuntu:/usr/local/sonarqube$ ./bin/linux-x86-64/sonar.sh restart 【普通用户启动】
#Sonarquebe对代码的扫描都基于插件实现,因此要安装要扫描的开发语言插件:
php
Java
Python
汉化包下载地址:https://github.com/xuhuisheng/sonar-l10n-zh/releases/
日志
sonarqube关键的三个组件
1、ElasticSearch
2、Mysql数据库
3、web-GUI
sonarqube 启动顺序也是如此,先启动ElastcSearch,然后是数据库,然后是 web-GUI
其logs日志目录,也是按照这个顺序记录日志,在启动时分别产生:
1)access.log
针对web服务的日志,记录你所有的访问记录。
这个日志在sonar没有启动成功啥也没有,所以这个日志跟启动sonar没关系。
2)es.log:
针对es组件的日志,也是sonarqube启动第一个运行的组件,这个日志有报错,那就是es的问题。
3)sonar.log:
sonar服务的启动日志,记录所有组件的启动信息。
4)web.log:
web-GUI日志,web-GUI界面想要启动,得满足ES mysql sonar这三个要求
jenkins 服务器部署扫描器sonar scanner
下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
官方文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
sonarqube通过调用扫描器sonar scanner进行代码质量分析,即扫描器的具体工作就是扫描代码
root@jekins-master:/usr/local/src# unzip sonar-scanner-cli-4.0.0.1744-linux.zip
ln -s /usr/local/src/sonar-scanner-4.0.0.1744-linux /usr/local/sonar-scanner
root@jekins-master:/usr/local/sonar-scanner# vim conf/sonar-scanner.properties
-----------------------------------------------
sonar.host.url=http://192.168.47.108:9000
sonar.sourceEncoding=UTF-8
-----------------------------------------------
【注意,注意:必须项目目录下执行扫描】
root@jekins-master:/usr/local/src/sonar-examples-master/projects/languages/php/php-sonar-runner# /usr/local/sonar-scanner/bin/sonar-scanne
项目目录内容
扫描的配置文件:sonar-project.propertie 每个项目都要有
jenkins 执行代码扫描
1.安装插件:SonarQube Scanner
2.添加sonarquebe web url
系统管理-系统配置
3.添加扫描器:sonarscanner
系统管理-全局工具配置
方式1:可执行命令的绝对路径(这次实验,选择方式1)
方式2:自动安装
测试
git clone git@192.168.47.106:root/linux47.git
将模板文件拷入linux47目录下,并上传到gitlab
cd linux47/
cp -r /usr/local/src/sonar-examples-master/projects/languages/php/php-sonar-runner .
git add ./*
git commit -m "v6"
git push
jenkins新建一个工程
1.自动拉去gitlab代码设置
2.配置项目进行扫描:
sonar.projectKey=org.sonarqube:php-simple-sq-scanner
sonar.projectName=PHP :: Simple Project :: SonarQube Scanner
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=php
sonar.sourceEncoding=UTF-8
构建后的结果
以上是关于jenkins-代码质量测试的主要内容,如果未能解决你的问题,请参考以下文章
持续集成之②:整合jenkins与代码质量管理平台Sonar并实现构建失败邮件通知
gitlab+jenkins+maven+docker持续集成——sonarqube及sonarscanner代码审查