阅读 2657
SonarQube+Jenkins代码质量检查工具攻略大全

SonarQube+Jenkins代码质量检查工具攻略大全

前言 随便写写,大家也就随便看看,2020年,争取拿个乒乓球小区冠军。

1 概述

SonarQube是一个开源平台,用于管理源代码得质量。SonarQube不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。 SonarQube可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

	(1) 不遵循代码标准
	SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
	(2) 潜在的缺陷
	SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
	(3) 糟糕的复杂度分布
	文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
	(4) 重复
	显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube可以展示 源码中重复严重的地方。
	(5) 注释不足或者过多
	没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
	(6) 缺乏单元测试
	SonarQube可以很方便地统计并展示单元测试覆盖率。
	(7) 糟糕的设计
	通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过SonarQube可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
复制代码

2 基础环境准备

本文主要讲述如何在windows系统搭建sonarQube及Jenkins自动构建,所有的环境请按照笔者的要求搭建,以便大家可以成功搭建。

(1)Java环境1.8

(2)Maven环境

(3)mysql5.6—8.0,该版本之外的Mysql会报异常

(4)node.js

(5)SonarQube7.6

(6)Sonar-Scanner/Runner

(7)SVN代码管理仓库

(8)Jenkins平台

(9)navicat可视化数据库工具

(10)Jenkins Plugins笔者已经下载好了,主要是因为防止很多人插件下载失败,所有的安装文件都放在了网盘中,可自取
复制代码

2.1 Java环境安装

jdk1.8_64位

双击安装JDK,细节这里就不说了,大家不会的可以百度一下,安装完JDK之后需要配置一下环境变量
复制代码

JAVA_HOME变量配置 PATHl路径配置

2.2 Maven安装

同样将maven的安装包解压到任意一个磁盘中,同样我们还是要配置一下Maven的环境变量
复制代码

maven压缩包 maven_home maven_path

2.3 Mysql安装

安装mysql之前肯定有很多人会问我,为什么要说这些基础的东西,要知道,还是有很多帅气的娃因为一些基础得环境或者版本问题搞得
复制代码

==脑壳都要挠秃咯!== 秃头

1. 将文件解压入到自定义的目录下【mysql如果安装不对得话,可以百度下对应版本得安装方式】
2. 配置my.ini,在根目录下创建文件my.ini,并在文件中输入以下代码
[mysqld]
basedir ="C:\mysql-6.3-winx64" --此处配置自己得mysql路径名
datadir ="C:\mysql-6.3-winx64\data" --此处配置自己得mysql路径名
port=3306
server_id =10
character-set-server=utf8

[client]
port=3306
default-character-set=utf8
[mysqld_safe]
timezone="CST"
[mysql]
default-character-set=utf8

3. 配置环境变量, 将mysql/bin加入到PATH中

4. 找到cmd.exe,以管理员身份运行(确保是管理员)

5. 首先将MySQL加入到Windows的服务中,输入命令:

	mysqld --install
	有时候没有卸载干净,会提示The service already exists!
	此时,以管理员身份运行cmd,
	-输入命令sc query mysql 查看名为mysql的服务
	-输入命令sc delete mysql,删除该mysql 
	-再执行mysqld --install 就能成功了

6. 开始初始化数据库,输入:
	-mysqld --initialize --console
  	-mysqld --initialize --user=root --console   (记住初使密码)

7.  输入:net start mysql,稍后你也可以用net stop mysql关闭MySQL服务。

8.  然后就可以进入MySQL了,输入:mysql -u root -p,此时会要求你输入密码

9. alter user user() identified by "123456";  改初使秘密

10. show databases ;展示数据库列表;

11. use mysql  使用数据库

12. show tables; 展示 表名
复制代码

此处容易遇到两个问题: 1.系统得C++环境问题导致得mysql安装失败,可以使用下面的工具C++环境补全工具安装C++环境; 2.数据库安装完成后要先创建一个名字为==sonar==得数据库,因为我们在下面sonarQube配置得时候是初始化sonar数据库得文件得。 如果没遇到那么各位娃都是棒棒的。 赞 在这里插入图片描述

2.4 node.js安装

node.js也是必不可少得一环,如果没有node.js环境,无法对代码中得Css文件进行扫描。
复制代码

安装方式因截图太多,这里参考node.js安装教程 在这里插入图片描述

2.5 SonarQube7.6安装

