首先,为什么需要SonarQube?

1、WriteClean Code

1)全局健康报告 

2)关注新增的问题 

3)强制QualityGate

4)Issue详情及建议…

详情参考:https://www.sonarqube.org/features/clean-code/

2、DevOps Integration

1)支持多种BuildSystem集成: Maven,Gradle,Ant…

2)支持多种CIEngines: Bamboo,Jenkins…

3)成功、失败通知…

详情参考:https://www.sonarqube.org/features/integration/

3、CentralizeQuality

1)所有项目inone place

2)统一的Ruleset, QualityGate…

详情参考:https://www.sonarqube.org/features/centralization/

SonarCube安装

1、下载地址:https://www.sonarqube.org/downloads/

2、 解压,配置(主要是数据库的配置)

3、 启动相应平台的脚本

./sonar start

4、验证(首次启动PROJECTS下面是空白的)

SonarCubeScanner

用于代码分析,有多种方式:

SonarQube Scanner :命令行方式

SonarQubeScanner for Maven :与Maven集成

SonarQube Scannerfor Jenkins:与Jenkins集成

….

详情参考:https://docs.sonarqube.org/display/SCAN/Analyzing+Source+Code

SonarCubeScanner 命令行方式

命令行模式具体参考:

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

SonarCubeScanner Maven方式

1、Initial Setup

     修改setting.xml文件,指定SonarCube Server的URL,其位于$MAVEN_HOME/conf 或 ~/.m2Maven

2、在项目目录下运行以下命令执行分析

    mvn clean verify sonar:sonar

详情参考:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven

3、查看报告

SonarCubeScanner Jenkins集成

1. 安装插件 (SonarQube Scanner for Jenkins + Quality Gate Plugin)

  Jenkins: 系统管理 > 管理插件

2、配置

Jenkins:系统管理 >系统设置

3、项目配置(在原配置上需要增加的地方)

1)在构建环境里勾选“PrepareSonarQubeScanner environment”

2)在构建里增加代码分析步骤

3)在构建后操作里增加Quality Gate步骤。这个很关键,用于当代码质量不通过时,不执行部署。ProjectKey可以在SonarQube上找到,执行一次Maven方式的分析后SonarQube就会有。

4. 执行构建

如果代码质量通过,项目就可以部署,结果如下。

如果代码质量不通过,可以看到后面的部署没有进行,本次集成状态为失败。

5、 查看失败原因

点击红色”ERROR”可以前往SonarQube查看报告。

点击”NewBugs”下面的数字查看Bug详情。

查看Bug概述

查看Bug详情

点击“…”查看为什么这是个Bug以及如何fix。

6、Bug处理

管理员可以把Bug分配给开发成员;也可确认这不是Bug后将其设为”won’tfix”,这样下次构建时这个Bug就不会出现在报告里,也不会再对QualityGate产生影响。还可以进行其他的一些处理,详情如下。

若Bug被分配给某个开发成员,他可以在他的账号下看到。(不知道这个能不能和JIRA集成:))

SonarCube还有很多其他功能,例如Quality Gate状态变化邮件通知,自定义Rule…这些有需要的话可以进一步深挖下。

SonarLint

使用Sonarlint Eclipse插件,对新增或修改的代码进行即时检查,降低Issue进入到Jenkins集成的时候才被发现的几率

Sonarlint Eclipse插件下载和安装

https://marketplace.eclipse.org/content/sonarlint

