当前位置: 首页 > 专利查询>微软公司专利>正文

迭代静态和动态软件分析制造技术

技术编号:2911646 阅读:235 留言:0更新日期:2012-04-11 18:40
无缝地迭代地执行静态和动态代码分析。软件分析工具集成动态和静态分析的结果并迭代地利用来自先前的一个或多个分析的结果以扩充当前分析。在调试过程期间,将在运行时收集的信息与静态代码分析结果集成在一起。该信息是作为测试和调试过程的结果的一部分来生成和存储的。随后利用所存储的信息来提供经改进的分析结果。该软件分析工具消除了对软件开发者分别执行静态分析和动态分析的需要。

【技术实现步骤摘要】
【国外来华专利技术】

一般涉及计算系统,且更具体地涉及用于计算系统的软件开发。背景典型的软件分析工具提供静态地和动态地独立分析软件代码的能力。通过如数据流分析、值跟踪等技术,静态分析可以标识代码中的正确性问题而不必实际执行该代码。然而,静态分析受到可通过对经编译的二进制代码的静态检查而获得的信息的限制。动态分析可以提供例如,关于时序和分配了多少存储器等信息。在软件开发过程期间,软件开发者通常独立地执行静态分析和动态分析,尝试将一类分析的结果应用到另一类。概述提供本概述以便以简化的形式介绍将在以下说明性实施例的详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。一种软件分析工具无缝地同时提供静态和动态代码分析两者。在静态分析期间,收集、发布并利用通过执行代码所获得的信息以启用新的分析并基于运行时行为将分析的结果集中于可证明有意义的组。该软件分析工具集成动态和静态分析的结果并迭代地利用来自先前的一个或多个分析的结果以扩充当前分析。该软件分析工具消除对软件开发者分别执行静态分析和动态分析的需要。在一示例实施例中,在调试过程期间,执行被分析的代码。集成来自先前的静态和动态分析的结果以扩充该调试过程。该调试过程的结果指示静态分析结果和动态分析结果两者。附图简述以上概述以及以下详细描述在结合附图阅读时可被更好地理解。出于示出耦合的、迭代的动态和静态软件分析的目的,在附图中示出了其示例性构造;然而,迭代动态和静态软件分析不限于所公开的具体方法和手段。图1是用于提供迭代动态和静态软件分析的示例性过程的流程图。-->图2是用于提供迭代动态和静态软件分析的另一示例性过程的流程图。图3是用于迭代地、动态地和静态地分析软件的示例过程的流程图,该过程是调试过程的一部分。图4是用于迭代地、动态地和静态地分析软件的示例系统的图。说明性实施例的详细描述在调试过程期间,集成静态和动态软件分析结果。将在运行时收集的信息与静态代码分析结果集成在一起。该信息作为测试和调试过程的附带结果来生成,且在一示例实施例中被持久存储到盘。随后利用所存储的信息来提供经改进的分析结果。在一示例实施例中,在构建时,调用静态分析。在其初始状态,调节静态分析来最小化噪声。即,只要信息不足够完整来保证高确定性结果(或完全不存在),则将不会发生分析。作为构建代码的附带结果,对该应用程序进行插装(instrument)来在运行时收集特定度量。该信息是在用户运行应用程序的任何时候(包括调试场景)动态地收集的。在该示例实施例中,在运行时,动态地收集特定数据并将其持久存储到存储。在后续静态分析期间,恢复该信息并用其来将静态分析结果细化为一组低噪声、高价值消息和/或启用全新的静态地发生的分析,但该分析只在动态地收集的度量可用时才是可能的。例如,在一示例性场景中,静态分析工具包含检测目标代码中,或在托管分析的情况下检查IL(中间语言)中的无效性的检查。该检查不是默认地启用的,因为可能在数百个位置处检测到该无效性模式并且,在大多数情况下,解决任何单个违反都不会产生有意义的性能增益,并且因此不值得花费时间来修补增加引入代码缺陷而增加的风险。在该示例场景中,在构建时,对代码进行插装来记录对各个方法或函数所发生的调用的数量。用户执行该代码,且收集这些度量。在后续分析示意(gesture)中,对一方法激发上述无效性检测检查。静态分析阶段检查储存库中的分析目标方法,并记录其相对于该应用程序中的其它方法/函数是被频繁调用的。该静态分析检查向用户呈现违反,因为现在已确定,如果解决该问题则可能产-->生有意义的性能增益。在另一示例场景中,存在验证调用点感兴趣的某些事物的检查。例如,该检查可以尝试确定调用点是否要除去对一参数的引用。如果是,则静态检查器可以警告用户谁可证明地向该调用点传递了可能的空项,这可导致在运行时崩溃。该检查不能分析虚拟调用点,因为调用点只引用方法的虚拟声明。即,IL包含定义的一般化引用;其不引用提供该定义的任何特定具体实现。在运行时期间,检测实现虚拟方法的特定子类并将之与IL中存在的一般性引用进行关联。在后续静态分析期间,上述检查可以检索可证明地与一般性调用点相关联的特定实现,并使该特定实现经受其检查。图1是用于提供迭代动态和静态软件分析的示例性过程的流程图。在一示例实施例中,如图1所示,执行动态软件分析并用先前存储的静态分析结果来扩充该动态软件分析的结果。在步骤12启动动态软件分析。在步骤14执行动态软件分析(DA)。动态软件分析可以通过任何适当的动态软件分析工具来执行。例如,动态分析可以利用诸如MICROSOFTVISUAL STUDIO等软件开发工具来执行。在动态软件分析期间,执行被分析的软件或其部分并且执行运行时分析。动态软件分析的结果可以包括时序信息,诸如例如执行一操作和/或运行被分析的软件的一部分(片段)所需要的时间量。示例动态软件分析度量包括调用被执行的频率、执行一函数所需要的经验时间、与虚拟调用点相关联的方法的定义和调用在执行时是否分配存储器。在一示例实施例中,使用调用被执行的频率来细化高确定性的且被频繁激发的静态分析性能检查。在这种情况下,将结果缩小到被频繁调用的分析目标组是有利的。修补不经常调用的项的时间不保证这一好处,因为增量式性能增益很小。代码改变还引入退化的风险,这是将结果集中于最有意义的组的另一原因。在一示例场景中,用户可能想要指定一方法或函数是性能敏感的。即,该方法或调用需要在特定的时间阈值内执行。可以利用执行函数所需要的实际经验时间来确定在运行时,执行时间是否超过该阈值。并且,可以在后续静态分析运行中发布结果。该静态分析还可以指示什么调用点对执行-->中所花费的时间负责。需要访问特定调用点实现的静态分析不能操作虚拟调用点。可以确定与虚拟调用点相关联的特定具体方法的定义并用其来扩充该静态分析。可以向该静态分析提供诸如绑定到虚拟调用点的特定子类等信息。在一示例场景中,可能需要了解在执行期间是否分配了存储器。静态地确定是否发生了存储器分配可能很困难且在某些情况下是不可能的。例如,经由静态分析不能确定因对虚拟方法的调用而导致的存储器分配。可以动态地收集该信息并将其提供给后续静态分析。在步骤16,确定是否存储了来自先前的动态软件分析的度量本文档来自技高网...

