使用Gradle做Java代码质量检查的方法示例

Maven --> Gradle

首先安装gradle:

Mac安装

brew install gradle

Ubuntu安装

apt install gradle

Maven项目切换Gradle项目,再Maven根目录下运行:

gradle init --type pom

运行成功之后运行命令gradle build,成功之后删除pom.xml即可。

使用jacoco分析单元测试

jacoco是一个分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中那些部分被单元测试到,哪些部分没有被单元测试覆盖,并且还会给出整个项目的单元测试覆盖情况。

build.gradle中添加jacoco插件

apply plugin: 'jacoco'

运行命令进行单元测试分析

gradle jacocoTestReport

或者可以再Gradle的工具菜单中Tasks -> other -> jacocoTsestReport可以直接启动单元测试的分析。

在项目中build目录下可以看到jacoco目录,以及reports/test/html目录,后者主要是jacoco生成的报告。

使用SonarQube做代码质量检查

SonarQube是一个开源的代码质量管理系统,支持超过25种编程语言,提供重复代码、编码标准、单元测试、单元测试覆盖率,代码复杂度,潜在Bug、注释和软件设计的报告等。
在gradle中使用SonarQube首先要添加依赖,在编译脚本中添加:

buildscript {
  repositories {
    maven { url "https://plugins.gradle.org/m2/" }
  }
  dependencies {
    classpath("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6-rc1")
    classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
  }
}

添加插件:

apply plugin: "org.sonarqube"

配置SonarQube:

sonarqube {
  properties {
    property "sonar.sourceEncoding", "UTF-8"
    property "sonar.host.url", "https://sonarcloud.io"
    property "sonar.jdbc.url", "jdbc:mysql://my.server.com/sonar"
    property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
    property "sonar.login", "test"
    property "sonar.password", "test"

  }
}

或者只使用token上传分析结果即可:

property "sonar.login", "token"

SonarQube本身并没有提供单元测试覆盖率的工具,需要在使用jacoco的分析结果,在SonarQube中添加jacoco相关的配置

sonarqube {
  properties {

    property "sonar.jacoco.reportPath", "$rootDir/build/jacoco/test.exec"
    property "sonar.jacoco.itReportPath", "$rootDir/build/jacoco/acceptanceTest.exec"
    property "sonar.jacoco.excludes", "*/st/*"

    property "sonar.sourceEncoding", "UTF-8"
    property "sonar.host.url", "https://sonarcloud.io"
    property "sonar.jdbc.url", "jdbc:mysql://my.server.com/sonar"
    property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
    property "sonar.login", "test"
    property "sonar.password", "test"

  }
}

运行命令gradle sonarqube即可对代码进行分析,并上传分析结果,因为SonarQube的分析依赖jacoco的单元测试分析,所以需要先运行命令gradle jacocoTestReport。最终需要运行的组合命令是:

