SonarQube与Jenkins结合提高代码质量
首先,为什么需要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结合提高代码质量的更多相关文章
- 提高代码质量 CheckStyle FindBugs PMD
提高代码质量-工具篇 注:这是一篇翻译文章,原文:How to improve quality and syntax of your Android code,为了理解连贯,翻译过程中我修改了一些陈述 ...
- Findbug在项目中的运用--提高代码质量
FindBugs是一个静态分析工具,它检查类或者 JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 第一 手动安装 在Ec ...
- Web前端开发最佳实践(11):使用更严格的JavaScript编码方式,提高代码质量
前言 JavaScript语言由于其固有的灵活性,所以导致开发者可以写出很多诡异的代码,甚至一些较为正常的特性,如类型隐式转换.this的指代等等,也会让刚接触此语言的开发者头大不已.尤其是那些熟知其 ...
- (转)提高代码质量---one
1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao ...
- 用 Eclipse 插件提高代码质量
如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题.在 让开发自 ...
- 提高代码质量系列之二:重构小技巧——if篇
前言: if,相信是童鞋们使用的最频繁的关键字了,而且很多时候,我们使用的if都是在无意识的状态下随手而为.键入if,两下回车(我使用了resharper,可以自动编排if的格式),再信手写下我们需要 ...
- Jenkins 集成Sonar代码质量扫描
Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...
- 测试驱动开发(Test-Driven Development,简称TDD)--单元测试-->提高代码质量
!!! 1.估算和做项目计划时要算上单元测试时间 2.开发之前写单元测试代码 盖房子的时候,工人师傅砌墙,会先用桩子拉上线,以使砖能够垒的笔直,因为垒砖的时候都是以这根线为基准的.TDD就像这样,先写 ...
- linux 提高代码质量的工具
很多IT公司对于软件开发都有严格的分工,这包括设计.测试.服务支持等等.但是,我一直都认为只有开发者才是真正对软件质量负责的人.没有好的软件设计,软件质量基本上是无从谈起.当然,要做到这一点是需要额外 ...
随机推荐
- [转].NET Framework、C#、CLR和Visual Studo之间的版本关系
原文地址:http://www.xcode.me/more/microsoft-net-framework-version-define C#版本 .NET Framework版本 CLR版本 Vis ...
- Kong网关介绍与安装小记
本文主要为kong安装小记,系统环境为centos 6.7 本文转载请注明出处 —— xiaoEight 介绍 Kong 是在客户端和(微 ...
- PHPer常见的面试题总结
1.平时喜欢哪些php书籍及博客?CSDN.虎嗅.猎云 2.js闭包是什么? 3.for与foreach哪个更快? 4.php鸟哥是谁?能不能讲一下php执行原理? 5.php加速器有哪些?apc.z ...
- Jmeter(十三)Debug Sampler
上篇记录了关联的一些内容.当然,关联是有“风险”的,经常写的正则表达式,jsonpath,xpath自己认为是没问题的,可是就是跑起来有问题,百思不得其解,究竟是数据问题还是表达式的问题,本篇就来记录 ...
- [UE4]子控件Child Widget顶层容器选择
如果父级容器是Canvas,则可以直接设置尺寸.放到其他widget的时候也会保持设定好的尺寸(而不管父容器是什么类型).
- CentOS7 设置集群时间同步
1. 安装ntp时间同步工具 yum -y install ntp ntpdate #安装ntpdate时间同步工具 ntpdate cn.pool.ntp.org #设置时间同步 hwclock - ...
- 物体检测之FPN及Mask R-CNN
对比目前科研届普遍喜欢把问题搞复杂,通过复杂的算法尽量把审稿人搞蒙从而提高论文的接受率的思想,无论是著名的残差网络还是这篇Mask R-CNN,大神的论文尽量遵循著名的奥卡姆剃刀原理:即在所有能解决问 ...
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...
- 如何用两块硬盘做磁盘阵列的教程Raid 1
如今,市面上的大部分服务器都自带有阵列卡.只要有两块以上硬盘,我们就可以利用服务器自带的阵列卡做磁盘阵列.Raid 1 为例.Raid 1 是磁盘阵列的其中一个系列,将两块硬盘构成磁盘阵列,可以保证数 ...
- 踩过的坑:InteliIJ IDEA 打开的项目突然左侧目录结构消失了,如何处理?
试了很多的办法,删除项目,然后重新从git下载,再导入项目,但是对于暂存未上传到git的文件也会被一并删除,这样就亏大发了 之前一直没有找到解决办法,这里记一下终身有效的办法,并且比较好操作 按下列步 ...