[发明专利]混合程序分析方法和系统在审
申请号: | 201310524568.9 | 申请日: | 2013-10-30 |
公开(公告)号: | CN103810096A | 公开(公告)日: | 2014-05-21 |
发明(设计)人: | E·贝斯克洛夫尼;M·皮斯托亚;O·特里普 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/445 |
代理公司: | 北京市中咨律师事务所 11247 | 代理人: | 张亚非;于静 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 混合 程序 分析 方法 系统 | ||
技术领域
本发明涉及程序分析。更具体地说,本发明涉及混合程序分析。
背景技术
程序分析过程一般可被分为两类:静态程序分析和动态程序分析。在静态程序分析中,计算机软件的分析可在不执行被分析的应用的情况下执行。在动态程序分析中,在分析期间使用测试输入在真实或虚拟的处理器上执行应用。
根据Rice定理静态程序分析一般被视为不可判定的。Rice定理认为,对于部分函数的任何非平凡(non-trivial)属性,没有任何一般的且有效的方法来判定一种算法是否判定部分函数具有该属性。Rice定理不仅提供了理论性上限,而且还提供了许多实际的分析所遇到的极限。
在这些不可判定的分析中,有判定给定调用点(call site)的确切被调用方法集(也称为指针分析)不可判定的问题、解析反射调用不可判定的问题、以及与字符串分析和常量传播相关的问题。
上述问题的可靠解通常具有较差的精确度。例如,对Class.newInstance的调用(在Java中)的结果可以近似为本应用的类层次结构的所有可能类型。但是,结果的近似产生不精确且不可伸缩的分析。
已经引入了改进的技术来执行两阶段分析,其中首先运行动态程序分析以确定用于随后的静态分析的动态提示,然后静态分析可以使用动态提示以便为具有挑战性的代码结构建模。例如,在Class.newInstance的情况中,动态分析记录newInstance调用分配的确切对象类型,然后静态程序分析可以使用该数据进行指针分析以解析(resolve)虚拟调用。尽管一般理解对动态程序分析的这种依赖是不可靠的,但是两阶段分析所要解决的问题是不可判定的并且可靠的近似解经常由于丧失精确性而不可用。即,与静态程序分析相比,两阶段分析只是一种改进的折衷。
发明内容
根据本发明的实施例,一种混合程序分析方法包括启动应用的静态程序分析;在判定需要动态分析的应用的代码结构时,通过静态程序分析器产生到动态程序分析器的查询;将控制从所述静态程序分析器传递到所述动态程序分析器并启动所述代码结构的动态程序分析;通过所述动态程序分析器将所述查询解析为可用于调用所述应用的所述代码结构的参数集;通过所述动态程序分析器产生所述参数集;通过所述动态程序分析器使用所述参数集调用所述应用的所述代码结构;通过所述动态程序分析器回答所述查询;以及将控制从所述动态程序分析器传递到所述静态程序分析器并继续所述应用的所述静态程序分析。
根据本发明的实施例,混合程序分析系统包括:被配置为启动应用的静态程序分析的模块;被配置为在判定需要动态分析的应用的代码结构时,通过静态程序分析器产生到动态程序分析器的查询的模块;被配置为将控制从所述静态程序分析器传递到所述动态程序分析器并启动所述代码结构的动态程序分析的模块;被配置为通过所述动态程序分析器将所述查询解析为可用于调用所述应用的所述代码结构的参数集的模块;被配置为通过所述动态程序分析器产生所述参数集的模块;被配置为通过所述动态程序分析器,使用所述参数集调用所述应用的所述代码结构的模块;被配置为通过所述动态程序分析器回答所述查询的模块;以及被配置为将控制从所述动态程序分析器传递到所述静态程序分析器并继续所述应用的所述静态程序分析的模块。
一种混合程序分析方法包括启动应用的静态程序分析;在判定需要动态分析的应用的代码结构时,通过静态程序分析器产生到动态程序分析器的查询;通过所述动态程序分析器将所述查询解析为可用于调用所述应用的所述代码结构的参数集;通过所述动态程序分析器产生所述参数集;通过所述动态程序分析器,使用所述参数集调用所述应用的所述代码结构;通过所述动态程序分析器将对应于所述查询的答案返回到所述静态程序分析器;以及继续所述应用的所述静态程序分析。
根据本发明的实施例,混合程序分析系统包括:被配置为启动应用的静态程序分析的模块;被配置为在判定需要动态分析的应用的代码结构时,通过静态程序分析器产生到动态程序分析器的查询的模块;被配置为通过所述动态程序分析器将所述查询解析为可用于调用所述应用的所述代码结构的参数集的模块;被配置为通过所述动态程序分析器产生所述参数集的模块;被配置为通过所述动态程序分析器,使用所述参数集调用所述应用的所述代码结构的模块;被配置为通过所述动态程序分析器将对应于所述查询的答案返回到所述静态程序分析器的模块;以及被配置为继续所述应用的所述静态程序分析的模块。
附图说明
下面参考附图更详细地描述本发明的优选实施例:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310524568.9/2.html,转载请声明来源钻瓜专利网。