Gradle进阶使用结合Sonarqube进行代码审查的方法
作者:liumiaocn 发布时间:2021-12-17 08:49:56
作为代码质量检查的流行工具,比如Sonarqube能够检查代码的“ * ”,跟代码结合起来能够更好地提高代码的质量,这篇文章将会介绍如何结合gradle和sonarqube对代码质量与测试覆盖率进行分析。
Sonarqube
Sonarqube可以使用docker版本快速搭建,可以参看一下Easypack整理的镜像,具体使用可以参看如下链接,这里不再赘述:
https://hub.docker.com/r/liumiaocn/sonarqube/
环境假定
本文使用到的sonarqube为本机32003可以访问到的服务。
gradle的sonarqube插件
gradle中的sonarqube的插件是org.sonarqube,用来在gradle中调用sonarqube进行代码质量分析。详细介绍请参看:
https://plugins.gradle.org/plugin/org.sonarqube
当前插件最新版本:2.6.2(更新于2018/2/13)
使用方式
指定plugin
在build.gradle中添加如下插件版本信息
plugins {
id "org.sonarqube" version "2.6.2"
}
添加apply plugin信息
apply plugin: "org.sonarqube"
sonarqube设定信息
最简单的需求的情况下,非多工程项目做以上配置即可,接下来就是传递给gradle所需要的sonarqube的详细信息,而这些可以通过property的方式传入,详细的使用方式在前面的基础中都已介绍,此处不再赘述,主要设定的内容为:
URL:systemProp.sonar.host.url=http://localhost:32003
用户名:systemProp.sonar.login=admin
密码:systemProp.sonar.password=admin
设定方式可以使用如下方式:
sonarqube {
properties {
property "sonar.host.url", "http://localhost:32003"
property "sonar.login", "admin"
property "sonar.password", "admin"
}
}
build.gradle详细信息
liumiaocn:springboot liumiao$ cat build.gradle
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id "org.sonarqube" version "2.6.2"
}
sonarqube {
properties {
property "sonar.host.url", "http://localhost:32003"
property "sonar.login", "admin"
property "sonar.password", "admin"
}
}
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'org.sonarqube'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.liumiaocn'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
jacocoTestReport {
reports {
xml.enabled false
html.enabled true
}
}
check.dependsOn jacocoTestReport
liumiaocn:springboot liumiao$
扫描方式
可以使用gradle sonarqube即可进行扫描
执行日志
liumiaocn:springboot liumiao$ gradle sonarqube
> Task :sonarqube
SCM provider autodetection failed. No SCM provider claims to support this project. Please use sonar.scm.provider to define SCM of your project.
Class not found: javax.annotation.Nonnull
Class not found: javax.annotation.meta.When
Class not found: javax.annotation.meta.TypeQualifierNickname
Class not found: org.junit.jupiter.api.extension.ExtendWith
BUILD SUCCESSFUL in 6s
5 actionable tasks: 1 executed, 4 up-to-date
liumiaocn:springboot liumiao$
结果确认
扫描结果确认
可以看到质量扫描结果和覆盖率的信息都进行了显示
脆弱性信息详细
查出了一个缺陷,实际是一个误报,详细可参看maven使用方式的详细介绍。
https://www.jb51.net/article/153522.htm
代码覆盖率
代码覆盖率的详细信息也可以在sonarqube上进行直接确认
小结
使用SonarQube可以很好的检查出代码的问题,但是在实际的项目中需要进行裁剪和定制,扫出来的不一定有问题,没有扫出来也不一定万事大吉,但是一定程度的代码规范和质量提高还是很有用处,实际在使用的时候应该根据具体情况进行实施。
参考文章
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle
https://plugins.gradle.org/plugin/org.sonarqube
来源:https://blog.csdn.net/liumiaocn/article/details/84230429


猜你喜欢
- Android为我们提供了竖直方向的滚动控件GridView,但如果我们想让它水平滚动起来,就需要自己实现了。以下使用的测试数据datas集
- 本文实例为大家分享了Android刮刮卡效果控件,供大家参考,具体内容如下刮刮卡类: package com.reyo.view;impor
- 在注册表启动项里添加一项,路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run或者直接:运行-&
- 下面通过图文并茂的方式给大家讲解下Java开发环境配置,具体内容如下:对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA
- 前言看 WMS 代码的时候看到了 Handler.runWithScissors 方法,所以来恶补一下public static Windo
- 玩安卓的人都知道adb,玩adb的人都知道install和uninstall,但是为什么adb shell pm install packa
- 继承(加上封装和多态性)是面向对象的编程的三个主要特性(也称为“支柱”)之一。 继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。其
- 本文实例讲述了C#采用递归实现阶乘的方法,供大家参考之用。通常来说,如果想实现一个阶乘,比如6 * 5 * 4 * 3 * 2 * 1,首先
- C#开发,收到下位机串口数据(温度信息),可能是正数也可能是负数,如何转换?第一反应是想起书本上的理论,无符号数表示范围是多少到多少,有符号
- 读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(filePath) 或指定编码方式 File.R
- Java未被捕获的异常在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的。下面的小程序包括一个故意导致被零除错
- 本文会介绍从一个最基本的java工程,到Web工程,到集成Spring、SpringMVC、Spring
- 一、unity方向导航制作设计要求是方向导航随着鼠标旋转转换方向,效果图如下:具体的实现方法主要有两个步骤,分别为UI设计和脚本编写。我的设
- 什么是jdkjdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的工具包。也可以说jdk是jav
- 背景数据库在保存数据时,对于某些敏感数据需要脱敏或者加密处理,如果一个一个的去加显然工作量大而且容易出错,这个时候可以考虑使用 * ,本文针
- 概述 这是一个自定义色盘,根据点,直线和圆的几何学加上hsv颜色模型完成技术点几何:圆的标准方程式:(x-a)²
- 在C语言中一般用typedef来为回调函数定义别名(参数名)。 别名通过宏定义typedef来实现,不是简单的宏替换。可以用作同
- 一:想都不用想的,有图有真相,看着爽了,在看下面源码二:实例源码分析①:首先定义接口package com.demo.tools.view;
- 本文实例为大家分享了Android实现图片点击 * 效果的具体代码,供大家参考,具体内容如下实现效果:需要注意的点:ValueAnimator
- 1. 基本类型只能按值传递,而每个基本类型对应的封装类是按引用传递的。2. 从性能上说java中的基本类型是在堆栈上创建的,而所有的对象类型