一、简介
sonarqube是一个用于代码质量管理的开源平台,用于管理源代码的质量

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

二、sonarqube环境搭建

1.下载jdk安装包,因为sonarqube环境是依赖JVM运行的,所以需要安装jdk

下载jdk11并做环境配置

vim /etc/profile

最后一行添加:

export PATH=/usr/local/java/bin/:$PATH

2.下载sonarqube安装包:
官网:https://www.sonarqube.org/

下载相应的版本,我这里使用SonarQube 8.2社区版本

3.使用wincp工具将sonarqube安装包传输到centos7中
4.安装解压和压缩工具
yum install -y unzip zip

解压sonarqube-8.2.0.32929.zip到/opt下改名为sonarqube
unzip sonarqube-8.2.0.32929.zip

mv sonarqube-8.2.0.32929 /opt/sonarqube

5.sonar-pdf-plugin插件打包

sonar-pdf-plugin插件源码   https://gitee.com/GeoStarMobile/sonar-pdf-plugin

下载sonar-pdf-plugin的源码(需要做部分修改),IDEA打包生成jar包,然后拷贝到 /opt/sonarqube/extensions/plugins目录下。

6.配置sonarqube环境变量

vim /etc/profile

export SONAR_HOME=/opt/sonarqube
export PATH=$PATH:$SNOAR_HOME/bin/linux-x86-64

source /etc/profile

7.赋予执行权限,解决后续权限不足的问题
chmod 777 sonarqube

8.创建普通用户权限(root用户不能启动es)
adduser sonaruser
passwd sonaruser

9.给普通用户赋sonar执行权限,以及Java执行权限

chown -R sonaruser:sonaruser /opt/sonarqube
chown -R sonaruser:sonaruser /usr/local/java

10.切换普通用户
su sonaruser

11.启动服务

/opt/sonarqube/bin/linux-x86-64/sonar.sh start

tail -f /opt/sonarqube/logs/sonar.log

12.浏览器再次输入http://192.168.4.239:9000(默认 admin/admin)

sonar服务启动会启动sonar服务,elasticsearch服务、MySQL服务
   ps -ef | grep elasticsearch
   ps -ef | grep soanr
   ps -ef | grep mysqld
可通过以上命令查看服务进程

13.安装中文插件

三、jenkins集成sonarqube

1.安装插件SonarQube Scanner

2.sonar生成令牌,jenkins的凭据需要用到

3.jenkins系统配置中添加SonarQube servers的配置信息

4.全局配置工具中安装SonarQube Scanner

5.新建sonarqube项目test

6.jenkins新建自由构建项目

7.更改jenkins配置文件中.m2目录下 settings.xml和代码文件中pom.xml

settings.xml加入如下内容

pom.xml加入如下内容:

8.去jenkins部署项目,部署完毕查看sonarqube检测情况