--还是老套路,将压缩包解压后修改conf\sonar.properties-图1配置文件,我这里是本地
  环境,如果是服务器上得Mysql,只需要将localhost转换为对应得IP即可
  sonar.jdbc.url    数据库连接地址
  sonar.jdbc.username 登陆数据库得用户名
  sonar.jdbc.password 登陆数据库得密码
--SonarQube启动后默认得账号和密码都是admin
--关闭SonarQube服务-图3(需要关闭任务管理器中得所有java项目)
--重启sonarQube服务-图4
--再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息(user中可以查看到用户信息
复制代码

sonar配置文件 sonarqube登陆 kill-java进程 重启sonarqube

2.6 Sonar-Scanner扫描器安装

Sonar-Scanner是一个利用SonarQube服务端分析代码得命令行工具,可以把它简单得理解为SonarQube得客户端。Sonar-Scanner分析完成后会将数据post到SonarQube得数据库,从而在sonarQube中进行展示,便于分析。

--将下载好得sonar-Scanner解压编辑其中得conf\sonar-scanner.properties文件
  sonar.host.url为我们客户端得访问地址,账号密码都为admin
--配置环境变量(路径填写你的安装路径)
  新建变量,name=SONAR_SCANNER_HOME   value=D:\sonar\sonar-scanner-2.5
  打开path,输入 %SONAR_SCANNER_HOME%\bin;
  sonar-runner -version,出现以下信息,则表示环境变量设置成功
复制代码

在这里插入图片描述 scanner版本号

2.7 SVN代码管理仓库安装

到这里,相信又有很多娃儿说笔者太过于啰嗦了,为什么还不开始给老子扫描项目,莫急,磨刀不误砍柴功,当万事俱备得时候,扫描出BUG还不是分分钟得事情。
说到代码管理工具,首先想到得当然是git,gitlab,但是对于初学者来说Svn这种可视化得更适合,所有笔者这里选择了相对较为简单得Svn。
依然是跑到我给大家提供得工具库中下载下来先,然后解压,点击下面得而这个可爱得小图标,启动我们得Svn客户端,然后创建一个仓库,一直疯狂点击下一步就好了,就是这么得easy。
复制代码

SVN

创建一个本地仓库
复制代码

在这里插入图片描述 在这里插入图片描述

创建一个用户,用来提交我们得代码,然后在我们的文件夹下面创建一个文件夹来初始化我们的代码仓库Check Out,这里就不多啰嗦
复制代码

大家可以参考 SVN使用教程 在这里插入图片描述 在这里插入图片描述

2.8 Jenkins平台安装

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:
$ java -jar jenkins.war
如果需要修改端口可以使用如下命令:
$ java -jar jenkins.jar--httpPort=8081
然后在浏览器中(推荐用火狐)输入localhost:8081,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins。
第二种方法是用tomcat打开
解压tomcat到某个目录,如/usr/local,进入tomcat下的/bin目录,启动tomcat
将jenkins.war文件放入tomcat下的webapps目录下,启动tomcat时,会自动在webapps目录下建立jenkins目录,在地址栏上需要输入localhost:8080/jenkins。
这里我们就是采用第二种方法来搭建Jenkins,因为我们是在windows上搭建得,所以只要把jenkins.war放到tomcat得wapapps下然后启动Tomcat就可以访问Jenkins了
复制代码

Jenkins入门教程

由于很多得小伙伴在下载插件这一步就跪了,所以本冲也为大家提供了已经下载好的插件,免费大甩卖,都在文末,自取,只需要将插件解压放到家目录.jenkins,替换掉plugins然后重启就可以了。 在这里插入图片描述在这里插入图片描述 夸我 至此,基本上需要得环境都已经安装完了,下面就开始我们得扫描之旅吧。

3 使用说明

3.1利用Sonar-scanner命令分析本地项目

1.进入E:\sonarqube-7.6\bin\windows-x86-64(你的sonarqube安装目录),
只要在项目工程目录下新建sonar-project.properties文件并配置如下图-1
2.点击StartSonar.bat启动sonar服务
3.进入项目所在得路径下执行sonar-scanner命令进行代码扫描-图2
4.运行最终结果显示EXECUTION SUCCESS即成功-图3
5.客户端查看代码扫描结果-图4
复制代码

1 2 3 4 在这里插入图片描述

3.2已编译的maven项目,target文件中没有内容但是还是要将其注明

在这里插入图片描述

sonar-project.properties文件中的内容
复制代码

在这里插入图片描述

之后在cmd下进入工程目录下运行:sonar-scanner
复制代码

在这里插入图片描述

3.3已编译的maven项目,使用maven分析器插件来分析项目

在maven的conf下的settings.xml下
复制代码

在这里插入图片描述

在<profiles></profiles>节点中添加如下代码
复制代码
<profile>
     <id>sonar</id>
     <activation>
          <activeByDefault>true</activeByDefault>
     </activation>
      <properties>
           <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
           <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
           <sonar.jdbc.username>sonar</sonar.jdbc.username>
           <sonar.jdbc.password>sonar</sonar.jdbc.password>
            <!-- SERVER ON A REMOTE HOST -->
           <sonar.host.url>http://localhost:9000</sonar.host.url>
      </properties>
  </profile>

复制代码
之后在cmd下进入工程目录下运行:mvn clean install sonar:sonar
复制代码

在这里插入图片描述

3.4对JS、CSS、HTML进行代码走查

在这里插入图片描述

sonar-project.properties文件中的内容
复制代码
sonar.projectKey=control
sonar.projectName=control
sonar.projectVersion=1.0
sonar.sources=src,WebContent
sonar.java.binaries=build\classes
sonar.sourceEncoding=UTF-8

复制代码
之后在cmd下进入工程目录下运行:sonar-scanner
复制代码

在这里插入图片描述

4.Jenkins集成SVN+maven+tomcat+sonarqube+sonar-scanner

 jenkins推荐的插件安装中没有sonarqube的安装,需要到系统管理-插件管理-可选插件中搜索sonarqube,sonarqube插件名是sonarqube scanner for jenkins,直接安装,安装成功后在系统管理-系统设置下就可看到sonarqube servers,即可配置
复制代码

4.1Jenkins For SonarQube配置

4.1.1.在系统管理—插件管理中安装相应插件

在这里插入图片描述

4.1.2. 在系统管理—系统设置中对sonarqube servers进行设置

在这里插入图片描述

4.1.3获取sonarqube servers的用户令牌

用户令牌

4.1.4. 在系统管理—全局工具配置中对sonarqube scanner进行设置

sonar_scanner

4.1.5.安装nodeJS插件,不安装的话会导致CSS文件无法进行扫描

在这里插入图片描述

4.1.6. 在系统管理—全局工具配置中对nodeJS进行设置

此处的安装目录填写你node.js的所在路径
复制代码

node.js

4.2对一个非maven项目项目进行代码走查,构建一个自由风格的项目

4.2.1填写项目配置信息

在这里插入图片描述

4.2.2 设置构建的保存数量和时间

在这里插入图片描述

4.2.3设置SVN的路径和账号

在这里插入图片描述

若是用Git管理代码仓库的可以参考如下配置
这里是使用了Git来做源码管理,gitlab作为源码库 项目分支填写master
复制代码

在这里插入图片描述

4.2.4设置项目轮询,每5分钟轮询一次

在这里插入图片描述

4.2.5勾选nodeJS的环境

在这里插入图片描述

4.2.6构建触发器、构建环境(sonar的账号密码)

在这里插入图片描述

4.2.7保存后对该项目进行“立即构建”操作,并可以查看sonarqube中项目的分析情况

在这里插入图片描述

4.3对一个maven项目项目进行代码走查,构建一个maven项目

4.3.1填写项目配置信息,设置构建的保存数量和时间

在这里插入图片描述

4.3.2设置SVN的路径和账号

svn

4.3.3设置项目轮询,每5分钟轮询一次

4.3.4勾选nodeJS的环境

node.js

4.3.5构建触发器、构建环境(sonar的账号密码)

在这里插入图片描述

4.3.6在构建后操作中添加war包的操作

在这里插入图片描述

4.3.7保存后对该项目进行“立即构建”操作,并可以查看sonarqube中项目的分析情况

在这里插入图片描述

5 SonarQube相关指标说明

5.1SonarQube指标脑图

在这里插入图片描述

5.2代码质量阀

代码质量的统计,可以帮助我们判断项目是否可以投入生产环境
复制代码

在这里插入图片描述 可根据实际的项目需求配置质量阀(sonar的默认配置) 在这里插入图片描述

6 结束语

下一篇文章:如何使用Jenkins构建搭载钉钉以及邮箱通知

我希望在看这个文章的你,在新的一年,顺顺利利,并能够朝着定下得目标冲呀。 在这里插入图片描述 重点来了: 喜欢得朋友可以点个关注,今天这个文章真的是码了我4个多小时呢,老腰都酸死了。

本篇文章所用到得所有工具都在本人得公众号,【回复】[sonarqube]免费领取。

CSDN链接地址:blog.csdn.net/lmarster/ar… 在这里插入图片描述

文章分类
后端
文章标签