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$

结果确认

Gradle进阶使用结合Sonarqube进行代码审查的方法

扫描结果确认

可以看到质量扫描结果和覆盖率的信息都进行了显示

Gradle进阶使用结合Sonarqube进行代码审查的方法

脆弱性信息详细

查出了一个缺陷,实际是一个误报,详细可参看maven使用方式的详细介绍。

  • https://www.jb51.net/article/153522.htm

Gradle进阶使用结合Sonarqube进行代码审查的方法

代码覆盖率

代码覆盖率的详细信息也可以在sonarqube上进行直接确认

Gradle进阶使用结合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

标签:gradle,sonarqube,审查,代码
0
投稿

猜你喜欢

  • 从零开始Java实现Parser Combinator

    2023-06-18 18:52:04
  • C#异步的世界(上)

    2021-09-21 06:01:43
  • MyBatis插入数据返回主键的介绍

    2023-10-26 03:15:21
  • Java编程基础测试题分享

    2023-11-27 22:14:58
  • Java中final变量使用总结

    2022-09-29 08:32:00
  • Java数据结构之基于比较的排序算法基本原理及具体实现

    2022-05-16 08:41:53
  • Java中MyBatis Plus知识点总结

    2023-08-11 14:12:04
  • JAVA ArrayList详细介绍(示例)

    2023-02-18 22:30:56
  • c# 获得局域网主机列表实例

    2022-07-12 21:46:58
  • Mybatis如何获取最新插入数据的id

    2023-02-26 08:15:20
  • Java算法比赛常用方法实例总结

    2023-11-28 07:15:26
  • java实现转圈打印矩阵算法

    2022-11-27 06:38:21
  • 用java等语言仿360首页拼音输入全模糊搜索和自动换肤

    2022-12-28 18:32:01
  • Java基于栈方式解决汉诺塔问题实例【递归与非递归算法】

    2023-04-10 08:05:02
  • 通过FeignClient调用微服务提供的分页对象IPage报错的解决

    2022-01-27 20:19:23
  • Java核心编程之文件随机读写类RandomAccessFile详解

    2023-11-28 17:40:05
  • java导出Excel通用方法的实例详解

    2022-06-25 14:28:25
  • C#对XML文件的各种操作实现方法

    2023-01-21 06:14:40
  • SpringBoot 将配置文件挂到 jar 包外面的操作方法

    2023-11-17 11:09:32
  • java 开发中网络编程之IP、URL详解及实例代码

    2023-08-06 10:26:29
  • asp之家 软件编程 m.aspxhome.com