SonarQube 安装、配置及 JaCoCo、Maven 集成_sonarqube集成maven_Tester_muller的博客-程序员资料

技术标签: java  maven  开发语言  


SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube。此外, SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
官方网址:https://www.sonarqube.org/
通过插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 等二十五种编程语言的代码质量管理与检测,针对不同的编程语言其所提供的分析方式也有所不同:对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能;对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能。
SonarQube 支持多种客户端集成方式,包括但不限于 Scanner 客户端、Ant、Gradle、Maven、Jenkins、IDEA 插件等。比较常用的为 Gradle 和 Maven。
SonarQube 并不是简单地将各种质量或覆盖率检测工具的结果(例如 CheckStyle、JaCoCo 等)直接展现给客户,而是通过不同的插件算法来对结果进行再加工,并最终以量化的方式来衡量代码质量,从而方便地对不同规模和种类的工程进行相应的代码质量管理,以便进行有针对性的代码修复或重构。
SonarQube 在进行代码质量管理时,会从以下的七个纬度对项目代码质量进行分析。
Sonar 实际上是一个 Web 系统,展现了静态代码扫描的结果,结果是可以自定义的,而真正实现代码扫描的是 Sonar Scanner 这个工具,另外同时支持多种语言的原理是它的扩展性,通过插件实现的,也就是 Java Jar 架包,可以在 Sonar 平台上在线安装或者离线安装。
1.已安装 JDK1.8 环境
2.已安装 Maven(用于后期与 SonarQube、JaCoCo 的集成)
3.已安装 MySQ L数据库(Sonar 默认的数据库是自带 H2 数据库,是很小的嵌入式数据库引擎,这里的配置换成了 MySQL,为了方便通过数据库客户端进行数据查询)
1.下载 SonarQube,地址为:
http://www.sonarqube.org/downloads/
2.配置数据库(下面的SQL是指定了schema为sonar,password为sonar,其中第四条SQL是localhost是因为MySQL安装在本地)
3.安装 SonarQube
I. 将下载的 sonar-3.7.zip 包解压至 Windows某个路径,如 D:\Tools\sonar(如是其他OS,请选择对应路径,如Linux的/usr/local/等)。
II. 修改 sonar.properties
在 /conf/sonar.properties 文件中,配置数据库设置(默认已经提供了各类数据库的支持这里使用 MySQL,因此取消 MySQL 模块的注释),同时因为端口冲突而改成端口为 11000。
III.在 /bin/ 目录下,运行 /windows-x86-64/StartSonar.bat (因为本 demo 是在 win10 64位安装的,如果是 Linux 的话,运行 nohup bash sonar.sh start &)
IV. 访问 http://localhost:11000,如果不是本机就输入 http://[remote IP]:11000,如果你看到下图所示即证明配置成功。
4.用 admin/admin(默认)进行登录,并安装汉化包
Chinese pack installation
Chinese pack restart
Chinese pack restart confirm
Well done!

  1. 下载Sonar Scanner,地址为:
    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
  2. 将下载的 sonar-scanner-cli-3.3.0.1492-windows.zip 包解压至 Windows 某个路径,如D:\Tools\sonar(如是其他OS,请选择对应路径,如Linux的/usr/local/等)
  3. 修改环境变量
    新增变量:
    SONAR_SCANNER_HOME = D:\Tools\sonar\sonar-scanner-3.3.0
    修改Path变量:增添
    %SONAR_SCANNER_HOME%\bin\
  4. 安装Sonar Scanner
    I. 将下载的 sonar-3.7.zip 包解压至 Windows 某个路径,如 D:\Tools\sonar(如是其他 OS,请选择对应路径,如 Linux的/usr/local/ 等)。
    II. 修改 sonnar-scanner.properties
    在 /conf/sonar-scanner.properties 文件中,设置SonarQube服务器。
    III. 到你想检测的工程根目录下新建文件sonar-project.properties,文件内容如下?,文件中的参数配置,参考Sonar Analysis Parameters这篇文章。
    在命令行模式下,在工程的根目录下键入命令“sonar-scanner”,你会看到以下日志:
    运行 sonar-scanner
    接着,重新登录 SonarQube 平台,检测的结果已经在平台上展现出来
    从上图你可以看出来,连单元测试覆盖率的统计也生成出来了,主要原因为在该maven项目之前已经集成了Jacoco插件(具体Maven与Jacoco的集成请参考我的另外一篇文章)。
    1.该项目为maven项目,并且Jacoco已经通过POM文件集成到项目中,具体步骤请参考我的另外一篇文章。
    2.该集成方案其实还是首先通过maven package 命令去生成对应的覆盖率报告,然后通过sonar scanner直接使用该覆盖率报告并通过一定算法加工并展示到SonarQube的界面上去。
    1.在项目根目录的 sonar-project.properties 文件中,增添以下配置内容:
    2.在 SoarQube 登录 admin,并通过在【配置-应用市场】下找到Jacoco插件并安装和重启。
  5. 在项目根目录下,运行 mvn package,当build成功的时候Jacoco的结果就会产生在target/site/jacoco文件夹下。
    maven package
  6. 接着,在项目根目录下运行命令 sonar-scanner,如果看到以下结果证明已经覆盖率已经可以在SonarQube上查阅。
    sonar scanner
    以上,后续继续补充如何通过 SonarLint 整合到 IntelliJ IDEA,并同时如何整合到 Jenkins 实现自动化测试。
    本文遵循 CC 4.0 BY-SA 版权协议,原文链接:
    https://blog.csdn.net/justyman/article/details/87563883