gradle jacocoTestReport
gradle sonarqube

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解JAVA高质量代码之数组与集合

    1.性能考虑,优先选择数组 数组在项目开发当中使用的频率是越来越少,特别是在业务为主的开发当中,首先数组没有List,Set等集合提供的诸多方法,查找增加算法都要自己编写,极其繁琐麻烦,但由于List,Set等集合使用泛型支持后,存放的都为包装类,而数组是可以使用基本数据类型,而使用基本数据类型的执行运算速度要比包装类型快得多,而且集合类的底层也是通过数组进行实现. 2.若有必要,使用变长数组 在学习集合类当中,很多人喜欢将数组的定长拿来和集合类型的自变长来做比较,但其实这种比较并不合适,通过观

  • 使用Gradle做Java代码质量检查的方法示例

    Maven --> Gradle 首先安装gradle: Mac安装 brew install gradle Ubuntu安装 apt install gradle Maven项目切换Gradle项目,再Maven根目录下运行: gradle init --type pom 运行成功之后运行命令gradle build,成功之后删除pom.xml即可. 使用jacoco分析单元测试 jacoco是一个分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中那些部分被单元测试到,哪些部分没有

  • java代码效率优化方法(推荐)

    1. 尽量指定类的final修饰符 带有final修饰符的类是不可派生的. 如果指定一个类为final,则该类所有的方法都是final.Java编译器会寻找机会内联(inline)所有的 final方法(这和具体的编译器实现有关).此举能够使性能平均提高50% . 2. 尽量重用对象. 特别是String 对象的使用中,出现字符串连接情况时应用StringBuffer 代替.由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理.因此,生成过多的对象将会给程序的性能带来很大

  • Java单例模式实现静态内部类方法示例

    Singleton是众多设计模式中最容易理解的一种,也是众多设计模式中较为重要的一种设计模式.接下来我们看看具体介绍. Singleton模式实现的重点在于将构造函数私有化(private),并通过提供静态公有函数(public synchronized static xxx getInstance)来获取定义在类中的静态私有成员(private static xxx instance),通过一个简单的判断静态实例是否为空来控制这个类只能够new一次,即控制了一个类只能有单个实例,一般的实现如下

  • idea快速生成代码配置的方法示例

    前言 这里是用的goland idea,实际上这个idea和 intellij idea的配置是一样的,并没有太大区别, 开整 1.进入 File->settings->Editor->Live Templates 2.添加模板组 点击右上角的绿色+号,然后选择template group ,然后输入group的name,这个名字你随便起,我的是:my.然后点ok 属于你自己的组就创建好了 3. 添加模板 选中刚才创建的myGroup,然后再次点击右侧的绿色+,这次选择的是第一个1. L

  • Go Java算法之解码方法示例详解

    目录 解码方法 方法一:动态规划(Java) 方法二:动态规划——优化(go) 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> "1" 'B' -> "2" ... 'Z' -> "26" 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法).例如,"11106" 可以映射为: "AAJF" ,将消息分组为 (1 1 1

  • java生成缩略图的方法示例

    本文实例讲述了java生成缩略图的方法.分享给大家供大家参考,具体如下: package com.util; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; /** * 生成压缩图 * */ public class ImageScale { private int width; private int heigh

  • Java读取.properties配置文件方法示例

    一.介绍 Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值" 二.读取 这里我采用的是getResourceAsStream的文件读取方法 如果想要使用这个方法,则需要了解一些基本使用信息: 1.读取文件路径范围:只局限于工程的源文件中 2.文件访问形式:带"/"是绝对路径,不带"/"是相对路径 3.读取文件类型:主要为:.properties文件,.xml文件 三.使用

  • Java使用反射调用方法示例

    本文实例讲述了Java使用反射调用方法.分享给大家供大家参考,具体如下: 一 代码 import java.util.*; import java.io.*; import java.lang.reflect.*; public class ExtendedObjectPoolFactory { // 定义一个对象池,前面是对象名,后面是实际对象 private Map<String, Object> objectPool = new HashMap<>(); private Pr

  • thinkPHP框架实现类似java过滤器的简单方法示例

    本文实例讲述了thinkPHP框架实现类似java过滤器的简单方法.分享给大家供大家参考,具体如下: 写java web代码的时候,可以定义过滤器,对控制器进行过滤,可以实现权限验证等等 在thinkphp中也可以通过继承父类的方法,实现类似的需求 父类代码 <?php /** * Created by PhpStorm. * User: xieyicheng * Date: 2014/12/11 * Time: 14:43 */ namespace Admin\Controller; use

  • java引用jpython的方法示例

    本文实例讲述了java引用jpython的方法.分享给大家供大家参考,具体如下: import java.util.ArrayList; import java.util.List; import org.python.core.PyException; import org.python.core.PyInteger; import org.python.core.PyObject; import org.python.util.PythonInterpreter; public class

随机推荐