SonarQube和Jenkins的集成

标签: sonarqube jenkins | 发表时间:2016-04-30 12:09 | 作者:aoyouzi
出处:http://www.iteye.com

0引言

 

在Java软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测试成 本。目前市场上的 Java 静态代码分析工具种类繁多且各有千秋,因此本文将分别介绍现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),并从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。

 

1何为静态代码分析

 

静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。

在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。

但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。

 

2.静态分析优势

 

1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。

2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。

3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。

 

3.静态分析主要技术

 

  • 缺陷模式匹配:缺陷模式匹配事先从代码分析经验中收集足够多的共性缺陷模式,将待分析代码与已有的共性缺陷模式进行模式匹配,从而完成软件的安全分析。这种方式的优点是简单方便,但是要求内置足够多缺陷模式,且容易产生误报。
  • 类型推断:类型推断技术是指通过对代码中运算对象类型进行推理,从而保证代码中每条语句都针对正确的类型执行。这种技术首先将预定义一套类型机制,包括类 型等价、类型包含等推理规则,而后基于这一规则进行推理计算。类型推断可以检查代码中的类型错误,简单,高效,适合代码缺陷的快速检测。
  • 模型检查:模型检验建立于有限状态自动机的概念基础之上,这一理论将被分析代码抽象为一个自动机系统,并且假设该系统是有限状态的、或者是可以通过抽象归 结为有限状态。模型检验过程中,首先将被分析代码中的每条语句产生的影响抽象为一个有限状态自动机的一个状态,而后通过分析有限状态机从而达到代码分析的 目的。模型检验主要适合检验程序并发等时序特性,但是对于数据值域数据类型等方面作用较弱。
  • 数据流分析:数据流分析也是一种软件验证技术,这种技术通过收集代码中引用到的变量信息,从而分析变量在程序中的赋值、引用以及传递等情况。对数据流进行 分析可以确定变量的定义以及在代码中被引用的情况,同时还能够检查代码数据流异常,如引用在前赋值在后、只赋值无引用等。数据流分析主要适合检验程序中的 数据域特性。

4.主流的静态分析工具——Java

Checkstyle  FindBugs  PMD  Jtest  sonarqube(原名sonar)

移动应用Java Android App静态分析:Infer(from Google)

http://8453383.iteye.com/blog/1428816 http://blog.chinaunix.net/uid-301743-id-5081405.html

 

5SonarQube和Jenkins的集成

 

Window下详见:http://blog.csdn.net/wuxuehong0306/article/details/50847893

 

Linux下:

5.1 Job方式

和普通Job配置一致,但将Sonar插件运行的脚本配置其中,即可完成与5.2一样的功能

 

5.2插件方式

 

Jenkins和Sonar集成的原理大概是这样的,Jenkins在其插件管理中心,下载sonar插件并进行配置,与sonar关联上。然后Jenkins在完成一次集成构建后,就会通知sonar进行源代码分析的操作。大家都知道Jenkins在构建的过程中是有从SVN下载源码这一步操作的,而sonar就是对Jenkins下载好的源码进行解析,将代码的质量等各种参数以图形化的页面展示给用户。 

下面就来介绍Jenkins和Sonar如何集成和协调工作的。 

插件安装

1、 在线安装:

选中Jenkins的系统管理->管理插件->可选插件栏,搜索SonarQube Plugin,点击直接安装即可。

 

这里写图片描述

 

不过这种在线安装一般行不通,因为要访问Google进行下载。

 

这里写图片描述

 

所以咱们采用离线安装方式。 

2、 离线安装:

①. 首先下载SonarQube Plugin插件: https://wiki.jenkins-ci.org/display/JENKINS/SonarQube+plugin,下载完是sonar.hpi文件。

 

这里写图片描述

 

②. 选中Jenkins的系统管理->管理插件->高级->上传插件

 

这里写图片描述

 

将刚才下载的插件sonar.hpi,上传至Jenkins,并根据提示重启Jenkins即可。

重启后到 插件管理->已安装->查看SonarQube Plugin是否存在

 

这里写图片描述

 

出现上图插件,则表示安装成功。

 

SonarQube Plugin配置

找到系统管理->系统设置->SonarQube栏, 进行下列设置即可。

 

这里写图片描述

 

 

进行一次项目分析

选择一条可以成功构建的项目,修改其配置。

增加构建后操作步骤->SonarQube 即可。

 