更多技术文章

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Tester_muller/article/details/126756046

智能推荐

Java下载图片并保存到本地路径_llljw的博客-程序员资料

import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection;public class DownloadImage { publi...

vue项目安装sass后,在项目中使用报错_一只大海的博客-程序员资料_vue安装saas后 项目发版有问题

1.安装sass依赖npm install --save-dev sass-loader//sass-loader依赖于node-sassnpm install --save-dev node-sass如果运行之后项目报错Module build failed: TypeError: this.getResolve is not a function at Object.loader (C:\Users\DELL\Desktop\fantastic-macarons\node_modu

百度BAE平台使用(一)注册开发者BAE环境_rainfall007的博客-程序员资料_注册成为开发者使用场景

百度BAE,即百度应用引擎,谷歌有GAE  新浪有SAE,简单来说就是一个有限制的免费服务器。百度BAE包含 云环境(云数据库,云存储等)此外,还提供Cache(缓存),Counter(计数器),Cron(定时任务),FetchURL(网页抓取),Image(图片处理),Log(日志),Rank(排行榜),Socket(网络代理),TaskQueue(任务队列)等丰富的服务支持。虽然百

Node.js 安装配置教程实战_微笑的Java的博客-程序员资料_前端node安装勾选项

1. 官网下载安装包,采用一键傻瓜式安装。2. 验证 node -v # 可以使用 npm -v # 可以使用3. npm 修改全局模块配置 npm config set profix "E:\XXXX\node_gobal" npm config set cache "E:\XXXX\node_cache"4. 修...

esp32-cam:搭建完开发环境,就是无法烧录程序?我的解决方法_流赋的博客-程序员资料

平台:Win10开发软件:Arduino环境搭建攻略参考:https://www.jianshu.com/p/c1a69a6772f3https://www.freesion.com/article/1555770767/问题1:A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header解决方法:在尝试了网上的各种办法(比如长按reset键等等)失败后,将USB转TLL模块从PL2

PB常用技巧_linybo2008的博客-程序员资料

1.RGB函数计算公式:颜色值= (65536 * Blue) + (256 * Green) + (Red)2.控件可拖动:send(handle(this),274,61458,0) 3.如何用程序控制下拉子数据窗口的下拉和收起用modify或者直接用dw_1.object.col1.dddw.showlist = true4.检索参数有些不需要传入则传%.

随便推点

ubuntu 安装php devel,在Ubuntu中安装不同的PHP版本的方法_不神马的博客-程序员资料

在Ubuntu中安装不同的PHP版本的方法发布时间:2020-08-21 11:55:50来源:亿速云阅读:113作者:小新这篇文章主要介绍在Ubuntu中安装不同的PHP版本的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在本文中,我们将给大家介绍如何使用PPA(全称Personal Package Archives即个人软件包文档)在Ubuntu中安装不同的PHP版...

vue 修改删除重新渲染数据问题_coderlin_的博客-程序员资料_vue重新渲染数据

一般删除修改是一个异步操作,当我们修改数据的时候希望修改完再从数据库取出渲染,这其中就会出现一些异步操作,导致效果往往跟我们想像不同,比如,这是添加成功后需要重新获取数据并且重新分配页面,重新获取数据这是异步操作,我们将他设为异步A,分页这是同步操作,我们设为同步B。如果按照我们所想,先去调用getinfo函数,获取数据,然后通过调用handPageChenk来设置分页,理论上是没错的。但是,发送请求是异步操作,也就是说,它会先执行同步B,在执行异步A,就是先分页了,再重新获取数据,那这样分页的数

Mongoose增删改查_方北北的博客-程序员资料

//1. 导包var mongoose = require('mongoose')var Schema = mongoose.Schema//2. 连接数据库mongoose.connect('mongodb://localhos/demo')//3. 设计表结构var userSchema = Schema({ username: { type: Strin...

http-可支持高并发下的httpClient工具类,http请求工具_执意丨的博客-程序员资料

maven依赖<dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.2</version> <...

Linux(Ubuntu/Deepin/UOS)安装显卡驱动(附卸载)_Jiale685的博客-程序员资料_deepin显卡驱动卸载不了

一、前置工作本教程是NVIDIA的驱动安装。本教程测试过了Debain系下的Ubuntu/Deepin/UOS系统,均可正常安装。不要完全照搬,该换成自己的地方就换。二、下载并安装显卡驱动去官方网站查询和下载适合自己的驱动https://www.nvidia.cn/Download/index.aspx?lang=cn禁用nouveau驱动sudo vim /etc/mod..._1671465600

2021年Android常见面试题,我先收藏为敬_左夜天的博客-程序员资料_安卓面试题2021

前言最近我一直在面试高级工程师,不管初级,高级,程序员,我想面试前,大家刷题一定是是少不了吧。我也一样,我在网上找了很多面试题来看,最近又赶上跳槽的高峰期,好多粉丝,都问我要有没有最新面试题,索性,我就把我看过的和我面试中的真题,及答案都整理好,整理了《互联网大厂面试题》并分类 72份 PDF,累计 3170页!我在持续更新中,涵盖大厂算法会更多!一丶岗位职责首先我们先看一下岗位职责1、负责安卓移动平台开发工作2.Android框架开发和维护,SDK开发技术架构升级优化,提升业务研发效率

推荐文章

热门文章

相关标签