centos7搭建sonarqube环境+jenkins部署全流程的更多相关文章

  1. CentOS7——搭建LNMP环境(WordPress案例)

    CentOS7--搭建LNMP环境(WordPress案例) LNMP组成介绍 LNMP(Linux-Nginx-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统 ...

  2. 阿里云EDAS在本地CentOS7.5 系统搭建测试环境,部署配置中心以及部署多个war包

    参考阿里云的EDAS开发文档: 使用 Ali-Tomcat 开发应用 我们自己在内网搭建CentOS7 的测试环境,需要的资源如下: Ali-Tomcat Pandora 容器 EDAS 配置中心安装 ...

  3. centos7搭建ANT+jmeter+jenkins接口测试自动化环境

    一.环境准备 因为用到了jmeter和apache-tomcat,centos7必须要有java环境,所以配置jdk和apache-tomcat什么的,就不多说了,自行操作 帮你们偷懒: ant下载地 ...

  4. Centos7 搭建lnmp环境 (centos7+nginx+MySQL5.7.9+PHP7)

    阿里云一台服务器出现问题! 我估计是一键安装包环境的原因,所以打算重新搭建下环境! 首先,当然是先做好快照!安全第一! 对系统盘做更换系统操作,装上纯净版的centos. 装好后,进入系统 一.挂载数 ...

  5. centos7 搭建 docker 环境

    1. 安装centos7  http://isoredirect.centos.org/centos/7/isos/x86_64/ 下载 everything 版本,最小化版本可能缺失很多东西 我是在 ...

  6. linux,centOS,用LNMP搭建wordpress,更新固定连接--全流程

    下午到晚上的时间,买了个linux服务器,用的centOS系统,遇到各种问题! 1.用putty,ssh到vps后,根据网上命令,一步步下载并安装,具体步骤可以看一下网上教程,LNMP.org站上的教 ...

  7. Win2k8&&vCenter部署全流程

    几个不同的组件 vCenter Server:对ESXi主机进行集中管理的服务器端软件,安装在windows server 2008R2或以上的操作系统里,通过SQL 2008R2 或以上版本的数据库 ...

  8. linux部署全流程(未完)

    一.环境搭建 1.jdk 2.tomcat 3.nginx 4.redis 推荐工具:winSCP(用来传输文件).SecureCRT(用来执行命令) 1.jdk 下载地址:https://www.o ...

  9. CentOS7搭建LNMP环境

    以前写的过时了,重新发一篇新的. 安装PHP 下载官网:https://www.php.net/downloads.php 为了方便,我存了现成的 百度网盘:https://pan.baidu.com ...

随机推荐

  1. PyQt(Python+Qt)学习随笔:Qt Designer中部件的windowTitle和windowOpacity属性

    windowOpacity 这个属性仅对window对象生效. windowOpacity为浮点数,表示透明度,为1完全不透明,为0完全透明,缺省是1. 可以通过windowOpacity().set ...

  2. .NET 开源导入导出库 Magicodes.IE 2.5发布

    今天我们发布了2.5版本,这当然也离不开大家对Magicodes.IE的支持,今天我也是跟往常一样列举了该版本一些重要的更新内容. 当然也要说一下,在这个版本中我们设计了全新的LOGO Excel导出 ...

  3. 效率神器-uTools推荐和使用

    提高办公开发效率...非常好用  功能很多很全,官网:https://u.tools/ 文档:https://u.tools/docs/guide/about-uTools.html

  4. Django官方为什么没有标准项目结构

    Django官方并没有提供标准的项目结构,于是网上众说纷纭,百花齐放,一千个读者有一千个哈姆雷特.那我们该怎么设计项目结构呢?在回答这个问题之前,先了解一下Django原生的目录和文件都是干嘛的. p ...

  5. javascript编写原则

    1.不要在同一行声明多个变量2.使用===或!==来比较3.使用字面量的方式来创建对象.数组,替代new Array这种形式4.switch语句必须要带default分支5.fon-in循环中的变量, ...

  6. SA-IS学习笔记

    Q:SA-IS 是什么玩意? A:一种 \(O(n)\) 求后缀数组的高科技. Q:为什么会有 SA-IS 这种算法? A:因为它是 \(O(n)\) 的,比倍增 \(O(n\log n)\) 快. ...

  7. oracle归档空间不足的问题(rman删除归档日志)

    案例一:归档日志满,数据库用户无法登陆,业务异常   解决方案一(可以登录rman): rman target /   RMAN> crosscheck archivelog all;   RM ...

  8. 学习笔记——JS语言精粹

    JS作用域是基于词法作用域的顶级对象. JS是一门弱类型语言,强类型能在编译时检测错误. JS是唯一一门所有浏览器都能识别的语言. 块注释对于被注释的代码是不安全的,例如/*  var rm=/a*/ ...

  9. [日常摸鱼]bzoj3224普通平衡树-Treap、Splay、01Trie、替罪羊树…

    http://www.lydsy.com/JudgeOnline/problem.php?id=3224 经典的平衡树模板题-各种平衡树好像都可以(黄学长之前好像还用vector卡过了这题) 所以这篇 ...

  10. 多任务-python实现-同步概念,互斥锁解决资源竞争(2.1.4)

    @ 目录 1.同步的概念 2.解决线程同时修改全局变量的方式 3.互斥锁 1.同步的概念 同步就是协同步调,按照预定的先后次序进行运行,如你说完我在说 同步在子面上容易理解为一起工作 其实不是,同指的 ...