第卷期计算机学报34 6Vol.年月201CHINESJOURALFMPTune一个可半化扩工具北京大信息技术院高软育部实验室摘模式根据预先设定知识对受检行这种有使用简单查找速度快优是近来法比较迅但前多数并没户提供足够易效以充其能力针问作者出了现支持该—D不仅描述板帮地手库还fy在指下旦被义添加至便类关键词图号/犇犗犐犃犛犲犿犻狌狋狅犪犮犈狓狀狊犫犾犳犜狔GZWQX犓犔狉犎犵犺犆犱狑犕狆犘犽犝狏犅犼hrbjwvqx’z收稿日:;最终修改到本课题得国家自然科基金重点项目()、“九七三”础研97究发展规划创新群体资助梁广泰,男B8生博士主要方向为静态代码分析缺陷等孟娜女maigt@spkdc李进辉硕钟浩理员约束动挖掘张路教授导师领域程序与解测试王千祥于中间件的调整系统书
期梁广泰花间学习何引言与似也样求e1 描述语静态代码缺陷分析技术通过对进行一个v来推测程序运时的表现为,从而发中[]可能存在这类主要包括自动抽象解.得I2345释、定理证明模型检符号执和基于未机制6式查等板度本文考虑匹配上简化找方法非常限如下两大步骤:首先已有出探索高效降低总结并提炼“知识”;然后采用成快速增强错误受以确半是否含相应把果设计实该—CO7报告形呈给户种()特点fy①性工具FindBugsPMD②③④JltLjHamrpco89作原SAERT身选择适图所示接收之擎根据填信息生合格将件会载再费太精某库利规则挖掘函源客档若干转滤换研究我们使些往希望够扩充仅轻支持己关注负担省去集但目前多数没添加新繁琐劳更地供力部虽其体展易面第节还很不足最因及优势阐例都被硬编到论器当需验础讨必须手修改帮助甚至写借鉴了依靠/思想同w入达减少量Xhbz
计算学年查错能力;第节总结全文,并提出对未来工作的一为会5些设想.向添加1动因支持户通编2 充找上本首先描述、和需写如图所示检器FindBugsPMDHamrpco等个典型具各自缺陷模式扩展方配置件定义该新SAER4然后概要地介绍解决案过程合相关信息以便于测到体例子进行:“代码中误调用了类时报告最还修改()法”在序只启TheJv而不直接载入这tk3blCfI6y7{8x90wO=NVKUL/q"&j_}供两种丰富得多几乎涵盖大部分常见表达但详更快捷符X受制面形化界输利选择应说规则实现填必生成让够被由同样打开使其指明里即可每就是当我们候撰也硬基有限状态机另外速继承半挖掘z量列从与似若干板
期梁广泰等静态析;1 packgedu.st23imornfAbRl4STPvy5VDI6N7O8jL9{0FChx(,)=/}′"!〈〉U:MqWQ&-图在中需要添加的用于查找缺陷“错误地调了方法”代码通过上述介绍我们可以发现无论是自行编文件复杂写检测式还使特殊语言描、整理都对工具者学习能力及应提出很高求这种来本身实妨碍根据个性定义扩展设计犆犗犇犃降低充模效率与和相比内置形化引擎库板更利知识一面挖掘器三部分组成如示然符合人思维负责受序逐同类型惯不像门程那样额外花时进并将报告呈给间另由每含有参数较少输入信息也因此快除之所供半动帮助批量从而速主优势其良好易户既各体系结构新直接X
算机学年80式库用于集中保存和管理各种缺陷模信息;等为挖掘器负责“半自动化”地并生成新的提供基础结果静态技术控制别名当户交受.查找引擎给会逐一调对31 包含大量检分析代码进行然后向报出所有是指具体程序测图示括两部:CODA5块,例如文件流否及时关闭工厂合构属内而在匹配过往需要利间底层来完或2高精度特定使到以准确判断依织方我把某个象被置多它们不同实现外组通很只FindBugsPM这发数据请求根己缓相应硬编样得则直接做回启与业务逻辑紧密联产该待续想增强能力必须修改源者添加写目前已经法影响了可扩展、类型次常传播较少主Nlerf空针锁计活性变SpWthLockHay()其参看表U览犆犗犇犃子称容解IVw持任何情况下T局赋值但未vb循环误无
期梁广泰等半静9()外置缺陷模式的检查器型别创建2是指中那些将得本敏感内CODA待测信息从错误找逻辑剥离出两输入f来,并集存放在库由于这类跟踪.与进行了很好变样当被我们可以不修改工具代码前提下通过够定位体哪触犯向添加新达到扩展函义便叙T能力目假设块仅条语句遇实现三:获“时序相关”、值作移推和继承/迁注打开之①jv主要负责闭约么方法调用顺就=w共同点它几乎都表示成有限状态自动机形例如对象使FileInputSram完后需执cos销毁其应图所6为正确分析结束13果该处则程合;说明未包含此汇决g描述文件多何XML详见节介绍取采种策略特路径7EB 口着->另运而会地根据化知道受际情况适驱各个转换若某一报告给户流首先每构造控制然上做数违反最判断否拷贝功y面直接复即
计机学报年值相关的缺陷模式检查器表详见由应同所②2“”主要负责找方法具测逻辑以我们只把被共享调用传入出参数,例如编写到代码而各()不信息独立定义在库会运jav.sqlReutSgAry能为中有多个属于此类每时自动从将这些加载0COD对进行该一览并使完成发匹配外置 犆犗犇犃名称型分析某种VfwFindITpMhom实做取无效或非N余比较算c举来说清晰划工作职还助户与更好地解甚至扩展知识P新之后他需选都可述适板须B犕形它样心细因若干描、化性添几乎涵盖大部文件过程常量播和空指针提供结果确输是否合列了已经现及继承/③构者接口等没重b则必U前…依未按照规范求1犖直间YX任何技术字节序3保存管理冗根据其便别放集图示界面8力离仅利择填
期梁广泰等半化静代码工具6必要的信息并点击“添加”按钮,便能够自动CODA生成该缺陷模式对应机描述文件存XML入库中于值相关和继承/实现别而所.用户可以通过直接改写板支持类复合新当不我们提供进行图、910时候撰有示包括了限状态方扩展例节各dn如象在使完后需间转移条FileutpSramg执()法销毁;调及正确与否受检cos之程序被析若处=这个说明未wh上然将某一错误首先拆分两子会报告给查 〈?〉xv"UT8fbVE2jIk3:4’
计算学报年缺陷模式挖掘器参考名字似性3. 的库扩展工作可以是人进尽期就CODA行,也半自动方新掉负面由不仅对用户有较高要求而且效率那些低为了提实现地准确度从支持化很多其包括三部分:规则因记录小节、精和转换如图所示省1虽帮助但正验果即引入仍够得知识环还定与此称具力静态把序信息添加至结构()于生成客代码调软件机制突特点它种函数时应遵循目前我们已经个批指下[02]中第MTS将适存去在大量情况;JRF通阅读搜整繁琐劳源推导出能获取更献文档该ocpePI端都到“打开ilnutram例使完后法关闭”这s需先共比领域某插桩并收集跟踪据然再里操统或境传条析满足主根类供各之间系断语言处理相随着日益增越来企技术描述业级剖一列问题程员往解深错误接口致编写产初始筛选挑靠留待角看检查否4步基本上非常重才等发Yg采两启过滤涉猎原
期梁泰陷分析工具只关注那些普遍存在于各软件中的基础还另两处性、常见缺,例如空指针引用声明变量未被位Q使等以确保可广泛;()绝大多2y数并没有提供足够方便扩展机制添加新文第模式当间不断出现时这无法=及地相因此很难查.本实验我们别即闭CODAFindBugs和对一客户正依然PMHamrpJEo代码进行检测认找上是否优势永假支过程源编译成会4 为了示半自动化库内容剔掉充能力升所发挥作设计下:首先利将1序到k项目选择且w76j30Sbet受运8也5却个报平台告比U结果应种少器而都则得益与束前“vx之后调I”该生类cl经私人核hT属型静态构造函通R语句创建象但其它执跨隐说准除外由
计年/在跨类的方法间分析上不够完善,导致其报xCODAL出该缺陷为误.938通过人工核实我们发现:所Gv述种中件相关准确率漏475%T约20由于有技术、规则挖掘都成熟具还很多需要地—K但借助模式库半自动化扩展机制检测能力短时内得到迅速和提w升验结果可以认与它6XY比对面较大优势语W j针数静态代码查找没用户供足易本文了一个支持基匹配并开仅描板便根据身选择适当来ZQ感兴趣帮快U整理添加新特别经表杨朝红宫云战肖庆王雅软型试明同FindBugsPMHamrp系统北京邮电学客程序定JEo调列显未作将更强尽探索捷此外努改进使各因劣直接决产生信度最后继续器精算从而给I步减少筛量参考献[]1NelRkh(cfySt)b
期梁广泰等:一个可半自动化扩展的静态代码缺陷分析工具5,犔犐犃犖犌狌犪狀犵犜犻borni1984Ph.DcadteHsu犣犗狅7lpgmyfwzv犕犈3犠犙犡0犑犎MS犅犮犽狉犱TkNBR()CG2F6IOALJj“”'xq