CN107533464A - 源代码等价性检查装置以及源代码等价性检查方法 - Google Patents
源代码等价性检查装置以及源代码等价性检查方法 Download PDFInfo
- Publication number
- CN107533464A CN107533464A CN201580078612.5A CN201580078612A CN107533464A CN 107533464 A CN107533464 A CN 107533464A CN 201580078612 A CN201580078612 A CN 201580078612A CN 107533464 A CN107533464 A CN 107533464A
- Authority
- CN
- China
- Prior art keywords
- source code
- equivalence
- equivalence checking
- change
- formula
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims description 39
- 238000007689 inspection Methods 0.000 claims abstract description 129
- 230000008859 change Effects 0.000 claims abstract description 128
- 238000004458 analytical method Methods 0.000 claims abstract description 108
- 230000014509 gene expression Effects 0.000 claims description 22
- 238000012545 processing Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 14
- 238000000354 decomposition reaction Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000010365 information processing Effects 0.000 description 5
- 238000002715 modification method Methods 0.000 description 4
- 230000008439 repair process Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000877 morphologic effect Effects 0.000 description 2
- 241000324343 Causa Species 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000002407 reforming Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000020509 sex determination Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/52—Binary to binary
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)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
源代码等价性检查装置具有对变更前源代码和变更后源代码分别进行符号执行的符号执行计算部;使用符号执行计算部的符号执行结果,来生成变更前源代码与变更后源代码的等价性检查式的等价性检查式生成部;对由等价性检查式生成部生成的等价性检查式进行检查的等价性检查式检查部;在基于等价性检查式检查部的等价性检查式的检查结果为变更前源代码与变更后源代码非等价的情况下,生成用于使变更前源代码与变更后源代码等价的修正候选的修正候选生成部;以及使用基于等价性检查式检查部的检查结果和基于修正候选生成部的所述修正候选,来生成检查结果报告的检查结果生成部。
Description
技术领域
本发明涉及检查在变更源代码时源代码间的行为等价,并在非等价的情况下辅助开发人员修正为等价的装置以及检查方法。
背景技术
专利文献1中记载的技术是用于检查源代码等价性的方法。专利文献1中公开了对比较源代码而产生了差异的部分实施测试并比较其结果的方法。
另外,非专利文献1中公开了对使用符号执行使得行为得以保持进行检查的方法。
现有技术文献
专利文献
专利文献1:美国专利申请公开第2007/0033576号公报
非专利文献
非专利文献1:S.Person,M.B.Dwyer,S.Elbaum,C.S.Pasareanu,"DifferentialSymbolic Execution",Proc.of ACM SIGSOFT Symposium on the Foundations ofSoftware Engineering 2008,USA,2008
发明内容
发明要解决的课题
近年,随着信息处理社会的进展,软件系统渗透至一般社会,对软件所要求的可靠性也已经要求得非常高。另一方面,软件由于常年的差分、派生开发而日益复杂化以及大规模化,软件的易扩展性或易理解性等维护性的降低已经成为问题。
作为提高软件维护性的方法有重构、语言置换。重构是不改变软件的行为地通过变更内部构造来改善软件的设计质量的方法的总称。语言置换是针对使用维护性低的编程语言开发的软件,使用维护性高的其他编程语言来重做与该软件相同的功能。
该重构、语言置换的方法是用于确保日益复杂化以及大规模化的软件的维护性的可期待技术。但是,在变更或重做软件的源代码时,如果改变作为对象的源代码的行为,则存在混入新缺陷的可能性。因此,软件开发人员有可能惧怕由于重构、语言置换的原因在正常工作的软件中混入缺陷而判断不进行重构、语言置换。在软件的维护阶段,为了积极进行重构、语言置换,要求一种检查在源代码变更前后双方源代码行为没有变化的方法。
本说明书中,将两个源代码的外在行为相同、即对于任意的相同输入在执行时能得到相同输出定义为两源代码为“等价”。另外,将检查变更前源代码与变更后源代码是否等价称作“等价性检查”。
对检查变更前源代码与变更后源代码为等价的方法所要求的条件,具有下述条件。
(1)一个条件为,其作业的大部分实现了自动化,通过人工进行的作业少。以往,源代码的等价性通过人工进行的检验、测试来进行检查。通过将其以利用工具的自动检查来实现,减少了检查作业时间,重构等得以促进。
(2)另一个条件为,在通过等价性检查方法判断为非等价的情况下,将成为其根据的信息、与应修正部位、修正方法相关的信息提供给开发人员。通过使开发人员易于理解地向其提供应修正部位的信息,并进一步提供关于修正方法的信息,使得开发人员易于进行修正,关系到缩短开发期间、作业时间。
专利文献1提供的方法需要进行测试,不能满足条件(1)。另外,非专利文献1提供的方法中生成用于检查等价性的逻辑式并使用求解器进行检查,但是并未提供应修正部位信息、修正方法,因此不能满足条件(2)。
于是,本发明的目的在于提供以下技术,在采用符号执行的源代码等价性检查装置中,在检查结果为非等价的情况下,为了使开发人员将成为非等价的变更后源代码修正为等价,提示源代码上的与修正相关的信息。
用于解决课题的方法
公开的源代码等价性检查装置具有对变更前源代码和变更后源代码分别进行符号执行的符号执行计算部;使用符号执行计算部的符号执行结果来生成变更前源代码与变更后源代码的等价性检查式的等价性检查式生成部;对由等价性检查式生成部生成的等价性检查式进行检查的等价性检查式检查部;在基于等价性检查式检查部的等价性检查式的检查结果为变更前源代码与变更后源代码非等价的情况下,生成用于使变更前源代码与变更后源代码等价的修正候选的修正候选生成部;以及使用基于等价性检查式检查部的检查结果和基于修正候选生成部的所述修正候选,来生成检查结果报告的检查结果生成部。
发明效果
根据所公开的源代码等价性检查装置,开发人员能够在源代码上确认为了使变更前源代码与变更后源代码等价而应修正的部位。
附图说明
图1是用于源代码等价性检查的变更前源代码的例子。
图2是对源代码进行源代码解析而得的结果的结构图的例子。
图3是对源代码进行符号执行而得的结果的执行树的例子。
图4是实施例1的源代码等价性检查装置的硬件结构。
图5是实施例1的源代码等价性检查装置的软件结构。
图6是源代码等价性检查装置的功能结构。
图7是源代码等价性检查装置的控制部以及存储部的结构以及数据流。
图8是源代码等价性检查装置的处理流程图。
图9是用于源代码等价性检查的变更后源代码的例子。
图10是对源代码进行符号执行而得的结果的执行树的例子。
图11是等价性检查式生成部的处理流程图。
图12是等价性检查式检查部进行的各路径等价性检查式的检查结果例。
图13是检查结果报告的例子。
图14是变更为非等价的变更后源代码的例子。
图15是对源代码进行符号执行而得的结果的执行树的例子。
图16是各路径等价性检查式的检查结果的例子。
图17是修正候选生成部的部分处理流程图。
图18是检查表的例子。
图19是快照分解操作和变量状态变更操作的例子。
图20是适用了快照分解操作的检查表的例子。
图21是适用了变量状态变更操作的检查表的例子。
图22是检查结果报告的例子。
具体实施方式
针对作为本实施方式的前提的技术、即符号执行进行说明。符号执行是指,在检查源代码时,取代向源代码中使用的变量(输入变量、全局变量(global variables)等)代入具体的数值并执行源代码,而是使用符号来执行,使用源代码的执行过程中变量的状态(以下,也称作变量状态)与用于经过源代码中该路径的条件式(以下,也称为路径约束)的组合(以下,也称为快照(snapshot))来求出源代码的输入输出关系。
根据符号执行,能网罗源代码可取的所有路径来检查源代码。图1是用于源代码等价性检查的变更前源代码的例子。以下,以针对图1的由C语言表述的源代码C100使用信息处理装置进行符号执行的情况为例进行说明。
图2是对源代码进行源代码解析而得的结果的结构图的例子。在符号执行时,信息处理装置首先以源代码C100为对象进行与编译相同的词法分析、语法分析,来生成图2所示的结构图N100。结构图N100表示出了源代码的抽象语法树(由语法树去除与语言含义没有关系的信息、仅取出(抽象化)与含义有关系的信息而得的树结构的数据结构)的各节点间的控制流程,实线箭头表示不附带条件的控制流程,虚线箭头表示附带条件的控制流程。
图2所示的函数foo的结构图N100中,表示出了从对应于函数入口点(entrypoint)的节点N1开始、在对应于函数出口的return语句的节点N5结束的各控制流程。另外,从对应于if语句的节点N2分出多个附带条件的控制流程,表示根据if语句条件成立/不成立而通过不同控制流程。
在生成结构图N100时,信息处理装置赋予各节点相对应的源代码C100上的位置信息。图2所示例中,信息处理装置赋予源代码C100中的行编号作为位置信息。例如,对节点N2赋予了L4这样的位置信息,可知对应的if语句记载于源代码C100的第四行。
图3是表示对源代码进行符号执行而得的结果的执行树的例子。信息处理装置基于结构图N100生成图3所示的执行树S100。在执行树S100的各节点,以所述的路径约束(上栏)与变量状态(中栏)的组合来表示,并且,示出了表示在源代码上经由的位置的位置信息(下栏)。执行树S100的根节点(root node)S101对应于源代码的执行初期状态。信息处理装置在每次随着源代码的执行更新变量状态时在执行树S100上追加新的节点。
生成执行树S100时,信息处理装置对成为函数foo的输入变量的变量的值分配对应的符号变量。成为输入变量的变量的值是指,由函数外部赋予,并对该函数的动作产生影响的变量的值,包括函数的参数、在函数内访问的全局变量。
在例示的源代码C100中,函数的参数a和全局变量g为输入变量。本例中,信息处理装置向变量a和g分配“α”和“γ”作为符号变量。
信息处理装置基于结构图N100的节点N1在执行树S100生成根节点S101。本例中,信息处理装置对根节点S101的路径约束(上栏)S101a设定表示“无约束”的“nocondition”,对变量状态(中栏)S101b设定表示输入变量a和g的值分别为被分配的符号变量α和γ的“a=α,g=γ”。另外,对位置信息(下栏)S101c设定从节点N1获取的位置信息L2。
信息处理装置在结构图N100中基于节点N1的控制流程上的下一节点N2执行处理。节点N2是具有附带两个条件控制流程N21和N22的条件分支节点,信息处理装置将对应于附带条件控制流程N21的子节点S102、对应于附带条件控制流程N22的子节点S105,分别生成为节点S101的子节点。
节点N2中的条件式为“g==1”,S101b中变量g的变量状态为γ,因此,附带条件控制流程N21中的分支条件能表述为“γ=1”。因此,节点S102的路径约束(上栏)配合S101a中的路径约束“无约束”设定为“γ=1”。
节点S102中的变量状态(中栏),由于变量状态不因if语句而变化,因此设定为与母节点的变量状态S101b相同。另外,对于位置信息(下栏),除了母节点S101的位置信息S101c外,还被追加了节点N2的位置信息(L4)而成为“L2,4”,表示经由了源代码的第二行和第四行。
关于附带条件控制流程N22中的分支条件,由于控制流程N22为对应于if语句条件不成立的情况的流程,因此能表述为“¬(γ=1)”。因此,节点S105的路径约束(上栏)配合S101a中的路径约束“无约束”设定为“¬(γ=1)”。
节点S105中的变量状态(中栏),由于变量状态不因if语句而变化,因此设定为与母节点的变量状态S101b相同。另外,位置信息(下栏)除了母节点的位置信息S101c外,还被追加了节点N2的位置信息(L4)而成为“L2,4”。
信息处理装置基于节点N2的控制流程N21上的下一节点N3执行处理。信息处理装置生成S102的子节点S103,作为对应于节点N3的执行树S100中的节点。
节点S103中,由于不存在条件分支,因此路径约束(上栏)设定为与S102相同。另外,节点N3中对变量r代入了值1,因此变量状态(中栏)中追加“r=1”。位置信息(下栏)中在S102的位置信息中追加节点N3的位置信息“L5”。
信息处理装置基于N3的控制流程上的下一节点N5执行处理。作为对应于节点N5的执行树S100中的节点,生成S103的子节点S104。节点N5对应于使变量r为返回值的return语句,因此变量状态(中栏)中追加对表示返回值的变量R分配了变量r的当前值1的“R=1”。通过return语句,函数的执行结束,因此执行树S100中该枝上的生成结束,转移到生成尚未结束的枝的生成。
信息处理装置基于N2的控制流程N22上的下一节点N4执行处理。节点N4是具有两个附带条件控制流程N41和N42的条件分支节点,信息处理装置在节点S105下分别生成对应于附带条件控制流程N41的子节点S106、对应于附带条件控制流程N42的子节点S110。
节点N4中的if语句的条件式为“a>1”,根据变量状态而对应于a的值为α,因此附带条件控制流程N41中的分支条件可表述为“α>1”。因此,S106中的路径约束(上栏)设定为S105中的路径约束“¬(γ=1)”与“α>1”的合取,即“¬(γ=1)∧(α>1)”。
以下,信息处理装置针对各枝反复进行上述作业,直至所有枝的生成结束为止。
在针对节点N6的处理中,信息处理装置生成节点S107的子节点S108。节点N6中,将变量g的值更新为g-1。此时,由S107的变量状态(中栏)可知对应于变量g的值为γ。于是,子节点S108中,信息处理装置将针对变量g的变量状态(中栏)更新为“g=γ-1”。这样,针对包括符号变量的计算,不是以具体值而是以式的子原有形式保持变量状态。
信息处理装置通过上述的操作最终由图2所示结构图N100得到图3所示执行树S100。在执行树中生成对应于条件分支的子节点,以便能网罗在符号执行时可取的所有控制流程。
执行树中的叶节点可以求出针对源代码输入值的条件(路径约束)与输出变量状态(变量状态)的组的集合。在以下的说明中,将符号执行结束时间点的执行树的叶节点称作“快照(snapshot)”,将快照的集合称作“符号执行总结(summary)”。但是,变量状态所含的变量中,全局变量(包括函数的参数)在函数的执行完成的时间点被丢弃,因此将全局变量的变量状态从快照以及符号执行总结中排除。
执行树S100中的叶节点为S104、S109、S113这三个节点,它们分别为快照,它们的集合为符号执行总结S120。但是,排除全局变量即变量r以及a的变量状态。
本例中,使用以C语言表述的源代码说明了符号执行,但是不限定于C语言,对于使用其他编程语言表述的源代码,也同样能够实施。
实施例1
以下使用图4至图13,说明实施例1的源代码等价性检查装置1000的结构和处理。
图4是本实施例的源代码等价性检查装置1000的硬件结构。源代码等价性检查装置例如由图4所示那样的通常信息处理装置即个人计算机来实现。源代码等价性检查装置1000为中央处理器(CPU)101、主存储装置102、网络I/F103、图形I/F104、输入输出I/F105以及辅助存储装置I/F106经由总线结合的形态。
CPU101控制源代码等价性检查装置1000的各部分,在主存储装置102加载并执行源代码等价性检查程序200。
主存储装置102通常由RAM等易失性存储器构成,CPU101所执行的程序、参照的数据从辅助存储装置等加载并存储在主存储装置102。
网络I/F103是用于与外部网络150连接的接口。
图形I/F104是用于与液晶显示屏(LCD)等显示装置120连接的接口。
输入输出I/F105是用于连接输入输出装置的接口。图4的例中,连接有键盘131与作为指示设备的鼠标132。
辅助存储装置I/F106是用于连接HDD(硬盘驱动器)141、DVD(数字多功能光盘)驱动器装置142等辅助存储装置的接口。
HDD141具有大容量存储容量,保存有用于执行本实施例的处理的源代码等价性检查程序200。
DVD驱动器装置142是向DVD、CD等光盘写入数据或者从光盘读取数据的装置,源代码等价性检查程序200能安装例如由CD-ROM提供的程序。
本实施例的测试数据生成装置1000在上述的个人计算机中安装源代码等价性检查程序200来执行各功能。
图5是本实施例的源代码等价性检查装置的软件结构。由源代码等价性检查装置1000执行的源代码等价性检查程序200包括源代码读取模块2001、结构图生成模块2002、符号执行计算模块2003、等价性检查式生成模块2004、等价性检查式检查模块2005、修正候选生成模块2006以及检查结果显示模块2007。
而且,程序等价性检查程序200是在操作系统(OS)上工作的应用软件,作为源代码等价性检查装置的软件结构,还包括OS、程序库程序,但在图5中省略。
源代码读取模块2001是从HDD、其他计算机读取作为检查对象的变更前源代码和变更后源代码并保存在存储部的模块。
结构图生成模块2002是通过进行源代码(例如所述的C100)的词法分析、语法分析并提取控制流程来生成结构图(例如所述的N100)的模块。
符号执行计算模块2003是基于由结构图生成模块2002生成的结构图进行符号执行并计算执行树(例如所述的S100),从而生成汇总其叶节点的符号执行总结(例如所述的S120)的模块。
等价性判定式生成模块2004是下述模块:根据符号执行计算模块2003所生成的变更前源代码的符号执行总结以及变更后源代码的符号执行总结,生成对符号执行总结所含快照的各组合判定两者等价性的路径约束合取式、路径约束等价判定式以及路径等价性检查式。
等价性检查式检查模块2005是对等价性判定式生成模块2004所生成的路径约束合取式、路径约束等价判定式以及路径等价性检查式,使用SAT(SATisfiability)求解、SMT(Satisfiability Modulo Theories)求解来进行求解为可满足问题的模块。
修正候选生成模块2006是下述模块:使用等价性检查式检查模块2005输出的检查结果,解析在变更前源代码的符号执行总结以及变更后源代码的符号执行总结所含的快照的哪个组合中是否产生了非等价,并导出用于非等价的情况的成为逻辑等价的修正候选。
检查结果生成模块2007是使用等价性检查式检查模块2005所输出的检查结果、修正候选生成模块2006所输出的修正候选、符号执行总结、源代码的信息,来生成检查结果报告并进行显示或者通知的模块。
图6是源代码等价性检查装置1000的功能结构。控制部110由图4的CPU101、主存储装置102来实现,存储部140主要由图4的HDD141来实现,但是有时也包括主存储装置102。输入装置130包括图4的输入输出I/F105、键盘131、鼠标132等,可进一步包括经由辅助存储装置I/F106从DVD驱动装置142读取的结构。输出装置121包括图形I/F104、显示装置120等,可进一步包括经由辅助存储装置I/F106向DVD驱动装置142写入的结构。通信部103表示图4的网络I/F103,经由网络150例如与外部计算机160连接。图6的控制部110以及存储部140的细节使用图7来进行说明。
图7是源代码等价性检查装置1000的控制部110以及存储部140的结构以及数据流。源代码输入部111读入作为检查对象的变更前源代码301以及变更后源代码302,分别保存到变更前/后源代码存储区域201。
本实施例中,使用变更前源代码301和变更后源代码302以C语言表述的例子进行说明,通过使用也对应其他编程语言的结构图生成部112以及符号执行计算部113,也能使用以其他编程语言表示的源代码。另外,也可以使用变更前源代码301和变更后源代码302不同的编程语言。
结构图生成部112对保存在变更前/后源代码存储区域201的变更前源代码以及变更后源代码分别执行源代码解析,并将作为其解析结果的变更前结构图以及变更后结构图保存到变更前/后结构图存储区域202。
符号执行计算部113对将变更后结构图保存在变更前/后结构图存储区域202的变更前/后结构图分别进行符号执行,将作为其计算结果(符号执行结果)的符号执行总结保存在变更前/后符号执行结果存储区域203。
等价性检查式生成部114根据保存在变更前/后符号执行结果存储区域203的作为变更前/后符号执行结果的变更前源代码的符号执行总结以及变更后源代码的符号执行总结,针对符号执行总结所含快照的各组合,生成用于判定两者等价性的路径约束合取式、路径约束等价判定式、以及路径等价性检查式,并保存在等价性检查式存储区域204。
等价性检查式检查部115执行保存在等价性检查式存储区域204的路径约束合取式、路径约束等价判定式以及路径等价性检查式的检查,并将它们的检查结果保存在等价性检查式结果存储区域205。
在等价性检查式存储区域204中保存的路径约束合取式、路径约束等价判定式以及路径等价性检查式的任一个检查结果为非等价的情况下,修正候选生成部116判别哪个快照的组合中为非等价,导出用于成为等价的操作,并作为修正候选保存在修正候选存储区域206。
检查结果生成部117使用路径约束合取式、路径约束等价判定式以及等价性检查式的检查结果、修正候选、符号执行总结、源代码的信息,来生成检查结果报告310,保存在检查结果存储区域207,并且使用输出装置121在画面中显示,或者使用通信部103向外部计算机160发送。
由以上的说明可知,控制部110所包含各部分的动作通过源代码等价性检查装置1000执行图5所示的源代码等价性检查程序的各模块来实现。
图8是源代码等价性检查装置的处理流程图。以下述情况为例进行说明:作为变更前源代码输入图1所示的变更前源代码C100,作为变更后源代码输入变更为与C100等价的图9所示的变更后源代码C200。
源代码输入部111读入作为检查对象的变更前源代码301,分别保存在变更前/后源代码存储区域201(P110)。结构图生成部112执行保存在变更前/后源代码存储区域201的变更前源代码的源代码解析,生成作为其解析结果的变更前结构图N100,并保存在变更前/后结构图存储区域202(P120)。符号执行计算部113针对保存在变更前/后结构图存储区域202的变更前结构图进行符号执行,其执行结果作为变更前符号执行总结S120而生成,保存在变更前/后符号执行结果存储区域203(P130)。
针对变更后源代码302,同样执行源代码输入部111的处理(P111)、结构图生成处理部112的处理(P121)以及符号执行计算部113的处理(P131),并将变更后符号执行总结保存在变更前/后符号执行结果存储区域203。
针对变更前源代码301的处理步骤P110、P120、P130和针对变更后源代码302的处理步骤P111、P121、P131能独立执行,因此两者也可并行处理。
另外,在以前针对相同内容的源代码执行了处理的情况下,再次利用保存在变更前/后符号执行结果存储区域203的以前的处理结果,从而能省略结构图生成和符号执行计算。
等价性检查式生成部114使用变更前源代码的符号执行总结和变更后源代码的符号执行总结来生成等价性检查式(P140)。图10是对变更后源代码C200进行符号执行而得的结果的执行树的例子。具体的处理顺序使用由图1所示的变更前源代码C100生成的图3所示的符号执行总结S120和由图9所示的变更后源代码C200生成的图10所示的符号执行总结S220来说明。
图11是等价性检查式生成部114的处理流程图。等价性检查式生成部114由变更前/后符号执行结果存储区域203获取变更前源代码的符号执行总结(P141)。针对变更前符号执行总结的各快照,执行下述处理,如果不再存在未处理的变更前快照(P142),则等价性检查式生成部114结束处理。
等价性检查式生成部114从变更前符号执行前总结选择一个快照(P143)。等价性检查式生成部114从变更前/后符号执行结果存储区域203获取变更后符号执行总结(P144)。等价性检查式生成部114针对变更后符号执行总结选择一个快照(P146),生成路径等价性检查式(P147)。如果不再存在未处理的变更后快照(P145),则等价性检查式生成部114返回到步骤P142,因此针对变更前快照和变更后快照的所有组合,等价性检查式生成部114生成路径等价性检查式。
等价性检查式生成部114针对符号执行总结的各快照,通过取路径约束与各变量状态的等号条件的合取来生成快照约束式。
例如,针对快照S104、S109、S113分别生成约束式(γ=1)∧(g=γ)∧(R=1)、¬(γ=1)∧(α>1)∧(g=γ﹣1)∧(R=α)、¬(γ=1)∧¬(α>1)∧(g=γ﹣1)∧(R=﹣α)。此时,如上文所述针对全局变量、即变量r以及变量a的变量状态的等号约束被排除。
并且,等价性检查式生成部114生成路径约束合取式、路径约束等价判定式以及路径等价性检查式,并记录在等价性检查式存储区域204,路径约束合取式用于针对选择出的变更前快照和变更后快照判定双方路径约束是否存在重合部分,路径约束等价判定式用于判定选择出的变更前快照与变更后快照的路径约束是否等价,路径等价性检查式用于检查对应于选择出的变更前快照与变更后快照的路径范围内的等价性。
路径约束合取式为选择出的变更前快照的路径约束与变更后快照的路径约束的合取。该路径约束合取式为可满足时,产生满足两路径约束的输入,因此可知在双方路径约束中产生了重合部分。
路径约束等价性判定式是检查在路径约束合取式满足时双方路径约束中已经产生了重合部分,并且不存在未重合部分的式。在选择出的变更前快照的路径约束为A,变更后快照的路径约束为B时,路径约束等价性判定式以(A∧¬B)∨(¬A∧B)表示。在该式为不满足的情况下,路径约束A与路径约束B完全重合,是等价的。
路径等价性检查式是对应的输出变量间的等号约束式的合取的否定式、选择出的变更前快照的快照约束式、选择出的变更后快照的快照约束式的合取。在变更前源代码和变更后源代码在选择出的快照即选择出的路径中等价时,针对经过该路径的任意输入变量,输出变量都相等,因此对应的输出变量间的等号约束的合取始终成立。
例如选择了变更前符号执行总结S120中的快照S104和变更后符号执行总结S220中的快照S221时,路径约束合取式为(γ=1)∧(γ=1),路径约束等价性检查式为((γ=1)∧¬(γ=1))∨((γ=1)∧¬(γ=1)),路径等价性检查式为¬((R=R’)∧(g=g’))∧((γ=1)∧(g=γ)(R=1))∧((γ=1)∧(g’=γ)∧(R’=1))。但是,针对变更后符号执行总结侧的输出变量g和R,为了避免与变更前符号执行总结中的变量名冲突,分别置换为g’和R’。
上述的说明例中,一次选择一个快照,生成了路径等价性检查式。但是,也可以一次选择多个快照。该情况下,取代路径等价性检查式生成中所使用的快照约束式,而是使用对应于选择出的快照的快照约束式的析取。
另外,上述的说明例中,符号执行计算部113的处理完成后,开始等价性检查式生成部114的处理,但也可在符号执行计算部113的处理过程中在一部分快照生成完成的时间点,开始针对该快照相关组合的路径等价性检查式的生成。
等价性检查式检查部115针对由等价性检查式生成部114生成的多个路径约束合取式、路径约束等价判定式以及路径等价性检查式,分别使用SAT求解器等来判定可满足性(P150)。等价性检查式检查部115针对各式将可满足或不满足的结果、在路径等价性检查式为可满足的情况下求解器输出的满足的变量的值的例子、即反例保存在等价性检查式检查结果存储区域205。
图12是本例中基于等价性检查式检查部115的各路径等价性检查式的检查结果1200的例子。变更前快照和变更后快照的9个组合中,针对所有组合判定为路径等价性检查式为不满足,因此变更后源代码C100和变更后源代码C200判定为等价。
修正候选生成部116生成使非等价情况下的变更后源代码为等价的修正操作,在本例中,由于被判定为等价,因此不执行任何操作(P160)。
图13是检查结果报告的例子。检查结果生成部117基于检查结果生成图13所示那样的检查结果报告500(P170)。
检查结果报告500中,作为检查结果510,在所有路径等价性检查式为不满足的情况下显示为“等价”,在某一个可满足的情况下显示为“非等价”。本例中,所有路径等价性检查式被记录为不满足,因此检查结果510显示为“等价”。
另外,检查结果报告500可使用保存在变更前/后源代码存储区域201的源代码信息,包括变更前源代码521以及变更后源代码522的显示。
并且,检查结果报告500可使用保存在变更前/后符号执行结果存储区域203的符号执行总结信息,包括变更前符号执行总结531以及变更后符号执行总结532的显示。图13的符号执行总结显示531以及532中,按快照以一行显示有其路径约束和变量状态。
实施例2
使用图8和图14至图22,说明实施例2的源代码等价性检查装置的处理的具体例。本实施例中,通过针对所有路径组合检查经过变更前源代码的特定路径时与经过变更后源代码的特定路径时之间的等价性(称作路径等价性)来实现等价性检查。
图14是变更为非等价的变更后源代码的例子。以下,关于图8所示的源代码等价性检查的处理过程,以下述情况为例进行说明:作为变更前源代码输入图1所示的变更前源代码C100,作为变更为与C100非等价的变更后源代码输入图14所示的变更后源代码C300。
图15中,图8的各步骤处理中的处理内容如上所述,符号执行计算部113的处理(P131)中,由变更后源代码C300生成图15所示的执行树S300以及符号执行总结S320。
等价性检查式生成部114中,如上所述,针对变更前快照与变更后快照的各组合,生成路径约束合取式、路径约束等价判定式以及路径等价性检查式(P140)。例如在选择了变更前符号执行总结S120中的快照S109和变更后符号执行总结S322中的快照S221时,路径约束合取式为(¬(γ=1)∧(α>1))∧¬(γ=1),路径约束等价性检查式为((¬(γ=1)∧(α>1))∧¬(¬(γ=1)))∨(¬(¬(γ=1)∧(α>1))∧¬(γ=1)),路径等价性检查式为¬((R=R’)∧(g=g’))∧(¬(γ=1)∧(α>1)∧(g=γ﹣1)∧(R=α))∧(¬(γ=1)∧(g’=γ-1)∧(R’=-α))。
等价性检查式检查部115通过SAT求解器等判定所生成的所有路径约束合取式、路径约束等价判定式以及路径等价性检查式的可满足性,来进行等价判定。
图16是各路径等价性检查式的检查结果。例如选择了变更前符号执行总结S120中的快照S109和变更后符号执行总结S322中的快照S221时的路径等价性判定式为可满足,能得到α=2,γ=0,R=2,g=-1,R’=-2,g’=-1这样的反例,因此将其进行记录。
图17是修正候选生成部116的步骤P160中的处理流程图。出于便利,修正候选生成部116使等价性检查式检查部115判定的各式的满足结果为变更前的快照排列成行、变更后的快照排列成列的表形式,使用将等价性检查式检查部115的检查结果记载在方格中的检查表(参照图18)进行说明。本例中,图16所示的满足判定结果为图18的检查表1800。在行方向排列变更前快照,在列方向排列变更后快照,在各方格中记载路径约束合取式、路径约束等价判定式以及路径等价性检查式的可满足性判定结果。在路径约束合取式不满足的方格中,视为不能路径约束合取,省略其他判定结果。路径约束合取式为可满足的情况下,表示路径约束等价判定式的满足结果。路径约束等价判定式为可满足的情况下,由于变更前快照的路径约束与变更后快照的路径约束非等价,因此表示路径约束非等价,在不满足的情况下表示路径约束等价。在路径等价性检查式不满足的情况下,由于意味着变更前快照的路径约束与变更后快照的路径约束所表示的路径范围中变量输出状态为等价,因此表示变量状态等价,在不满足的情况下表示为变量状态非等价。
如果检查表中不存在变量状态非等价的方格,则修正候选生成部116判定为等价,结束处理(P162)。至少一个变量状态为非等价时,关注变量状态为非等价的方格(P163)。本例中,由于图18的检查表1800中对应于变更前快照S109和变更后快照S322的方格1804为变量状态非等价,因此关注该方格1804。
在关注的方格为路径约束等价的情况下,修正候选生成部116进入步骤P165,在路径约束非等价的情况下,进入步骤P166(P163)。
在变更前的快照的路径约束与变更后的快照的路径约束等价的情况下,两者经过同等的条件分支生成了快照,但是由于变量状态不同,处于非等价的状况。如果将变更后的快照的变量状态置换为变更前的快照的变量状态,则所关注的方格中成为等价,因此修正候选生成部116将使所关注的方格的变更后的快照的变量状态置换为变更前的快照的变量状态的操作作为修正候选保存在修正候选存储区域206(P165),进入步骤P161。
修正候选生成部116在检查表1800中所关注的方格的纵向扫描,寻找路径约束非等价的其他方格,在存在路径约束非等价的其他方格的情况下,进入步骤P167。不存在的情况下,进入步骤P168(P166)。
在存在路径约束非等价的其他方格的情况下,所关注的方格的路径约束为非等价、变量状态也为非等价,处于从该所关注的方格在纵向存在路径约束非等价的其他方格的状态。在纵向存在路径约束非等价的其他方格,表示所关注的方格的变更后快照的路径约束与存在于纵向的路径约束非等价的方格的变更前快照的路径约束都具有重合部分。因此,修正候选生成部116将对于所关注的方格的变更后快照使用所关注的方格的变更前快照的路径约束进行分解的操作作为修正候选保存在修正候选存储区域206(P167),进入步骤P161。
本例中,在图18中关注方格1804,方格1803为存在于纵向的路径约束非等价的其他方格,因此修正候选生成部116在步骤P166中检测方格1803,进入步骤P167。修正候选生成部116以方格1803中变更前快照S113的路径约束¬(γ=1)∧¬(α>1)为分解基准,以方格1804的变更后快照S322的路径约束¬(γ=1)为分解对象,进行分解(P167)。分解基准和分解对象分别为路径约束,因此取多个约束项合取连结的形式。分解时,根据分解基准,去除分解基准和分解对象中共同出现的约束项。此处,本例中,共同出现的约束项为¬(γ=1),因此分解基准为¬(α>1)。以此分解基准对分解对象附加肯定和否定,从而分解方格1803。
图19是快照分解操作和变量状态变更操作的例子,是将变更后快照S322分解为快照S3221和快照S3222所得的结果。快照S3221的路径约束被附加了分解基准的肯定、即¬(α>1),另一个快照S3222的路径约束被附加了分解基准的否定、即¬(¬(α>1))。两快照的变量状态与分解前相同。修正候选生成部116将该分解操作保存在修正候选存储区域206。
修正候选生成部116在检查表1800中所关注方格横向扫描,寻找路径约束非等价的其他方格,在存在路径约束非等价的其他方格情况下进入步骤P169(P168)。不存在情况下,视为无修正候选,修正候选生成部116结束处理。
在存在路径约束非等价的其他方格的情况下,所关注的方格的路径约束为非等价、变量状态也为非等价,处于从该所关注的方格在横向存在路径约束非等价方格的状态。该横方向存在路径约束非等价方格,表示所关注的方格的变更前快照的路径约束和在其横向存在的路径约束非等价的其他方格的变更后快照的路径约束都具有重合部分。因此,修正候选生成部116将整合所关注的方格的变更后快照和横向存在的路径约束非等价的其他方格的变更后快照的操作作为修正候选保存在修正候选存储区域206(P169),进入步骤P161。关于整合操作,两快照的路径约束以析取结合,变量状态采用任意的变量状态。
修正候选生成部116使用保存在修正候选存储区域206的变量状态的变更操作、路径约束的分解操作、或者路径约束的整合操作,重构检查表1800(P161)。本例中,变更后快照S322分解操作为快照S3221和快照S3222,因此修正候选生成部116分割图18的列1805,制成图20所示的检查表2000,使用分解得到的快照再次判定各方格的路径约束合取式、路径约束等价判定式、路径等价性检查式的可满足性,更新检查表。修正候选生成部116在重构检查表后返回步骤P162反复进行相同处理。
本例中,图20的检查表2000中,变更前快照S109与变更后快照S3222的组合即方格2001在步骤P163中被关注,被关注的方格的路径约束为等价,因此进入步骤P165,修正候选生成部116将使变更后快照S3222的变量状态置换为变更前快照S109的变量状态的操作保存在修正候选存储区域206。适用了置换为该变更前快照S109的变量状态的操作的修正后的快照为图19的快照S3223,修正候选生成部116进入步骤P161。修正候选生成部116在步骤P161中将图20中的快照S3222置换为图19的快照S3223,重构图21所示的检查表2200。检查表2200中,检查表2000中变量状态为非等价的方格2001被修正为方格2201。根据以上的操作,由于检查表2200中不存在变量状态为非等价的方格,因此在步骤P162中,结束修正候选生成。在结束修正候选生成时,通过将保存在修正候选存储区域206的操作适用于变更后源代码,与变更前源代码在逻辑上等价。
图22是检查结果生成部117生成的检查结果报告600的例子。检查结果报告600中,作为检查结果显示610,在所有路径等价性检查式检查结果都为不满足的情况下显示为“等价”,在具有可满足的路径等价性检查式的情况下显示为“非等价”。本例中,例如选择快照S109和快照S322时的路径等价性检查式为可满足,因此显示为“非等价”。
检查结果报告600中,可使用保存在变更前/后符号执行结果存储区域203的符号执行总结信息,包括变更前符号执行总结631以及变更后符号执行总结632的显示。此时,变更后符号执行总结632的显示中能显示快照的检查结果639。
快照的检查结果639参照图16所示的各路径等价性检查式的检查结果1602,如果选择了该快照的路径等价性检查式的检查结果所有为不满足则显示为“等价”,如果存在可满足的路径等价性检查式则显示为“非等价”。本例中,选择了快照S104的所有路径等价性检查式、选择了快照S113的所有路径等价性检查式以及选择了快照S321的所有路径等价性检查式为不满足,因此对应的检查结果显示为“等价”。另一方面,在之外的快照中,由于包括可满足的路径等价性检查式,因此显示为“非等价”。
检查结果报告可使用保存在等价性检查式检查结果存储区域205的反例信息,包括成为非等价的反例信息640的显示。此时,在符号执行总结的显示中设置用于选择快照的复选框638,可显示相对于选择出的快照的组合的路径等价性检查式的反例。
图22所示例子中,在选择了对应于快照S103和快照S322的复选框时,显示由从图16所示的快照S109和快照S322生成的路径等价性检查式的反例1601得到的信息。
进而,检查结果报告600中,可以使用保存在变更前/后源代码存储区域201的源代码信息,包括变更前源代码621以及变更后源代码622的显示。此时,针对使用用于选择快照的复选框638选择出的快照,可根据该快照所具有的位置信息,在源代码上显示该快照的路径。
图22所示例子中,在变更前源代码621上,使用快照S109的位置信息以下划线显示快照S109的路径。另外,在变更后源代码622上,使用快照S322的位置信息以下划线显示快照S322的路径。
作为显示路径的方法,除了图22所示的以下划线显示的方法之外,还能通过以其他颜色显示背景、改变字体或字号并加粗显示、删除路径以外部分的显示而仅显示路径等,以不同于其他部分的形态进行显示。
在针对某一快照的组合的等价性检查结果为非等价,并调查为非等价的原因的情况下,由于该快照的路径上存在原因,路径以外的部位对该快照的结果不产生影响,因此不需调查。
通过使对应于选择出的快照的路径显示在源代码上,另外显示对应于它们的组合的反例,针对成为非等价的输入以及输出,开发人员能缩小在源代码上应调查的范围,从而容易发现为非等价的原因。
检查结果报告600中,可使用保存在修正候选存储区域206的修正候选信息,包括用于使变更后符号执行总结632的修正对象部位成为等价的修正候选2501的显示。
图22所示的例子中,针对变更后的快照S322,将图19所示的分解为快照S3221和S3222的操作作为修正候选保存在修正候选存储区域206,因此显示对应于快照S3221的分解后快照2502和对应于快照S3222的分解后快照2503。另外,作为分解后的操作,将快照S3222的变量状态修正为快照S3223的变量状态的操作作为修正候选保存在修正候选存储区域206,因此反映出向分解后快照2503的变量状态2504的变量状态置换进行显示。
作为显示修正候选的方法,除了图22所示的在变更后符号执行总结中显示修正候选的方法之外,还具有在变更后源代码的对应于所选快照的路径上显示修正候选等方法。
针对非等价的快照的组合,通过显示如何将变更后快照的路径约束和变量状态修正为等价的修正候选,从而针对非等价的输入以及输出,开发人员能在源代码上缩小应修正部位、修正方法,容易修正非等价。
检查结果报告600中,可使用保存在变更前/后源代码存储区域201的源代码信息和保存在修正候选存储区域206的修正候选信息,针对变更后源代码622适用修正候选,包括修正为与变更前源代码在逻辑上等价的修正后源代码2505的显示。
图22所示例子中,保存在修正候选存储区域206的修正候选信息首先是分解基准为¬(α>1)的变更后快照S322的分解。根据该分解基准,将基于if语句的分支追加到变更后快照S322经过路径上的修正后源代码2505的第七行,将基于表示分解基准的否定路径的else语句的分支追加到第十行。分解后的快照S3221、即图22中的分解后快照2502由于变量状态没有变更,因此仍然为第八行和第九行。分解后的快照S3222由于进行了变量状态的变更操作而成为快照S3223,因此成为修正后源代码2505的第十一行成为实现变更后的变量状态的源代码。
此时,通过路径约束的分解操作、变量状态变更操作而修正的部位以下划线显示。作为显示修正部位的方法,除了图22所示的以下划线显示的方法之外,还通过将背景以其他颜色显示、改变字体或字号并加粗显示、删除修正部位以外的部分的显示而仅显示路径等,以不同于其他部分的形态进行显示。
修正后源代码是机械性适用了逻辑上与变更前源代码等价修正的源代码,因此具有可读性、降低维护性的可能性,存在难以直接使用的可能性。但是,通过针对非等价的变更前/后源代码,给出如何对变更后源代码进行修正能成为与变更前源代码等价,从而开发人员容易在源代码上研究如何修正。
符号说明
1000:源代码等价性检查装置,101:CPU,102:主存储装置,103:网络I/F,104:图形I/F,105:输入输出I/F,106:辅助存储装置I/F,110:控制部,120:显示/输出装置,121:输出装置,130:输入装置,131:键盘,132:鼠标,140:存储部,141:HDD,142:DVD驱动器,150:外部网络,160:外部计算机,200:源代码等价性检查程序,201:变更前/后源代码存储区域,202:变更前/后结构图存储区域,203:变更前/后符号执行结果存储区域,204:等价性检查式存储区域,205:等价性检查式检查结果存储区域,206:修正候选存储区域,207:检查结果存储区域,111:源代码输入部,112:结构图生成部,113:符号执行计算部,114:等价性检查式生成部,115:等价性检查式检查部,116:修正候选生成部,117:检查结果生成部,C100、C200、C300:源代码,S100、S200、S300:符号执行的执行树,S120、S220、S320:符号执行总结,S104、S109、S113、S221~S223,S321~S323:符号执行中的快照,S101a:符号执行树的节点的路径约束,S101b:符号执行树的节点的变量状态,S101c:符号执行树的节点的位置信息,N100:结构图,1800、2000、2200:检查表,500、600:检查结果报告。
Claims (12)
1.一种源代码等价性检查装置,其特征在于,具有:
符号执行计算部,其对变更前源代码和变更后源代码分别进行符号执行;
等价性检查式生成部,其使用所述符号执行计算部的符号执行结果,来生成所述变更前源代码与所述变更后源代码的等价性检查式;
等价性检查式检查部,其对由所述等价性检查式生成部生成的所述等价性检查式进行检查;
修正候选生成部,其在基于所述等价性检查式检查部的所述等价性检查式的检查结果为所述变更前源代码与所述变更后源代码非等价的情况下,生成用于使所述变更前源代码与所述变更后源代码等价的修正候选;以及
检查结果生成部,其使用基于所述等价性检查式检查部的所述检查结果和基于所述修正候选生成部的所述修正候选,来生成检查结果报告。
2.根据权利要求1所述的源代码等价性检查装置,其特征在于,
所述等价性检查式生成部生成针对构成所述变更前源代码以及所述变更后源代码的符号执行总结的各快照的组合的路径约束合取式、路径约束等价判定式以及路径等价性检查式,作为所述等价性检查式。
3.根据权利要求2所述的源代码等价性检查装置,其特征在于,
所述等价性检查式检查部对所述路径约束合取式、所述路径约束等价判定式以及所述路径等价性检查式进行检查。
4.根据权利要求3所述的源代码等价性检查装置,其特征在于,
在基于所述等价性检查式检查部的所述检查结果为所述变更前源代码与所述变更后源代码非等价的情况下,所述修正候选生成部生成变量状态变更操作、路径约束分解操作以及路径约束整合操作中的至少一个操作,该至少一个操作为用于使所述变更后源代码与所述变更前源代码等价的所述修正候选。
5.根据权利要求4所述的源代码等价性检查装置,其特征在于,
在基于所述等价性检查式检查部的所述检查结果为非等价的情况下,所述检查结果生成部使由所述修正候选生成部生成的所述检查结果报告包含所述操作的显示。
6.根据权利要求4所述的源代码等价性检查装置,其特征在于,
在基于所述等价性检查式检查部的所述检查结果为非等价的情况下,所述检查结果生成部将由所述修正候选生成部生成的所述操作适用于所述变更后源代码,并将修正为与所述变更前源代码等价的所述变更后源代码包含在所述检查结果报告中。
7.一种源代码等价性检查装置的源代码等价性检查方法,其特征在于,
所述源代码等价性检查装置进行如下处理:
对变更前源代码和变更后源代码分别进行符号执行;
使用所述符号执行的结果,生成所述变更前源代码与所述变更后源代码的等价性检查式;
对所述等价性检查式进行检查;
在所述等价性检查式的检查结果为所述变更前源代码与所述变更后源代码非等价的情况下,生成用于使所述变更前源代码与所述变更后源代码等价的修正候选;以及
使用所述等价性检查式的所述检查结果和所述修正候选,来生成检查结果报告。
8.根据权利要求7所述的源代码等价性检查方法,其特征在于,
所述源代码等价性检查装置生成针对构成所述变更前源代码以及所述变更后源代码的符号执行总结的各快照的组合的路径约束合取式、路径约束等价判定式以及路径等价性检查式,作为所述等价性检查式。
9.根据权利要求8所述的源代码等价性检查方法,其特征在于,
所述源代码等价性检查装置对所述路径约束合取式、所述路径约束等价判定式以及所述路径等价性检查式进行检查。
10.根据权利要求9所述的源代码等价性检查方法,其特征在于,
在所述检查结果为所述变更前源代码与所述变更后源代码非等价的情况下,所述源代码等价性检查装置生成变量状态变更操作、路径约束分解操作以及路径约束整合操作中的至少一个操作,该至少一个操作为用于使所述变更后源代码与所述变更前源代码等价的所述修正候选。
11.根据权利要求10所述的源代码等价性检查方法,其特征在于,
在所述检查结果为非等价的情况下,所述源代码等价性检查装置使所述检查结果报告包含所述操作的显示。
12.根据权利要求10所述的源代码等价性检查方法,其特征在于,
在所述检查结果为非等价的情况下,所述源代码等价性检查装置将所述操作适用于所述变更后源代码,并将修正为与所述变更前源代码等价的所述变更后源代码包含在所述检查结果报告中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/062852 WO2016174743A1 (ja) | 2015-04-28 | 2015-04-28 | ソースコード等価性検証装置、および、ソースコード等価性検証方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107533464A true CN107533464A (zh) | 2018-01-02 |
Family
ID=57199649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580078612.5A Withdrawn CN107533464A (zh) | 2015-04-28 | 2015-04-28 | 源代码等价性检查装置以及源代码等价性检查方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180181485A1 (zh) |
JP (1) | JP6419953B2 (zh) |
CN (1) | CN107533464A (zh) |
WO (1) | WO2016174743A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110874A (zh) * | 2021-04-14 | 2021-07-13 | 北京沃东天骏信息技术有限公司 | 用于生成代码结构图的方法和装置 |
CN117743658A (zh) * | 2024-02-20 | 2024-03-22 | 成都融见软件科技有限公司 | 一种约束信息的集中可视化方法、电子设备及存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10176086B2 (en) * | 2016-10-03 | 2019-01-08 | Fujitsu Limited | Event-driven software test sequence determination |
JP6827340B2 (ja) * | 2017-02-17 | 2021-02-10 | 三菱重工エンジニアリング株式会社 | ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム |
US20180240356A1 (en) * | 2017-02-21 | 2018-08-23 | Microsoft Technology Licensing, Llc | Data-driven feedback generator for programming assignments |
KR102091420B1 (ko) * | 2018-05-11 | 2020-03-20 | 니덱모빌리티코리아 주식회사 | 비언어 요구사항 정보에 대한 소스코드 추적이 가능한 시스템 및 방법 |
JP6902513B2 (ja) * | 2018-09-05 | 2021-07-14 | 株式会社日立製作所 | ソースコード生成支援装置およびソースコード生成支援方法 |
US11487641B1 (en) * | 2019-11-25 | 2022-11-01 | EMC IP Holding Company LLC | Micro services recommendation system for identifying code areas at risk |
US11461079B2 (en) | 2020-06-22 | 2022-10-04 | Fujitsu Limited | Non-transitory computer-readable medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041873A1 (en) * | 2004-08-19 | 2006-02-23 | Cisco Technology, Inc. | Computer system and method for verifying functional equivalence |
US20110138362A1 (en) * | 2006-01-11 | 2011-06-09 | International Business Machines Corporation | Software equivalence checking |
CN103645987A (zh) * | 2013-12-20 | 2014-03-19 | 南京大学 | 基于代码生成和符号执行的访问控制策略测试自动生成方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6553362B2 (en) * | 2000-07-14 | 2003-04-22 | Hewlett-Packard Development Company, L.P. | Case-reduced verification condition generation system and method using weakest precondition operator expressed using strongest postcondition operators |
JP5903038B2 (ja) * | 2012-12-26 | 2016-04-13 | 株式会社日立製作所 | ソースコード等価性検証装置、および、ソースコード等価性検証方法 |
JP5936135B2 (ja) * | 2013-03-22 | 2016-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理装置、情報処理方法、及び、プログラム |
-
2015
- 2015-04-28 JP JP2017515328A patent/JP6419953B2/ja not_active Expired - Fee Related
- 2015-04-28 US US15/561,207 patent/US20180181485A1/en not_active Abandoned
- 2015-04-28 CN CN201580078612.5A patent/CN107533464A/zh not_active Withdrawn
- 2015-04-28 WO PCT/JP2015/062852 patent/WO2016174743A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041873A1 (en) * | 2004-08-19 | 2006-02-23 | Cisco Technology, Inc. | Computer system and method for verifying functional equivalence |
US20110138362A1 (en) * | 2006-01-11 | 2011-06-09 | International Business Machines Corporation | Software equivalence checking |
CN103645987A (zh) * | 2013-12-20 | 2014-03-19 | 南京大学 | 基于代码生成和符号执行的访问控制策略测试自动生成方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110874A (zh) * | 2021-04-14 | 2021-07-13 | 北京沃东天骏信息技术有限公司 | 用于生成代码结构图的方法和装置 |
CN113110874B (zh) * | 2021-04-14 | 2024-05-17 | 北京沃东天骏信息技术有限公司 | 用于生成代码结构图的方法和装置 |
CN117743658A (zh) * | 2024-02-20 | 2024-03-22 | 成都融见软件科技有限公司 | 一种约束信息的集中可视化方法、电子设备及存储介质 |
CN117743658B (zh) * | 2024-02-20 | 2024-04-19 | 成都融见软件科技有限公司 | 一种约束信息的集中可视化方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20180181485A1 (en) | 2018-06-28 |
JP6419953B2 (ja) | 2018-11-07 |
JPWO2016174743A1 (ja) | 2018-01-25 |
WO2016174743A1 (ja) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533464A (zh) | 源代码等价性检查装置以及源代码等价性检查方法 | |
US7904846B2 (en) | Method for automatically extracting a functional coverage model from a constraint specification | |
Ganai et al. | Accelerating high-level bounded model checking | |
CN105408872B (zh) | 源代码等价性验证装置以及源代码等价性验证方法 | |
US20110107281A1 (en) | Tiered schematic-driven layout synchronization in electronic design automation | |
US11079749B2 (en) | Method and apparatus for automated hazard detection | |
Nguyen et al. | Topic-based defect prediction (nier track) | |
Cimatti et al. | Integrating BDD-based and SAT-based symbolic model checking | |
Kooli et al. | Computing reliability: On the differences between software testing and software fault injection techniques | |
Kim et al. | NuDE 2.0: A formal method-based software development, verification and safety analysis environment for digital I&Cs in NPPs | |
Apel et al. | On-the-fly decomposition of specifications in software model checking | |
Rothenberg et al. | Must fault localization for program repair | |
US8726241B1 (en) | Method and system for the development of high-assurance computing elements | |
Pinconschi et al. | A comparative study of automatic program repair techniques for security vulnerabilities | |
Yu et al. | Progress in certifying hardware model checking results | |
Alatoun et al. | SoC trust validation using assertion-based security monitors | |
Wassyng et al. | Software tools for safety-critical software development | |
Kim et al. | Direct fault-tree modeling of human failure event dependency in probabilistic safety assessment | |
US20100057425A1 (en) | Automatically creating manufacturing test rules pertaining to an electronic component | |
Hu et al. | Sample-guided automated synthesis for CCSL specifications | |
Dick | Revisiting interval arithmetic for regression problems in genetic programming | |
WO2016038741A1 (ja) | ソースコード等価性検証装置、および、ソースコード等価性検証方法 | |
Große et al. | Improvements for constraint solving in the SystemC verification library | |
Santiesteban et al. | Cirfix: Automated hardware repair and its real-world applications | |
Sarmiento et al. | Analysis of scenarios with Petri-Net models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180102 |