目录

1、安装SonarQube

2、实现代码审查


1、安装SonarQube

SonarQube简介:是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测,底层使用elasticsearch作为代码检索工具。

官网:https://www.sonarqube.org/

环境需求:JDK1.8、MySQL5.7、SonarQube6.7.4

按要求安装MySQL,安装SonarQube,在MySQL创建sonar数据库

安装MySQL5.7

[root@jenkins ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
[root@jenkins ~]# useradd -s /sbin/nologin mysql
[root@jenkins ~]# tar zxvf mysql-5.7.17.tar.gz -C /opt/
[root@jenkins ~]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins ~]# mv boost_1_59_0 boost
[root@jenkins ~]# cd /opt/mysql-5.7.17/
[root@jenkins mysql-5.7.17~]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1
[root@jenkins mysql-5.7.17~]# make -j4 && make install
[root@jenkins mysql-5.7.17~]# chown -R mysql.mysql /usr/local/mysql/
[root@jenkins mysql-5.7.17~]# vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
[root@jenkins mysql-5.7.17~]# chown mysql:mysql /etc/my.cnf
[root@jenkins mysql-5.7.17~]# vim /etc/profile
...
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH   #末行添加
[root@jenkins mysql-5.7.17~]# source /etc/profile         #刷新配置生效
[root@jenkins mysql-5.7.17~]# cd /usr/local/mysql
[root@jenkins mysql~]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
[root@jenkins mysql~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@jenkins mysql~]# systemctl daemon-reload
[root@jenkins mysql~]# systemctl start mysqld
[root@jenkins mysql~]# systemctl enable mysqld
[root@jenkins mysql~]# mysqladmin -u root -p password "abc123"   #在mysql外部定义密码
mysql> set password = password('abc123');                        #在mysql内部定义密码
[root@jenkins mysql~]# mysql -u root -p
[root@jenkins mysql~]# grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;

数据库安装完成后,在MySQL创建sonar数据库

安装SonarQube

[root@jenkins ~]# unzip sonarqube-6.7.4.zip         #解压
[root@jenkins ~]# mkdir /opt/sonar                  #创建目录
[root@jenkins ~]# mv sonarqube-6.7.4/* /opt/sonar   #移动文件
[root@jenkins ~]# useradd sonar                    #创建sonar用户,必须sonar用于启动,否则报错
[root@jenkins ~]# chown -R sonar.  /opt/sonar      #更改sonar目录及文件权限
[root@jenkins ~]# vim /opt/sonar/conf/sonar.properties
...
sonar.jdbc.username=root
sonar.jdbc.password=abc123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar? useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs= maxPerformance&useSSL=false      #取消注释即可
注意:sonar默认监听9000端口,如果9000端口被占用,需要更改。 启动sonar(注意:切换sonar用户)

切换用户,启动服务

[root@jenkins ~]# su sonar
[sonar@jenkins root]$ cd /opt/sonar/
[sonar@jenkins root]$ ./bin/linux-x86-64/sonar.sh start      #启动
[sonar@jenkins root]$ ./bin/linux-x86-64/sonar.sh status     #查看状态

配置没错的情况下会进入界面

创建用户和密码

创建token

2、实现代码审查

实现代码审查的流程图

安装SonarQube Scanner插件

回到主界面

进去找到SonarQube Scanner

添加SonarQube凭证

进行SonarQube配置

在项目添加SonaQube代码审查(非流水线项目)

打开之前创建的web_demo_freestyle

# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_freestyle
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_freestyle
sonar.projectVersion=1.0# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**sonar.java.source=1.8
sonar.java.target=1.8# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

保存设置,进行构建

在sonarqube服务器上刷新,查看结果

测试错误代码

在main目录下新建Java和resource目录

配置pom.xml文件添加对servlet的依赖

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version>
</dependency

新建编写Servlet文件

package com.kgc;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//模拟错误代码int i = 100/0;//模拟代码冗余int j = 100;j = 200;resp.getWriter().write("hello Servlet");}
}

代码提交

进行构建测试结果

如果构建maven项目报错,查看JDK版本符不符合

在项目添加SonaQube代码审查(流水线项目)

在项目根目录下,创建sonar-project.properties文件

# must be unique in a given SonarQube instance
sonar.projectKey=web_demo_pipeline
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=web_demo_pipeline
sonar.projectVersion=1.0# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**sonar.java.source=1.8
sonar.java.target=1.8# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