这里写图片描述

 

添加配置后,项目的页面会出现SonarQube的标志

 

这里写图片描述

 

然后点击立即构建,构建完成后,Jenkins会通知sonar进行代码质量分析,登陆sonar查看

 

这里写图片描述

 


已经多出了刚才配置的项目,这样咱们就可以很方便的进行代码走查,分析代码质量了。咱们距离自动化环境又进了一步。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [sonarqube jenkins] 推荐:

SonarQube和Jenkins的集成

- - 研发管理 - ITeye博客
在Java软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷. Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测试成 本. 目前市场上的 Java 静态代码分析工具种类繁多且各有千秋,因此本文将分别介绍现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),并从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中.

Jenkins的plugin开发

- - CSDN博客研发管理推荐文章
       Jenkins强大的功能主要靠其丰富的plugin体现,之前的一篇博客《 Jenkins安装plugin》中介绍了如何找到并安装需要的plugin. 虽然目前已经有大量非常优秀的plugin可供使用,但是有时候仍需要自己开发一些满足项目特殊要求的plugin. 下面通过一个简单实例,介绍Jenkins的plugin的整个开发过程.

Deploy the spring cloud project using jenkins

- - Telami
先简单记录下Jenkins部署maven聚合工程要点. Root pom配置成项目根目录的pom.xml. maven命令单独install 欲构建的项目. 选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔). 表示同时处理选定模块所依赖的模块. 表示同时处理依赖选定模块的模块.

Jenkins: 使用Jenkins搭建持续集成(CI)环境

- - CSDN博客研发管理推荐文章
首先从官网 http://jenkins-ci.org/下载 Java Web Archive (.war). 例如我保存到 D:\jenkins\jenkins.war. 运行Jenkins需要JRE的支持Java5 or later. 默认会运行在8080端口,正常启动完成如下图. 我们可以在浏览器输入127.0.0.1:8080来查看,如图我们的Jenkins已经跑起来了.

基于Jenkins的持续集成

- - ITeye博客
Jenkins是一个持续集成工具,前身叫做Hudson,在实际项目应用中非常重要,本文介绍这一工具的使用方法. 首先我们访问Jenkins的网站:. Jenkins 的网址是: http://jenkins-ci.org/. 从网站下载Jenkins: http://mirrors.jenkins-ci.org/war/latest/jenkins.war.

使用Jenkins 实现自动化构建

- - 研发管理 - ITeye博客
Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布. 意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(这是我个人的称呼,在下边会用到,就是Jenkins的安装位置),进行编译、打包和发布到容器中.

T-Mobile 和 Jenkins 案例研究

- - DockOne.io
Jenkins 在 T-Mobile 节省数千小时和数百万美元. 大多数人都知道 T-Mobile 是无线服务提供商. 毕竟,我们拥有国际化的业务,并且是美国第三大移动运营商. 但是我们还是一家技术公司,提供的新产品包括 TVision 家庭电视服务,T-Mobile Money 个人银行产品以及 SyncUp Drive 车辆监控和路边辅助设备.

使用Jenkins持續集成與發佈Android應用程式

- Fstone - INET6
這是上週在Coscup 2011活動中演講的主題與投影片. Jenkins (http://jenkins-ci.org/) 是個廣為使用的持續集成(Continue Integration)框架,可以協助軟體工程師統合處理各種圍繞著「寫程式」之外的程式開發工作(如版本控制、環境設定、編譯、測試、發佈).

[原]jenkins 集成 redmine 账户验证的方案

- - 赖勇浩的编程私伙局
jenkins 集成 redmine 账户验证的方案. 赖勇浩( http://laiyonghao.com). Jenkins 是最著名的持续集成工具,又因为它开源免费、插件众多,成为了许多团队做持续集成的首选. Jenkins 本身支持多种账户验证方案,但最棒的是它支持验证插件,可以把账户验证的工作完全托管给插件,这就为它支持更多的账户验证方案提供了无限可能.

Google App Engine通过Jenkins增加了持续集成支持

- - InfoQ cn
由于与云软件提供商CloudBees的合作关系,现在Google App Engine用户可以使用持续集成工具Jenkins来构建、测试与部署其云应用了. 该新服务(通过托管的CloudBees. DEV@Cloud产品来提供)延续了PaaS的趋势——提供了持续集成工具,可以连接到主流的源码控制仓库上.