【技术保护点】
一种用于分析软件的方法,所述方法包括: 动态地分析软件实体; 检索指示对所述软件实体和所述软件实体的一个版本中的一个的先前的静态分析的结果的至少一个静态度量; 将所检索的至少一个静态度量集成到所述软件实体的动态分析中;以及  存储因将所检索的至少一个静态度量集成到所述软件实体的动态分析中所得的至少一个扩充的度量。

【技术特征摘要】
【国外来华专利技术】US 2006-6-13 11/451,8511.一种用于分析软件的方法,所述方法包括:
动态地分析软件实体;
检索指示对所述软件实体和所述软件实体的一个版本中的一个的先前
的静态分析的结果的至少一个静态度量;
将所检索的至少一个静态度量集成到所述软件实体的动态分析中;以

存储因将所检索的至少一个静态度量集成到所述软件实体的动态分析
中所得的至少一个扩充的度量。
2.如权利要求1所述的方法,其特征在于,还包括在集成之前存储来
自所述软件实体的动态分析的至少一个动态度量。
3.如权利要求2所述的方法,其特征在于,存储所述至少一个动态度
量以供与以下的至少一个一起使用:
所述软件实体和所述软件实体的一个版本中的至少一个的后续动态分
析;以及
所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分
析。
4.如权利要求1所述的方法,其特征在于,存储所述至少一个扩充的
度量以供与以下的至少一个一起使用:
所述软件实体和所述软件实体的一个版本中的至少一个的后续动态分
析;以及
所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分
析。
5.如权利要求1所述的方法,其特征在于,动态度量包括以下中的至
少一个:在执行所述软件实体期间所述软件实体的一部分被执行的频率、
所述软件实体中的参数的值的范围、执行所述软件实体的一部分所利用的
存储器量、以及用于执行所述软件实体的一部分的执行时间。
6.如权利要求1所述的方法,其特征在于,静态分析包括以下中的至
少一个:所述软件实体中的代码行数、秩复杂性、和所述软件实体中的参
数的值的范围。
7.一种用于分析软件的方法,所述方法包括:
静态地分析软件实体;
检索指示对所述软件实体和所述软件实体的一个版本中的一个的先前
的动态分析的结果的至少一个动态度量;
将所检索的至少一个动态度量集成到所述软件实体的静态分析中;以

存储因将所检索的至少一个动态度量集成到所述软件实体的静态分析
中而得的至少一个扩充的度量。
8.如权利要求7所述的方法,其特征在于,还包括在集成之前存储来
自所述软件实体的静态分析的结果的至少一个静态度量。
9.如权利要求8所述的方法,其特征在于,存储所述至少一个静态度
量以供与以下的至少一个一起使用:
所述软件实体和所述软件实体的一个版本中的至少一个的后续动态分
析;以及
所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分
析。
10.如权利要求7所述的方法,其特征在于,存储所述至少一个扩充
的度量以供与以下的至少一个一起使用:
所述软件实体和所述软件实体的一个版本中的至少一个的后续动态分
析;以及
所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分
析。
11.如权利要求7所述的方法,其特征在于,动态度量包括以下的至
少一个:在...

【专利技术属性】
技术研发人员:MC范宁N奎热拉
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1