好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

sonarqube

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

https://hub.docker测试数据/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中添加如下插件版本信息

?

1

2

3

plugins {

  id "org.sonarqube" version "2.6.2"

}

添加apply plugin信息

?

1

apply plugin: "org.sonarqube"

sonarqube设定信息

最简单的需求的情况下,非多工程项目做以上配置即可,接下来就是传递给gradle所需要的sonarqube的详细信息,而这些可以通过property的方式传入,详细的使用方式在前面的基础中都已介绍,此处不再赘述,主要设定的内容为:

url:systemprop.sonar.host.url=http://localhost:32003 用户名:systemprop.sonar.login=admin 密码:systemprop.sonar.password=admin

设定方式可以使用如下方式:

?

1

2

3

4

5

6

7

sonarqube {

   properties {

     property "sonar.host.url" , "http://localhost:32003"

     property "sonar.login" , "admin"

     property "sonar.password" , "admin"

   }

}

build.gradle详细信息

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

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

http://HdhCmsTesttuohang.net/article/173436.html

代码覆盖率

代码覆盖率的详细信息也可以在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进行代码审查的方法的详细内容...

  阅读:29次