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

 更新时间:2018年12月26日 15:08:54   作者:liumiaocn  
今天小编就为大家分享一篇关于Gradle进阶使用结合Sonarqube进行代码审查的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

作为代码质量检查的流行工具,比如Sonarqube能够检查代码的“七宗罪”,跟代码结合起来能够更好地提高代码的质量,这篇文章将会介绍如何结合gradle和sonarqube对代码质量与测试覆盖率进行分析。

Sonarqube

Sonarqube可以使用docker版本快速搭建,可以参看一下Easypack整理的镜像,具体使用可以参看如下链接,这里不再赘述:

环境假定

本文使用到的sonarqube为本机32003可以访问到的服务。

gradle的sonarqube插件

gradle中的sonarqube的插件是org.sonarqube,用来在gradle中调用sonarqube进行代码质量分析。详细介绍请参看:

使用方式

指定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使用方式的详细介绍。

代码覆盖率

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

小结

使用SonarQube可以很好的检查出代码的问题,但是在实际的项目中需要进行裁剪和定制,扫出来的不一定有问题,没有扫出来也不一定万事大吉,但是一定程度的代码规范和质量提高还是很有用处,实际在使用的时候应该根据具体情况进行实施。

参考文章

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Java GC 机制与内存分配策略详解

    Java GC 机制与内存分配策略详解

    这篇文章主要介绍了Java GC 机制与内存分配策略详解的相关资料,需要的朋友可以参考下
    2017-02-02
  • java实现菜单滑动效果

    java实现菜单滑动效果

    这篇文章主要介绍了java实现菜单滑动效果,效果非常棒,这里推荐给大家,有需要的小伙伴可以参考下。
    2015-03-03
  • Struts2实现上传单个文件功能

    Struts2实现上传单个文件功能

    这篇文章主要为大家详细介绍了Struts2实现上传单个文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • springboot实现图片上传与下载功能

    springboot实现图片上传与下载功能

    这篇文章主要为大家详细介绍了后端spring项目经常要做的功能,实现图片上传和下载,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • JDK 8和JDK 17的区别和新特性大全

    JDK 8和JDK 17的区别和新特性大全

    这篇文章主要给大家介绍了关于JDK 8和JDK 17的区别和新特性的相关资料,文中总结一些Jdk8到Jdk17的一些新特性,给大家选择jdk版本的时候有些参考性,需要的朋友可以参考下
    2023-06-06
  • SpringCloud之@FeignClient()注解的使用方式

    SpringCloud之@FeignClient()注解的使用方式

    这篇文章主要介绍了SpringCloud之@FeignClient()注解的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 详解JUC并发编程之锁

    详解JUC并发编程之锁

    这篇文章主要为大家介绍了JUC并发编程之锁,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Java中的转换流、压缩流、序列化流、打印流及应用场景

    Java中的转换流、压缩流、序列化流、打印流及应用场景

    这篇文章主要介绍了Java中的转换流、压缩流、序列化流、打印流及应用场景,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 与近日火爆的ChatGPT聊Elasticsearch源码

    与近日火爆的ChatGPT聊Elasticsearch源码

    这篇文章主要为大家分享了与近日火爆的ChatGPT聊Elasticsearch源码的话题内容,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • SpringBoot利用filter实现xss防御功能

    SpringBoot利用filter实现xss防御功能

    Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击,攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行,利用这些恶意脚本,攻击者可获取用户的敏感信息,本文给大家介绍了SpringBoot利用filter实现xss防御功能,需要的朋友可以参考下
    2024-09-09

最新评论