SonarQube和Maven的集成

摘要:
2.2.Sonar和Maven的集成主要集中在这一部分:1。将以下连接添加到设置中。Maven的conf下的xml

1.1. SonarQube简介

SonarQube是一款免费用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。

SonarQube服务结构

SonarQube和Maven的集成第1张

SonarQube能带来什么:

1.糟糕的复杂度分布
  文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试

SonarQube和Maven的集成第2张

2.重复,显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方

SonarQube和Maven的集成第3张

3.缺乏单元测试, sonar可以很方便地统计并展示单元测试覆盖率

SonarQube和Maven的集成第4张

4.没有代码标准,sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
5.没有足够的或者过多的注释,没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
6.潜在的bug,sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug

SonarQube和Maven的集成第5张

 

SonarQube和Maven的集成第6张

SonarQube和Maven的集成第7张

7.糟糕的设计(原文Spaghetti Design,意大利面式设计)
  通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关 可以检测自定义的架构规则通过sonar可以管理第三方的jar包可以利用LCOM4检测单个任务规则的应用情况
检测耦合

SonarQube和Maven的集成第8张

SonarQube和Maven的集成第9张

8、以气泡图的方式展示出问题的分布

SonarQube和Maven的集成第10张

9、支持自动生成报告

SonarQube和Maven的集成第11张

10、支持将问题发布到jira和redmine上面,然后redmine和sonarqube之间可以互相访问。

SonarQube和Maven的集成第12张

然后redmine那边会自动生成对应问题

11、支持问题指派后,以邮件的方式发送到对应的责任人的邮箱:

12、支持每次项目在使用maven编译一次后,产生的新的问题都会以邮件的方式发送出来。

13、支持和和maven以及hudson的集成。

SonarQube和Maven的集成第13张

SonarQube和Maven的集成第14张

13、能够统计出redmine和jira中对应项目的问题

SonarQube和Maven的集成第15张

14、支持主流的findbugs和checkstyle插件

15、支持代码设计的分析

1.2. SonarQube的安装

SonarQube支持目前主流的数据库,比如Oracle,mysql等。安装过程很简单,此处略去。

1.              SonarQube的使用

2.1.SonarQube的配置

1、管理员登录后,可以使用右上角的配置按钮来进行配置和设置。

2、选择某个项目,可以查看对应的问题:

3、进入到某个项目下可以查看与项目相关的所有内容。

2.2. Sonar和Maven的集成

目前重点介绍一下这个部分:

1、在maven的conf下的settings.xml中添加如下的一段连接就可以了

SonarQube和Maven的集成第16张

<profile>

   <id>sonar</id>

   <activation>

      <activeByDefault>true</activeByDefault>

   </activation>

   <properties>

<sonar.jdbc.url>jdbc:mysql://192.168.0.243:3306/sonar</sonar.jdbc.url>

      <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>

      <sonar.jdbc.username>sonar</sonar.jdbc.username>

      <sonar.jdbc.password>sonar</sonar.jdbc.password>

      <!-- SERVER ON A REMOTE HOST -->

      <sonar.host.url>http://192.168.0.243:9000</sonar.host.url>

   </properties>

</profile>

2、在maven编译时,后面加上sonar:sonar参数就OK了。比如:

clean install -Dmaven.test.skip=true sonar:sonar

3、执行完后,数据就会展示到sonarqube的平台中,并且在产生了新bug后,会收到提醒邮件。

  【原文归作者所有,欢迎转载,但是保留版权】

免责声明:文章转载自《SonarQube和Maven的集成》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇人人都能学会的webpack5搭建vue3项目(二)配置Vuexml与Excel转换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqoop2的相关配置,启动,停止命令(转)

原博客地址:http://blog.csdn.net/u012772782/article/details/52949181 sqoop2配置: 一、添加sqoop2到系统环境变量中: export SQOOP2_HOME=/opt/application/sqoop/sqoop-1.99.7/ export CATALINA_BASE=$SQOO...

mysql2es全量更新方案

mysql到es的全量更新方案可以通过 logstash来实现 logstash可以做基于全量的定时更新,也可以做基于时间的定时更新。 logstash的使用方式如下(本人用的是logstash-7.6.1,不同版本在使用上应该有细微区别,区别百度可解决) 1.https://artifacts.elastic.co/downloads/logstash/...

JDBC的URL

JDBC的URL=协议名+子协议名+数据源名。 协议名总是“jdbc”。 子协议名由JDBC驱动程序的编写者决定。 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。 几种常见的数据库连接 oracle驱动:oracle.jdbc.driver.OracleDriverURL:jdbc:oracle:thin:@machine_name:p...

SpringBootSecurity学习(22)前后端分离版之OAuth2.0自定义授权码

使用JDBC维护授权码 前面的代码中,测试流程第一步都是获取授权码,然后再携带授权码去申请令牌,授权码示例如下: 产生的授权码默认是 6 位的,产生以后并没有做任何管理,可以说是一个临时性的授权码,oauth2也提供了将授权码使用jdbc进行管理的功能,首先在数据库中创建表 oauth_code : code:存储服务端系统生成的code的值(未加密...

sonar:查询全部项目的bug和漏洞总数(只查询阻断/严重/主要级别)

1、统计所有项目主要以上的漏洞和bug -- 统计所有项目主要以上的漏洞和bug SELECT count(*) FROM issues WHERE project_uuid IN (SELECT uuid FROM projects WHERE scope='PRJ') and issue_type IN(2,3) AND severity IN('B...

MySql数据库连接池专题

转载自:https://www.cnblogs.com/aspirant/p/6747238.html 最近学习mybatis的时候感觉连接池的知识忘记了,所有复习下 一、什么是数据库连接池? 官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用...