jenkins-代码质量测试

当筵意气临九霄,星离雨散不终朝。这篇文章主要讲述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 环境依赖

【jenkins-代码质量测试】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/mysqlstart
#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.shstart

查看日志

不能以root启动sonarqube

排错参考:??https://blog.csdn.net/shm19990131/article/details/107527755?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-107527755.pc_agg_new_rank& utm_term=sonarqube+%E5%81%9C%E6%AD%A2& spm=1000.2123.3001.4430??
登录: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.shrestart 【普通用户启动】

#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


构建后的结果



    推荐阅读