CN102402479A - 用于静态分析的中间表示结构 - Google Patents
用于静态分析的中间表示结构 Download PDFInfo
- Publication number
- CN102402479A CN102402479A CN2011103069397A CN201110306939A CN102402479A CN 102402479 A CN102402479 A CN 102402479A CN 2011103069397 A CN2011103069397 A CN 2011103069397A CN 201110306939 A CN201110306939 A CN 201110306939A CN 102402479 A CN102402479 A CN 102402479A
- Authority
- CN
- China
- Prior art keywords
- intermediate representation
- action
- initial version
- computer
- computing system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 53
- 230000003068 static effect Effects 0.000 title claims abstract description 14
- 238000010276 construction Methods 0.000 title abstract 2
- 230000007547 defect Effects 0.000 claims abstract description 7
- 230000009471 action Effects 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 17
- 230000002950 deficient Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 3
- 238000005352 clarification Methods 0.000 claims description 2
- 238000004590 computer program Methods 0.000 claims 7
- 230000000712 assembly Effects 0.000 claims 1
- 238000000429 assembly Methods 0.000 claims 1
- 230000000153 supplemental effect Effects 0.000 abstract 2
- 230000006870 function Effects 0.000 description 49
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 239000012190 activator Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005206 flow analysis Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
- G06F11/3608—Analysis of software for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
一种用于静态分析的中间表示结构。对源或程序代码的中间表示的分析。访问并静态地分析源或程序代码的初始中间表示的初始版本。对于该初始版本的一个或多个部分,分析组件查询提供了与该部分相对应的补充中间表示的分析时间解决组件。该补充的中间表示提供了有关该部分的进一步的清晰性,并且还被分析。如果找到缺陷,就报告它们。
Description
技术领域
本申请涉及对中间表示的静态分析。
背景技术
为了生成高质量的软件程序,对软件程序的功能性进行测试和分析是非常重要的。动态分析涉及在精心选择的实例上实际运行程序以验证该程序的真实行为。然而,执行动态分析并不是经常可行的,特别是当程序将运行的环境的个体性未知或变化时。仅当程序完成(可能使用短(stub)类和函数)并能运行时才进一步执行动态分析。
静态分析在不运行源或程序代码的情况下来对它们进行检查。路径敏感的数据流分析试图彻底且准确地预测在抽象域上的每条路径。这对诊断例如安全或可定域性之类的问题非常有用。在这种路径敏感的数据流分析中,被称为“客户端”的组件可以收集针对该客户端适于检测的问题而特别定义的数据。给予客户端一个中间表示的程序,它由程序语句和控制流边组成。客户端随后为给予输入状态的每个语句计算输出状态。
然而,一些函数的中间表示可以丢失、太过复杂或类属的,使得客户端做出或多或少的精确假设,这会导致检测到错误的缺陷(“噪声”),以及漏检真正的缺陷。
有时,每次仅分析整个程序的一部分以使得分析可缩放。在这种情况中,丢失外部组件会使得工具过度近似可能的程序行为、引导它们找到错误的缺陷(“噪声”)或丢失真正的缺陷。例如,对外部定义的类的属性的设置和取得在工具想到的属性的值可能不同于先前在相同缺陷路径上设置的属性的值时会引起噪声。
对频繁使用的具有公知的行为的外部组件,例如.Net或STL数据结构来说,通常具有太过复杂并且太过庞大而无法完整包括在分析中的代码。然而,如果分析完全通过例如假设任何都可能作为调用外部应用程序接口(API)的结果来近似它们,则它们将引起大量的噪声(或真正缺陷的漏检)。例如,C++STL映射通常被实现为平衡树。要从各种操作的复杂结构中引导出插入(“a”,1),其后是检索(“a”)返回1(假设没有其他代码同时运行)是异常困难的。
.Net形式的通用函数参数化中间表示,其中语句被依据类型来参数化。这样的中间表示通常具有类属相关的语句,它们可以取决于具体的实例化而具有不同的含义。例如,创建参数化类型的对象对于具有参考类型的实例化来说意味着分配堆对象(heap object)和调用构造函数,而对于具有值类型的实例来说则意味着创建和初始化栈变量。随后,强制工具进入在对经实例化的类属API的每次调用时取决于具体的实例化来理解类属相关的语句的含义的复杂逻辑。
发明内容
在此描述的至少一个实施例涉及对源或程序代码的中间表示的分析。根据一个实施例,访问并静态地分析源或程序代码的初始表示的初始版本。对于该初始版本的一个或多个部分,分析组件查询提供了对应于该部分的补充中间表示的分析时间解决(analysis-time resolution)组件。该补充中间表示提供了有关该部分的进一步的清晰性,并且还被分析。如果找到缺陷,就报告它们。
根据一个实施例,分析时间解决组件从静态地分析程序的中间表示的分析组件接收查询。分析时间解决组件访问有关程序的信息,所述信息被用于生成程序的补充中间表示,该补充中间表示能够更容易被用于分析所述程序的运作。
本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图说明
为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了样本实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加属性和细节来描述和解释各实施例,在附图中:
图1示出可用于采用此处所描述的各实施例的示例计算系统;
图2示出在其中使用中间表示来静态地分析代码并在其中向分析时间解决组件查询补充中间表示的环境。
图3说明了用于静态地分析源或程序代码的中间表示的方法的流程图。
图4示出分析时间解决组件通过生成补充的中间表示来支持对源或程序代码的静态分析的方法的流程图。
具体实施方式
根据在此描述的实施例,描述了对源或程序代码的中间表示的分析。访问并静态地分析源或程序代码的初始中间表示的初始版本。对于该初始版本的一个或多个部分,分析组件查询提供了对应于该部分的补充中间表示的分析时间解决组件。该补充的中间表示提供了有关该部分的进一步的清晰性,并且还被分析。如果找到缺陷,就报告它们。首先,将参考图1来描述关于计算系统的某些介绍性讨论。然后,将参考图2至4来描述静态分析的实施例。
首先,参考图1来描述关于计算系统的介绍性讨论。计算系统现在越来越多地采取多种多样的形式。计算系统可以例如是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,或者甚至通常不被视为计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括包含至少一个处理器以及其上能含有可由处理器执行的计算机可执行指令的存储器的任何设备或系统(或其组合)。存储器可以采取任何形式,并可以取决于计算系统的特性和形式。计算系统可以分布在网络环境中,并可包括多个组分计算系统。
如图1所示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性、非易失性、或两者的某种组合。术语“存储器”在此也可用来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处所使用的那样,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同组件、模块、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。
在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道108。计算系统100还可以包括用于将用户界面显示给用户的显示器112。
如以下更详细讨论地,本发明的各实施例可包括或利用包括诸如例如,一个或多个处理器和系统存储器之类的计算机硬件的专用或通用计算机。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这些计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质包括RAM、ROM、EPROM、CD-ROM或其他光盘存储,磁盘存储或其他磁存储设备,或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链接。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于承载计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链接。上述的组合也应被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到计算机存储介质(或者相反)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口控制器(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实施,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链接、无线数据链接,或者通过硬连线和无线数据链接的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备中。
图2示出了表示其中可以使用在此所述的原则的示例环境的环境200。可以在图1的计算系统100上实现或跨多个这样的计算系统分布所有或部分环境200。图3说明了用于静态地分析源代码的中间表示的方法的流程图。现在将频繁地参考图2的环境200来描述图3的方法。
根据图3的方法,访问源代码的中间表示的初始版本(动作301)。在某一点上,从源代码生成初始表示。尽管中间表示的这种生成可以由静态地分析中间表示的相同的计算系统来执行,但这并不是必需的。然而,图2示出了在某一点上使用源代码生成中间表示222。例如,由模块211使用许多不同的源代码语言中的任意一种来生成中间表示222。例如,源代码211可以表示以C#编程语言所编写的程序,而源代码212可以表示以C++编程语言所编写的程序。垂直椭圆213符号化地表示了可以从任意语言的源代码生成中间表示222。作为一个示例,中间表示222可以由原语指令(在源代码意义上不必要的程序语句)组成以及用于该程序的控制流边。
随后,静态地分析中间表示的初始版本(动作302)。例如,在图2中,分析组件231静态地分析中间表示。在说明性实施例中,一个或多个客户端234通过估计中间表示来执行实际的检测。每个客户端可以被特别地设计并结构化以检测一个或多个特定缺陷的特定子集。
当分析组件静态地分析所述中间表示时,分析组件可能面临它难以基于单独的中间表示来推断正在发生的操作的某些部分。分析组件查询分析时间解决组件来帮助解决含糊性,而不是在此阶段做出假设。例如,在图2中,分析组件231在每次遇到中间表示的未知部分时查询准时制(just-in-time)组件232(也称为分析时间解决组件232)。在这种意义上,该部分对于分析客户端234是未知的。未知代码的示例可以是使得在运行时将被执行的代码不清楚的代码。
为了获得更多的确定性,分析组件所执行的动作在图3中作为框310所包含的动作而被示出。特别地,分析组件向分析时间解决组件查询中间表示的不清楚部分的清晰性(动作311)。作为响应,分析组件231从分析时间解决组件232接收补充的中间表示233(动作312)。补充的中间表示可以结合中间表示的初始版本来分析(动作313),以获得更多的清晰性。
作为中间表示的不清楚部分的一个示例,假设源代码指定了依据类型来参数化的类属类的方法。在那种情况下,除非所述类型是公知的,否则特定函数甚至不能被真实地标识,因为该函数的真正本性可以依赖于作为参数被提供给类属类实例的类型而改变。在这种情况下,当分析组件231向分析时间解决组件查询时,可以提供中间表示的不清楚部分。假设知道类属方法或类属类的方法以及要对其实例化的类型,分析时间解决组件可以提供方法的特定实例化的中间表示。在那种情况下,补充中间表示233是方法的特定特定实例化。
作为中间表示不清楚的情况的另一个示例,假设程序做出对分析组件231知道一点或完全不知道的外部函数的函数调用。在那样的情况下,分析时间解决组件233可以理解在本上下文中通常调用特定的函数。这种情况的示例在如下给出,在该示例中调用外部函数Stream::Dispose(),并且生成Stream::Dispose()函数。基于该特定函数的知识,分析时间解决组件233随后生成表示该特定外部函数的补充中间表示。该特定外部函数还调用另一函数是可能的。那个其他函数可能已经由中间表示来表示,在这种情况下,不需要向分析时间解决组件233的进一步函数查询。否则,做出查询,并且,处理可以被递归地重复。
现在将提供C#代码的示例。源代码包括对被称为ReferenceTypeExample(引用类型示例)的类和被称为ValueTypeExample(值类型示例)的类的如下类定义:
所述源代码还包括如下的类属函数:
现在假设存在调用了被称为GenericFunction(类属函数)的类属函数的两个函数。下述函数被称为TestReferenceTypeInstantiation(测试引用类型实例化)以及调用用ReferenceTypeExample(引用类型示例)类来实例化的函数GenericFunction(类属函数):
下述函数被称为TestValueTypeInstantiation(测试值类型实例化)以及调用用ValueTypeExample(值类型示例)类来实例化的函数GenericFunction(类属函数):
基于该源代码,可以为GenericFunction(类属函数)生成下述MSIL中间表示:
注意,在该示例中,存在调用CLR运行时函数“System.Activator::CreateInstance<!!>()的行。在该示例中,函数从函数主体不存在和/或不能在C#源代码层被表达的意义中来说是特定的。这样的函数的示例包括C/C++内部函数,如memset/memcpy以及一些CLR运行时函数等。在Anvil IR(从以上所示的MSIL构建)中的相同类属函数的示例如下示出:
在此,行System.Activator::CreateInstance`1<!T>$L3(EH)是由运行时引入的特定函数。中间语言可以被下述不同的中间表示所代替:
作为另一个示例,下述中间表示可以表示用ValueTypeExample(值类型示例)来实例化的GenericFunction(类属函数)的特定实例:
后面的两个函数都表示了GenericFunction(类属函数)类的不同的特定实例化的中间表示。
作为另一个示例,函数可以是类属实例化但不存在对类属版本的访问,或者函数是非类属的但不存在访问函数的主体。在这种情况下,预生成的中间表示(有时是近似地)对公知库函数建模。这包括.Net Stream(.Net流)类的示例,其中,Dispose()函数调用Close(),而Close()进而调用虚拟函数Dispose(bool)。但如果我们仅具有从该流中导出的类的中间表示,则对Dispose(bool)函数的调用对于分析是不可见的。如果所描述的.Net Stream类的行为对于分析是未知的,则下述代码看上去没有适合地处理所导出的流:
对于遗忘了流实现的客户端,MyStream(我的流)对象看上去没有被合适地处理,因为“using”分句将转换成下述代码,其中在最终部分,将调用Stream::Dispose()来取代MyStream::Dispose(bool),它将合适地处理MyStream(我的流)对象:
下述代码示出在上述示例中使用的MyStream(我的流)类实现的示例。
在这种情况下,下述库函数将协助提供特定函数的中间表示的生成。用于Stream(流)类的所生成的代码在下述runtime.cs示例中示出。
返回到图3,在整个静态分析中,客户端234生成所标识的缺陷的列表(动作314)。静态分析还产生引起缺陷的对应中间表示部分。这些缺陷(以及可能的对应中间表示)可以随后对于用户是可视化的(动作315)例如,可以在显示器112上可视化缺陷报告。
可选择,还可以提供运行时用户界面223,它也可能使用显示器112来显示。用户界面223允许用户提供一信息给分析时间解决组件232,该信息可被该分析时间解决组件232用来生成中间表示的初始版本的至少一部分中的一个或多个的补充中间表示。作为示例,该信息可以包括方法的类属实现,以便分析时间解决组件232可以对它们进行实例化。可以使用显示器112或可能通过文件来提供这种信息。作为示例,信息可以包括方法的类属实现,使得分析时间解决组件232可以对它们进行实例化。
图4说明了分析时间解决组件通过生成补充中间表示来支持对源代码的静态分析的方法400的流程图。分析时间解决组件232从分析组件231接收查询(动作401)。如参照图3所述,当遇到中间表示的不清楚片断时,例如当可能遇到类属类或方法或外部函数调用时,可能生成该查询。
响应于查询,分析时间解决组件访问澄清与不清楚部分相关联的处理的信息(动作402)。随后,分析时间解决组件使用所访问的信息来生成对应于该部分的补充的中间表示(动作403)。补充的中间表示随后被提供给分析组件(动作404)。
因此,在此所述的原则允许对源代码的中间表示的更加完整和精确的静态分析,而不会对使用该中间表示来查找缺陷的客户端的开发成本产生负面的影响。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
Claims (10)
1.一种包括在其上具有计算机可执行指令的一个或多个计算机存储介质的计算机程序产品,当所述计算机可执行指令由计算系统的一个或多个处理器执行时,使得所述计算系统执行以下动作:
访问源或程序代码的中间表示的初始版本的动作;
静态地分析所述中间表示的初始版本的动作;
对于所述中间表示的初始版本的至少一部分,所述部分基于静态分析受不确定性的影响,执行下述动作:
向分析时间解决组件查询所述中间表示的所述部分的清晰度的动作;以及
响应于所述查询,接收补充的中间表示的动作;以及
分析所述补充的表示的动作。
2.如权利要求1所述的计算机程序产品,其特征在于,所述中间表示的初始版本的至少一部分中的一个或多个是类属方法或由一个或多个类型来参数化的类属类中的方法。
3.如权利要求1所述的计算机程序产品,其特征在于,所述中间表示的初始版本的至少一部分中的一个或多个是对外部组件的函数调用。
4.如权利要求1所述的计算机程序产品,其特征在于,其中访问源或程序代码的中间表示的初始版本的动作包括:
访问所述源或程序代码的动作;以及
使用所访问的源或程序代码来生成所述源或程序代码的中间表示的初始版本的动作。
5.如权利要求1所述的计算机程序产品,其特征在于,静态地分析所述中间表示的初始版本的动作包括:
多个缺陷检测组件评估所述中间表示的初始版本的动作,所述多个缺陷检测组件的每一个被设计成检测一个或多个特定缺陷的子集。
6.如权利要求1所述的计算机程序产品,其特征在于,所述计算机可读介质被进一步结构化,以便在由一个或多个处理器执行时,使得所述计算系统进一步执行以下动作:
作为分析动作的结果,生成所标识的缺陷的列表的动作。
7.如权利要求1所述的计算机程序产品,其特征在于,所述计算机可读介质被进一步结构化,以便在由一个或多个处理器执行时,使得所述计算系统进一步执行以下动作:
提供用户界面的动作,通过所述用户界面,用户可以将一信息提供给所述分析时间解决组件,该分析时间解决组件可以使用该信息来生成所述中间表示的初始版本的至少一部分中的一个或多个的补充的中间表示。
8.一种使在计算系统上运行的分析时间解决组件支持源或程序代码的静态分析的方法,所述方法包括:
从正执行对源或程序代码的中间表示的初始版本的静态分析的分析组件处接收查询的动作,所述查询标识所述中间表示的初始版本的一部分;
响应于所述查询,访问澄清与所述部分相关联的处理的信息的动作;
使用所访问的信息来生成与所述部分相对应的补充的中间表示的动作;以及
将所生成的补充的中间表示提供给所述分析组件的动作。
9.如权利要求8所述的方法,其特征在于,所述分析组件也在所述计算系统上运行。
10.如权利要求9所述的方法,其特征在于,所述部分包括类属方法或依据一个或多个类型来参数化的类属类中的方法,
分析所述补充的表示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/892,869 | 2010-09-28 | ||
US12/892,869 US8930913B2 (en) | 2010-09-28 | 2010-09-28 | Intermediate representation construction for static analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402479A true CN102402479A (zh) | 2012-04-04 |
CN102402479B CN102402479B (zh) | 2015-09-16 |
Family
ID=45872019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110306939.7A Expired - Fee Related CN102402479B (zh) | 2010-09-28 | 2011-09-27 | 用于静态分析的中间表示结构 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8930913B2 (zh) |
CN (1) | CN102402479B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572066A (zh) * | 2013-10-28 | 2015-04-29 | 国际商业机器公司 | 用于面向屏幕的数据流分析的方法和系统 |
CN105164642A (zh) * | 2013-03-14 | 2015-12-16 | 微软技术许可有限责任公司 | 对合同的操作系统支持 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930913B2 (en) | 2010-09-28 | 2015-01-06 | Microsoft Corporation | Intermediate representation construction for static analysis |
US8555264B2 (en) * | 2011-01-14 | 2013-10-08 | Oracle International Corporation | System and method for efficient compilation and invocation of function type calls |
US9747089B2 (en) | 2014-10-21 | 2017-08-29 | International Business Machines Corporation | Automatic conversion of sequential array-based programs to parallel map-reduce programs |
WO2017035497A1 (en) * | 2015-08-26 | 2017-03-02 | Pivotal Software, Inc. | Database acceleration through runtime code generation |
US9825597B2 (en) | 2015-12-30 | 2017-11-21 | Skyworks Solutions, Inc. | Impedance transformation circuit for amplifier |
US10062670B2 (en) | 2016-04-18 | 2018-08-28 | Skyworks Solutions, Inc. | Radio frequency system-in-package with stacked clocking crystal |
TWI800014B (zh) | 2016-12-29 | 2023-04-21 | 美商天工方案公司 | 前端系統及相關裝置、積體電路、模組及方法 |
US10515924B2 (en) | 2017-03-10 | 2019-12-24 | Skyworks Solutions, Inc. | Radio frequency modules |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055681A1 (en) * | 2003-09-08 | 2005-03-10 | Makarand Gadre | Compiling source code using generic classes |
US20050071827A1 (en) * | 2003-09-29 | 2005-03-31 | Lai Michael Y. | Method and apparatus for bit field optimization |
CN1818863A (zh) * | 2006-03-13 | 2006-08-16 | 浙江大学 | 嵌入式软件反编译中的静态库函数识别实现方法 |
CN1834922A (zh) * | 2005-03-16 | 2006-09-20 | 松下电器产业株式会社 | 程序变换方法及程序变换系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1990003610A1 (en) | 1988-09-20 | 1990-04-05 | Digital Equipment Corporation | Generic code sharing arrangement for digital data processing system |
US5355494A (en) * | 1991-12-12 | 1994-10-11 | Thinking Machines Corporation | Compiler for performing incremental live variable analysis for data-parallel programs |
US6289506B1 (en) | 1998-06-30 | 2001-09-11 | Intel Corporation | Method for optimizing Java performance using precompiled code |
US6823507B1 (en) * | 2000-06-06 | 2004-11-23 | International Business Machines Corporation | Detection of memory-related errors in computer programs |
US6820256B2 (en) * | 2000-12-13 | 2004-11-16 | Microsoft Corporation | System and method for whole-system program analysis |
US7237236B2 (en) * | 2002-08-22 | 2007-06-26 | International Business Machines Corporation | Method and apparatus for automatically determining optimum placement of privileged code locations in existing code |
US7089542B2 (en) * | 2002-12-13 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for finding errors in software programs using satisfiability of constraints |
US7076772B2 (en) * | 2003-02-26 | 2006-07-11 | Bea Systems, Inc. | System and method for multi-language extensible compiler framework |
US7376941B2 (en) * | 2004-04-16 | 2008-05-20 | Agility Design Solutions Inc. | Inferring function calls in an ambiguous language computer program |
US7490320B2 (en) | 2005-02-18 | 2009-02-10 | International Business Machines Corporation | Method and apparatus for transforming Java Native Interface function calls into simpler operations during just-in-time compilation |
US7530059B2 (en) | 2005-02-18 | 2009-05-05 | International Business Machines Corporation | Method for inlining native functions into compiled java code |
US8365157B2 (en) | 2006-11-09 | 2013-01-29 | Oracle International Corporation | System and method for early platform dependency preparation of intermediate code representation during bytecode compilation |
US8539464B2 (en) | 2008-10-30 | 2013-09-17 | International Business Machines Corporation | Distributed just-in-time compilation |
US9424013B2 (en) | 2008-12-29 | 2016-08-23 | Oracle America, Inc. | System and method for reducing transactional abort rates using compiler optimization techniques |
US8813049B2 (en) * | 2010-06-30 | 2014-08-19 | Oracle International Corporation | Type inference of partially-specified parameterized types |
US8930913B2 (en) | 2010-09-28 | 2015-01-06 | Microsoft Corporation | Intermediate representation construction for static analysis |
-
2010
- 2010-09-28 US US12/892,869 patent/US8930913B2/en active Active
-
2011
- 2011-09-27 CN CN201110306939.7A patent/CN102402479B/zh not_active Expired - Fee Related
-
2014
- 2014-12-22 US US14/579,564 patent/US9563535B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055681A1 (en) * | 2003-09-08 | 2005-03-10 | Makarand Gadre | Compiling source code using generic classes |
US20050071827A1 (en) * | 2003-09-29 | 2005-03-31 | Lai Michael Y. | Method and apparatus for bit field optimization |
CN1834922A (zh) * | 2005-03-16 | 2006-09-20 | 松下电器产业株式会社 | 程序变换方法及程序变换系统 |
CN1818863A (zh) * | 2006-03-13 | 2006-08-16 | 浙江大学 | 嵌入式软件反编译中的静态库函数识别实现方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105164642A (zh) * | 2013-03-14 | 2015-12-16 | 微软技术许可有限责任公司 | 对合同的操作系统支持 |
CN105164642B (zh) * | 2013-03-14 | 2019-02-19 | 微软技术许可有限责任公司 | 对合同的操作系统支持 |
CN104572066A (zh) * | 2013-10-28 | 2015-04-29 | 国际商业机器公司 | 用于面向屏幕的数据流分析的方法和系统 |
CN104572066B (zh) * | 2013-10-28 | 2018-09-14 | 国际商业机器公司 | 用于面向屏幕的数据流分析的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US8930913B2 (en) | 2015-01-06 |
US20150212924A1 (en) | 2015-07-30 |
CN102402479B (zh) | 2015-09-16 |
US20120079468A1 (en) | 2012-03-29 |
US9563535B2 (en) | 2017-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402479A (zh) | 用于静态分析的中间表示结构 | |
Linares-Vásquez et al. | Mining android app usages for generating actionable gui-based execution scenarios | |
Lin et al. | Deep learning-based vulnerable function detection: A benchmark | |
Kwon et al. | Mantis: Automatic performance prediction for smartphone applications | |
Park et al. | Carfast: Achieving higher statement coverage faster | |
Aiken et al. | An overview of the Saturn project | |
Zhai et al. | Prioritizing test cases for regression testing of location-based services: Metrics, techniques, and case study | |
CN102279790A (zh) | 分布式调试方法和系统 | |
CN102236549A (zh) | 跨动态边界的运行时分析的可视化 | |
Karim et al. | Mining android apps to recommend permissions | |
Saied et al. | Could we infer unordered api usage patterns only using the library source code? | |
CN102662825B (zh) | 一种面向堆操作程序的内存泄漏检测方法 | |
CN105677574A (zh) | 基于函数控制流的安卓应用漏洞检测方法和系统 | |
Chowdhury et al. | CyFuzz: A differential testing framework for cyber-physical systems development environments | |
US7783927B2 (en) | Intelligent processing tools | |
Sun et al. | Effectiveness of exploring historical commits for developer recommendation: an empirical study | |
Samoaa et al. | Tep-gnn: Accurate execution time prediction of functional tests using graph neural networks | |
Liu et al. | Automatic performance debugging of SPMD-style parallel programs | |
Löhnertz et al. | Steinmetz: Toward Automatic Decomposition of Monolithic Software Into Microservices. | |
Böhme | Statistical reasoning about programs | |
Naeem et al. | Identifying vulnerable IoT applications using deep learning | |
US20210248492A1 (en) | Learning and Using Property Signatures for Computer Programs | |
Han et al. | A systematic mapping study of software performance research | |
Jain et al. | Contextual Predictive Mutation Testing | |
CN114880673A (zh) | 针对小程序源代码进行隐私数据泄露检测的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150723 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150723 Address after: Washington State Applicant after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150916 |