- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
硖屠
静分析技术找到“真正”的代码质量
HeartBleed bug
互联心脏出血”网民信息面临泄密风险
网络栋弹”当箭全球互联网大花紧急得险
場线”南日,全斗联同六拌
丰烈二,客”(使用正当造忧媒的口人士)们经了一个个取之支
当,我北乃聪到市虎个际大牌五彩用公司样日开会以,对发就们
2亿网民闻作社密脸open55满间怨大
g: Check which
sites have been patched
=.0+②=看垂
p
软件研发测试经济学
s16000
绝大部分缺陷在修复成
85%
本较低时被引入。
大部分缺陷在成本较高
9 Defects
时被发现和修复。
introduced
in this phas
1,000
口% Defects
found in
this phase
■ S Cost to
epair defect
250
in this phas
s25
s100
Coding
Unit
Function
Field
Post
Test
Test
Test
Release
Source: Applied Software Measurement, Capers Jones. 1996
代码静态分析技术
静态分析
后期的功能测试,集成测试
系统测试等。
设计
研发
QA
产品发布
管理
Sx cOS
I Ox cost
30x cost
代码静态分析
定义:在不执行计算机程序的条件下,对源代码进行分析,找出代码
缺陷
执行方式:一般配合静态程序分析工具进行
·采用技术:数据流分析、机器学习、语义精简.
可检测类型:死锁,空指针,资源泄露,缓冲区溢岀,安全漏洞,竞
态条件
优点
·能够检测所有的代码级别的可执行路径组合,快速,准确
直接面向源码,分析多种问题
在研发阶段开始找到并修复多种问题,节省大量时间/人力成本
·注意:静态分析不是万能的,测试是持续的过程,非一劳永逸
现存问题
编译器警告:保证类型安全
最初级的静态分析,检测规则简单
·中间语言分析:检测字节码( Byte Code)的缺陷,将其重新映射到真实代
码中
在转换与映射过程中易造成精度丢失
高误报率:目前静态分析产品的误报率普遍在30%以上。
缺陷种类较少,找到的问题级别不高:多数为代码规范或低级缺陷,非实
际Bug
如命名规范、类定义规范,最佳实践…
易用性较低:基本上都是一次性的使用工具,无法与SDLC集成
SCM集成:如SVN,cvs, Perforce,Gi
Bug tracking: tn Bugzilla, Jira
改进型的静态分析方案
基于 Meta Compilation的静态分析
由斯坦福大学教授 Dawson Engler提岀,在深度理解代码与程序语义的基础上检测缺陷
·旨在查找“真正的代码缺陷
实现原理:
·使用可扩展的meta语言定义正确性 Checke
°将程序的源码使用状态机进行抽象描述( State Machine Abstraction
°使用xgcc系统匹配 Checker与抽象状态机状态,找到问题所在的点
可准确检测实际的Bυug(内存和指针问题、资源泄露、缓冲区溢出,数组越界,
心脏出血漏洞.)
·能够检测高达亿行级别的代码库,避免“状态燝炸
·使用模型检验与符号执行技术,误报率降低至15%以下
算法已步入实际应用
面向企业的 Coverity软件
面向开源代码的 Coverity SCAN
源码分析-数据流分析
if(x==0)
do_ something(x)
X=1;
源码分析可以探知开发者的想法:“x=1″需要在调用
do something后继续执行。
提出警告:循环没有包含所有语句
如何进行Java代码静态分析?
Java语言被编译成 M bytecode-在运行时被转换成本地可执行
代码的分析
选项一
分析byte-code:用户编译他们的软件,然后分析编译后的可
执行文件与调试信息,分析引擎联系找到的缺陷与源代码位
置
·某些开源工具的实现原理
选项二:
获取所有的Java编译过程并执行分析
Bytecode分析工作仍旧存在,但包含更多的内容
基本的工作流
·获取所有编译过程
·每当“ javac(或其他相关APⅠ)被调用后,编译获取系统
记录所有的编译器选项,操作,源代码与调用的库文件
·面向源代码和库文件可进行全面编译后分析
·找到的缺陷将被展示给研发人员修复
原创力文档


文档评论(0)