修改Jenkinsfile,加入SonarQube代码审查阶段

stage('code checking') {steps {script {//引入了sonarqube-scanner工具scannerHome = tool 'sonar-scanner'}//引入了sonarqube服务器系统环境withSonarQubeEnv('sonarqube') {sh "${scannerHome}/bin/sonar-scanner"}}}

把更改后的sonar-project.properties和Jenkinsfile进行提交

开始构建web_demo_pipeline

Jenkins代码审查相关推荐

  1. 个人知识体系(持续更新)

    Android App: 一.View 1.1 ActionBar 1.ActionBar的home键 2.利用代码移除系统自带的标题栏 3.Android中层级导航的实现示例 4.Android中工 ...

  2. canna-cloud【一】前言:canna-cloud的构想与实践

    canna-cloud 基于Spring+SpringMVC+Mybatis分布式系统,引入Spring boot + Spring Cloud微服务架构, 提供一整套企业系统的公共微服务模块与系统, ...

  3. jenkins pipeline、用户权限管理、插件下载地址更改、凭证管理、自由风格项目构建、maven项目构建、常用的构建触发器、邮件发送、SonarQube代码审查

    CI持续集成流程 pipeline jenkins安装pipeline插件: 简单使用: 查看流水线语法: 片段生成器: 2.0以后推荐使用声明式语法:右侧下拉框是一些步骤,都可以自动生成 Decla ...

  4. 自动化代码审查平台: 基于Docker Compose整合Jenkins + SonarQube

    目录 代码审查平台 本文目标 环境要求 系统环境 组件服务版本 前言 代码评审 SonarQube简介 概述 部署流程 检查系统参数 设置系统参数 拉取代码 进入文件目录 创建数据卷目录 部署文件信息 ...

  5. docker运行gerrit(代码审查工具)

    gerrit是什么? Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面. gerrit背景 Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软 ...

  6. CloudBees发布“Jenkins X”:面向部署到Kubernetes中的现代云应用的CI/CD解决方案

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ James Strachan和CloudBees团队发布了开源的"Jenkins ...

  7. jenkins 手动执行_Jenkins(一)

    欢迎关注我公众号呀-「测试游记」「zx94_11」 从某种抽象层次上讲,部署流水线(Deployment pipeline)是指从软件版本控制库到用户手中这一过程的自动化表现形式.-<持续交付- ...

  8. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  9. 代码审查工具StyleCop

    "代码审查"或是"代码评审"(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法. ...

最新文章

  1. 标准库中的智能指针shared_ptr
  2. servlet解决javascript传来中文乱码问题
  3. UOJ #586. 旅行问题
  4. Ribbon-2通过代码自定义配置ribbon
  5. 快速部署Enterprise Manager Cloud Control 12c(12.1) Agent
  6. 输出最小公倍数和最大公约数
  7. k8s集群资源监控-监控指标和方案---K8S_Google工作笔记0052
  8. Linux与JVM的内存关系分析(转)
  9. Authentication failed for 错误
  10. 计算机的用户软件在哪,电脑自带录屏软件在哪?这里教你怎么找
  11. 传统版生产者消费者模式2.0
  12. 运营级如意影视源码+完整类库/无限增删解析API
  13. 找到的比较全的tcp/ip的协议号
  14. DEL: 华为无线modem变无线路由器
  15. 数据仓库上云那些事儿
  16. 将C语言的字符串转为OC的字符串
  17. 详细讲解二极管的钳位电路和限幅电路
  18. 最适合freshman的Java习题集(三)
  19. Linux shell 的ss
  20. mongodb安装和mongoVUE使用

热门文章

  1. [附源码]JAVA+ssm计算机毕业设计车险管理系统(程序+Lw)
  2. c语言入门——函数的递归
  3. SDN与NFV、OpenFlow、SD-WAN的区别
  4. 【framework】EventLog分析
  5. PHPstudy下载安装
  6. PS将灰蒙蒙的风景照处理得清晰鲜艳
  7. 【一步步学OpenGL 21】 -《聚光灯光源》
  8. php-工厂模式实现
  9. ​年轻人的情绪,都藏在知乎的短故事里
  10. JAVA17版本,JDK 16 正式发布,一次性发布 17 个新特性…不服不行!