SonarQube与Jenkins结合提高代码质量的更多相关文章

  1. 提高代码质量 CheckStyle FindBugs PMD

    提高代码质量-工具篇 注:这是一篇翻译文章,原文:How to improve quality and syntax of your Android code,为了理解连贯,翻译过程中我修改了一些陈述 ...

  2. Findbug在项目中的运用--提高代码质量

     FindBugs是一个静态分析工具,它检查类或者 JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 第一 手动安装 在Ec ...

  3. Web前端开发最佳实践(11):使用更严格的JavaScript编码方式,提高代码质量

    前言 JavaScript语言由于其固有的灵活性,所以导致开发者可以写出很多诡异的代码,甚至一些较为正常的特性,如类型隐式转换.this的指代等等,也会让刚接触此语言的开发者头大不已.尤其是那些熟知其 ...

  4. (转)提高代码质量---one

    1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao ...

  5. 用 Eclipse 插件提高代码质量

    如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题.在 让开发自 ...

  6. 提高代码质量系列之二:重构小技巧——if篇

    前言: if,相信是童鞋们使用的最频繁的关键字了,而且很多时候,我们使用的if都是在无意识的状态下随手而为.键入if,两下回车(我使用了resharper,可以自动编排if的格式),再信手写下我们需要 ...

  7. Jenkins 集成Sonar代码质量扫描

    Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...

  8. 测试驱动开发(Test-Driven Development,简称TDD)--单元测试-->提高代码质量

    !!! 1.估算和做项目计划时要算上单元测试时间 2.开发之前写单元测试代码 盖房子的时候,工人师傅砌墙,会先用桩子拉上线,以使砖能够垒的笔直,因为垒砖的时候都是以这根线为基准的.TDD就像这样,先写 ...

  9. linux 提高代码质量的工具

    很多IT公司对于软件开发都有严格的分工,这包括设计.测试.服务支持等等.但是,我一直都认为只有开发者才是真正对软件质量负责的人.没有好的软件设计,软件质量基本上是无从谈起.当然,要做到这一点是需要额外 ...

随机推荐

  1. PAT 甲级 1001 A+B Format (20)(20 分)

    1001 A+B Format (20)(20 分) Calculate a + b and output the sum in standard format -- that is, the dig ...

  2. html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件

    html文件在head标签中引入js地址和直接写js代码,所用时间是不同的,因为引入js地址,文件加载的时候需要通过通讯协议去解析地址,读取外部文件

  3. Jmeter(三十六)纵横并发、限制QPS

    一.纵横并发 Jmeter设计并发事件,这应该是一项必备技能. 首先来看并发的概念. 通常在性能测试中会涉及到并发用户数的概念,有关并发用户数(系统用户数)的详解后续再记. (有关并发.并行的概念参考 ...

  4. androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法

    点击File-->setting-->Appearance将里面的Override default fonts by(not recommended)打钩去掉. 这个是目前找到唯一办法.

  5. 一次线上zabbix server 挂掉的思考

    突然间发现zabbix 挂了,咋发现的呢?报警的世界突然安静了,你就会觉得不妥了.这是运维人员的通病,有报警嫌烦,没报警心里会不安.1,图形界面上确实显示zabbix server is not ru ...

  6. 在线学习和在线凸优化(online learning and online convex optimization)—在线凸优化框架3

    近年来,许多有效的在线学习算法的设计受到凸优化工具的影响. 此外,据观察,大多数先前提出的有效算法可以基于以下优雅模型联合分析: 凸集的定义: 一个向量 的Regret定义为: 如前所述,算法相对于竞 ...

  7. 在线学习和在线凸优化(online learning and online convex optimization)—在线分类问题2

    紧接上文,我们讲述在线分类问题 令,为0-1损失,我们做出如下的简化假设: 学习者的目标是相对于hypotheses set: H具有low regret,其中H中的每个函数是从到{0,1}的映射,并 ...

  8. 03-String常用方法

    1.获取方法 /* * 编辑:刘诗华 int length() 获取字符串的长度 char charAt(int index) 获取特定位置的字符 (角标越界) int indexOf(String ...

  9. Java - 35 Java 实例

    Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用. Java 环境设置实例 Java 实例 – 如何编译一个Java 文件? Java 实 ...

  10. Android转场动画,Avtivity转场动画;

    转场动画 - 共享元素动画 先看效果: Activity1点击小图标开启Activity2: 开启Activity2效果就像是小图标放大了填充上去的,关闭Activity2回到Activity1时又像 ...