没有合适的资源?快使用搜索试试~ 我知道了~
Jenkins集成Java 静态代码分析工具调研和引入
需积分: 17 13 下载量 34 浏览量
2015-11-27
10:38:23
上传
评论 2
收藏 5.42MB PDF 举报
温馨提示
试读
53页
Java 静态代码分析工具调研和引入,包括maven与findbugs、checkstyle、pmd。gradle与findbugs、checkstyle、pmd,lint。
资源推荐
资源详情
资源评论
Java 静态代码分析工具调研和引入
一、 引言.............................................................................................................................3
二、 简介.............................................................................................................................4
2.1 什么是静态代码分析..........................................................................................................4
2.2 静态代码分析工具的优势................................................................................................. 4
2.3 Java 静态代码分析理论基础和主要技术......................................................................... 4
三、 Java 静态分析工具介绍.......................................................................................... 6
3.1 Checkstyle 介绍....................................................................................................................6
3.2 FindBugs 介绍...................................................................................................................... 7
3.3 PMD 介绍............................................................................................................................. 9
3.4 Jtest 介绍..........................................................................................................................11
3.5 工具比较.............................................................................................................................12
3.5.1 不同工具的分析对象及应用技术对比................................................................ 12
3.5.2 内置编程规范.........................................................................................................12
3.5.3 错误检查能力.........................................................................................................14
四、 JAVA 工程集成静态代码检查................................................................................ 17
4.1 Jenkins+Maven+checkstyle 集成....................................................................................17
4.1.1 Pom 的配置..................................................................................................................... 17
4.1.2 Jenkins 的 Job 配置.........................................................................................................18
4.2 Jenkins+Maven+Findbugs 集成......................................................................................21
4.2.1 POM.xml 的修改.............................................................................................................21
4.2.2 JOB 的配置......................................................................................................................23
4.2.3 结果的查看.....................................................................................................................24
4.2.4 问题备注.........................................................................................................................25
4.3 Jenkins+Maven+PMD 集成............................................................................................ 28
4.3.1 Pom 的配置..................................................................................................................... 28
4.3.2 Jenkins 的 Job 配置.........................................................................................................29
4.3.3 问题列表.........................................................................................................................31
五、 Android 工程集成静态代码检查........................................................................... 34
5.1 Jenkins+Gradle+checkstyle 集成.................................................................................... 34
5.1.1 Jenkins 配置.............................................................................................................34
5.1.2 gradle.build 的配置如下......................................................................................... 35
5.1.3 构建结果查询..........................................................................................................36
5.2 Jenkins+ Gradle +Findbugs 集成....................................................................................... 38
5.2.1 Jenkins 配置如下:................................................................................................ 38
5.2.2 gradle.build 的配置如下......................................................................................... 39
5.2.3 构建结果查看..........................................................................................................42
5.3 Jenkins+ Gradle +PMD 集成............................................................................................. 42
5.3.1 Jenkins 配置如下:................................................................................................ 42
5.3.2gradle.build 的配置如下.......................................................................................... 44
5.3.3 构建结果查看.........................................................................................................47
5.3.4 问题列表..........................................................................................................................48
5.4 Jenkins+ Gradle +Lint 集成............................................................................................... 49
5.4.1 Lint 的介绍..............................................................................................................49
5.4.2 Jenkins 配置如下:................................................................................................ 50
5.4.3 构建结果查看.........................................................................................................51
六、 展望...........................................................................................................................53
一、 引言
在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺
陷。Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、
有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测
试成本。目前市场上的 Java 静态代码分析工具种类繁多且各有千秋,我们项目调研现有 4
种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),其中引入并集成了
Checkstyle,FindBugs,PMD 这三种静态代码工具。
下面首先介绍静态检查工具,其次从这 4 种主流工具功能、特性等方面对它们进行分析
和比较,最后再介绍我们项目引用的 3 种主流工具集成 Jenkins 的步骤。其中部分文段取自
网络,请知晓。
对几种静态工具的了解基本上是从网络文章,具体的操作配置是参考官方参考文档。在
这过程中遇到了很多问题,尤其是 Android 工程的静态代码检查,网上关于 gradle 的文章较
少,所有花费了很多的时间去参考官方的英文文档。内容方面会有纰漏,请大家批评指正。
二、 简介
2.1 什么是静态代码分析
静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、
接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语
句,错误的递归,非法计算,可能出现的空指针引用等等。
在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动
态测试用例的参考。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设
计和编码缺陷是可以通过静态代码分析来发现和修复的。
但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开
发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠
性并节省软件开发和测试成本。
2.2 静态代码分析工具的优势
1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。
3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成
本。
2.3 Java 静态代码分析理论基础和主要技术
缺陷模式匹配:缺陷模式匹配事先从代码分析经验中收集足够多的共性缺陷模式,将待
分析代码与已有的共性缺陷模式进行模式匹配,从而完成软件的安全分析。这种方式的优点
是简单方便,但是要求内置足够多缺陷模式,且容易产生误报。
类型推断:类型推断技术是指通过对代码中运算对象类型进行推理,从而保证代码中每
条语句都针对正确的类型执行。这种技术首先将预定义一套类型机制,包括类型等价、类型
包含等推理规则,而后基于这一规则进行推理计算。类型推断可以检查代码中的类型错误,
简单,高效,适合代码缺陷的快速检测。
模型检查:模型检验建立于有限状态自动机的概念基础之上,这一理论将被分析代码抽
象为一个自动机系统,并且假设该系统是有限状态的、或者是可以通过抽象归 结为有限状
态。模型检验过程中,首先将被分析代码中的每条语句产生的影响抽象为一个有限状态自动
机的一个状态,而后通过分析有限状态机从而达到代码分析的 目的。模型检验主要适合检
验程序并发等时序特性,但是对于数据值域数据类型等方面作用较弱。
数据流分析:数据流分析也是一种软件验证技术,这种技术通过收集代码中引用到的变
量信息,从而分析变量在程序中的赋值、引用以及传递等情况。对数据流进行 分析可以确
定变量的定义以及在代码中被引用的情况,同时还能够检查代码数据流异常,如引用在前赋
值在后、只赋值无引用等。数据流分析主要适合检验程序中的 数据域特性。
剩余52页未读,继续阅读
资源评论
慎独慎行
- 粉丝: 206
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于STM8S103F3P6+STM8S207C8T6+STM32F103 单片机三合一最小系统开发板硬件(原理图+PCB)工程
- 基于C语言实现的打印杨辉三角
- 基于ASIO的插件式服务器,支持TCP,UDP,串口,Http,Websocket统一化的数据接口,隔离开发人员和IO之间的操作
- stm32 usb接口通信
- Chessmate是一款完全免费的国际象棋学习软件,支持引擎分析,学开局、残局、棋书解读、大数据分析等功能
- 总结整理的Android面试Java基础知识点面试资料精编汇总文档资料合集.zip
- .android_lq
- FDN5632N-VB一款SOT23封装N-Channel场效应MOS管
- 毛老板-2404250902.amr
- Java类加载流程(双亲委派)流程图.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功