CONTROL STRUCTURE REFINEMENT OF LOOPS USING STATIC ANALYSIS
    2.
    发明申请
    CONTROL STRUCTURE REFINEMENT OF LOOPS USING STATIC ANALYSIS 有权
    使用静态分析的控制结构修剪

    公开(公告)号:US20100205592A1

    公开(公告)日:2010-08-12

    申请号:US12701962

    申请日:2010-02-08

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443 G06F8/433

    摘要: A system and method for discovering a set of possible iteration sequences for a given loop in a software program is described, to transform the loop representation. In a program containing a loop, the loop is partitioned into a plurality of portions based on splitting criteria. Labels are associated with the portions, and an initial loop automaton is constructed that represents the loop iterations as a regular language over the labels corresponding to the portions in the program. Subsequences of the labels are analyzed to determine infeasibility of the subsequences permitted in the automaton. The automaton is refined by removing all infeasible subsequences to discover a set of possible iteration sequences in the loop. The resulting loop automaton is used in a subsequent program verification or analysis technique to find violations of correctness properties in programs.

    摘要翻译: 描述了用于在软件程序中发现给定循环的一组可能的迭代序列的系统和方法,以变换循环表示。 在包含循环的程序中,基于分割标准将循环分成多个部分。 标签与这些部分相关联,并且构建了一个初始循环自动机,它将循环迭代表示为与程序中的部分相对应的标签上的常规语言。 分析标签的子序列,以确定自动机中允许的子序列的不可行性。 通过去除所有不可行子序列来发现循环中的一组可能的迭代序列来改进自动机。 所产生的循环自动机被用于随后的程序验证或分析技术中以发现程序中的正确性属性的违反。

    Control structure refinement of loops using static analysis

    公开(公告)号:US08522226B2

    公开(公告)日:2013-08-27

    申请号:US12701962

    申请日:2010-02-08

    IPC分类号: G06F9/45 G06F9/44 G06F9/445

    CPC分类号: G06F8/443 G06F8/433

    摘要: A system and method for discovering a set of possible iteration sequences for a given loop in a software program is described, to transform the loop representation. In a program containing a loop, the loop is partitioned into a plurality of portions based on splitting criteria. Labels are associated with the portions, and an initial loop automaton is constructed that represents the loop iterations as a regular language over the labels corresponding to the portions in the program. Subsequences of the labels are analyzed to determine infeasibility of the subsequences permitted in the automaton. The automaton is refined by removing all infeasible subsequences to discover a set of possible iteration sequences in the loop. The resulting loop automaton is used in a subsequent program verification or analysis technique to find violations of correctness properties in programs.

    Embedding class hierarchy into object models for multiple class inheritance
    9.
    发明授权
    Embedding class hierarchy into object models for multiple class inheritance 有权
    将类层次结构嵌入到多类继承的对象模型中

    公开(公告)号:US08707278B2

    公开(公告)日:2014-04-22

    申请号:US13251463

    申请日:2011-10-03

    IPC分类号: G06F9/45

    摘要: A model is provided for transforming a program with a priori given class hierarchy that is induced by inheritance. An inheritance remover is configured to remove inheritance from a given program to produce an analysis-friendly program which does not include virtual-function pointer tables and runtime libraries associated with inheritance-related operations. The analysis-friendly program preserves the semantics of the given program with respect to a given class hierarchy. A clarifier is configured to identify implicit expressions and function calls and transform the given program into at least one intermediate program having explicit expressions and function calls.

    摘要翻译: 提供了一个模型,用于使用由继承引发的先验给定的类层次结构来转换程序。 继承去除器配置为从给定的程序中删除继承,以生成一个不包含与继承相关的操作相关联的虚拟函数指针表和运行时库的分析友好的程序。 分析友好的程序保留给定程序相对于给定类层次结构的语义。 澄清器被配置为识别隐式表达式和函数调用,并将给定程序转换成具有显式表达式和函数调用的至少一个中间程序。

    Analysis of Interactions of C and C++ Strings
    10.
    发明申请
    Analysis of Interactions of C and C++ Strings 审中-公开
    C和C ++字符串的相互作用分析

    公开(公告)号:US20120233584A1

    公开(公告)日:2012-09-13

    申请号:US13416358

    申请日:2012-03-09

    IPC分类号: G06F9/44

    CPC分类号: G06F8/51 G06F8/443

    摘要: A computer implemented method for analyzing a computer software program comprising both C++ and C string components, wherein the method includes building a memory model abstraction of any memory used by the program strings. Various memory models are presented that find invalid memory accesses in terms of validity of memory regions and buffer overflows. The model supports analyzing the interaction of C and C++ components—in particular, it focuses on the interaction of C and C++ strings. The conversion of C++ strings to C strings is accomplished through a non-transferable ownership attribute that is to be respected by the C strings. The models can then be analyzed using static analysis techniques such as abstract interpretation and model checking, or through dynamic analysis. In so doing we allow discovery of potential memory safety violations in programs involving conversions between C and C++ strings.

    摘要翻译: 一种用于分析包括C ++和C字符串组件的计算机软件程序的计算机实现的方法,其中所述方法包括构建由程序串使用的任何存储器的存储器模型抽象。 提出了各种存储器模型,它们根据存储器区域和缓冲区溢出的有效性找到无效的存储器访问。 该模型支持分析C和C ++组件的交互,特别是C和C ++字符串的交互。 将C ++字符串转换为C字符串是通过C字符串要遵守的不可转移的所有权属性来实现的。 然后可以使用静态分析技术(如抽象解释和模型检查)或通过动态分析来分析模型。 在这样做的时候,我们允许在涉及C和C ++字符串之间的转换的程序中发现潜在的内存安全违规。