CN105843614B - 一种面向软件演化的代码可兼容性评估方法 - Google Patents
一种面向软件演化的代码可兼容性评估方法 Download PDFInfo
- Publication number
- CN105843614B CN105843614B CN201610165972.5A CN201610165972A CN105843614B CN 105843614 B CN105843614 B CN 105843614B CN 201610165972 A CN201610165972 A CN 201610165972A CN 105843614 B CN105843614 B CN 105843614B
- Authority
- CN
- China
- Prior art keywords
- class
- code
- compatibility
- rule
- evolved
- 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.)
- Active
Links
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/71—Version control; Configuration management
-
- 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/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种面向软件演化的代码可兼容性评估方法,对演化原因进行分析与定位,包括以下步骤:根据源代码构造相应的抽象语法树;在抽象语法树上提取类和接口的属性信息,构造出代码的类模型;基于二进制兼容的规则对代码进行演化类型的区分,对代码的可兼容性进行计算,并将评估结果表示出来;该技术可以根据不兼容性演化发生的位置,报告出导致代码可兼容性变化的原因。该发明的评估方法不但可以自动分析源代码,指出程序中发生不兼容性演化的位置,改变了以往代码分发时发生不兼容性问题而需手动查找带来的主观性和效率问题,为自动化评估代码可兼容性打下良好的基础。
Description
技术领域
本发明涉及了一种面向软件演化的代码可兼容性评估方法,属于软件维护与演化领域。
背景技术
在软件的生命周期中,不断对软件进行升级、更改,以适应新的需求。而对软件的更改往往都是在一些外部压力下进行的,如客户或行业竞争。这些更改势必会破坏程序原有的结构,提高程序复杂度,降低代码的质量,结果导致软件的维护成本显著提高,对软件的升级将变得更加困难。任何软件开发方法和工具都不能避免这个问题,对软件的修复工作越晚进行,软件维护成本越高,直至维护代价超过重新开发整个系统的代价。为了解决这个难题,需要一种技术能够跟踪软件中代码可兼容性的变更,提高软件的内部质量。
软件演化是软件工程领域正逐步受到重视的研究方向,并将得到越来越多的关注。软件演化过程的目标就是在不违反系统约束的条件下,对软件系统的演化流程进行管理,从而使演化后的软件系统能够在功能满足用户的需求,同时它所展现出来的质量属性也维持在一个令人满意的水平上。
自动化识别程序中可兼容性变化的原因并对演化后目标版本的兼容性进行评估是演化分析中的难点。目前,二进制兼容只在一个代码的类层次文件进行处理,或者只提供代码变更信息而没有与代码的可兼容性相关联,不能提供真实的影响可兼容性变更的信息。因此,自动地识别可兼容性变更原因并对软件的演化进行可兼容性评估对软件演化与维护的分析非常重要。
发明内容
技术问题:本发明提供一种自动化识别演化过程中代码的可兼容性变更,基于二进制兼容对代码进行自动化评估技术,能对代码演化中可兼容性变更对象进行识别的面向软件演化的代码可兼容性评估方法。
技术方案:本发明的面向软件演化的代码可兼容性评估方法,包括以下步骤:
步骤一,根据程序源代码的历史版本与目标版本中的每个类构造为抽象语法树;
步骤二,从所述抽象语法树中的org.eclipse.jdt.core.dom.TypeDeclaration节点、org.eclipse.jdt.core.dom.FieldDeclaration节点和org.eclipse.jdt.core.dom.MethodDeclaration节点中获取类和接口的的属性信息,并记录到类的数据结构中;
步骤三,基于二进制兼容中的不兼容性演化规则,遍历所述步骤二最终获取的类的数据结构,得到程序源代码的历史版本与目标版本的可兼容性集合,进而查看目标版本中类及方法是否兼容历史版本的类及方法,将不兼容的类及方法记录进不兼容性集合;
步骤四,统计可兼容性集合和不兼容性集合中的可兼容性类及方法、不可兼容性类及方法,然后使用代码可兼容性评估模型进行评估,得到代码可兼容性。
进一步的,本发明方法中,所述步骤一构造的抽象语法树包含代码基本架构的解析树信息,以及支持程序分析所需的外部类型信息。
进一步的,本发明方法中,所述步骤三中,基于二进制兼容中的不兼容性演化规则为:
规则1:类的声明由非abstract类演化为abstract类;
规则2:类的声明由非final类演化为final类;
规则3:类的声明由public类演化为非public类;
规则4:类体中非private函数或方法的删除;
规则5:类体中函数或方法的声明由默认演化为private;
规则6:类体中函数或方法的声明由protected演化为默认或private访问;
规则7:类体中函数或方法的声明由public访问演化为protected、默认、或private访问;
规则8:类体中函数或方法的声明由非abstract演化为abstract;
规则9:类体中函数或方法的声明由非final演化为final;
规则10:类体中函数或方法的声明为private和static演化为非static;
规则11:类体中函数或方法的参数类型演化为其他非父类类型;
规则12:类型中函数或方法的返回类型演化为其他非子类类型;
规则13:接口的声明由public演化为非publ ic;
规则14:接口的函数或方法的声明不兼容演化规则同类体中函数或方法的声明。
进一步的,本发明方法中,所述步骤四中的代码可兼容性评估模型为:
X=A/B
其中,X表示代码可兼容性,取值范围在[0,1]之间,A为发生兼容性演化的方法数目,B为程序源代码历史版本的类和接口包含的方法数目。
有益效果:本发明与现有技术相比,具有以下优点:
本发明方法通过Eclipse JDT生成的抽象语法树获取耦合关系,主要用于解决代码可兼容性度量的精确性以及演化原因分析问题,与现有技术相比,具有以下优点:
(1)利用Eclipse JDT中ASTParser生成的抽象语法树,通过在抽象语法树的基础上获得到模块中各个类的属性信息,能够对编码早期的模块中各个类的兼容性进行评估。传统的二进制兼容性的获取通常是通过加载类机制,解析对象为类的字节码,对类进行反射获取各个类属性信息,必须将要检测的包所依赖的信息加载完全,当代码中所依赖的声明缺失时,会使得兼容性检测失效。我们的技术基于代码的抽象语法树,通过在代码语句中获取所使用的类型,用来生成代码中类的属性信息表,通过有类中函数或方法兼容性,类的声明兼容性等进行逐层向上的兼容性验证,使得兼容性检测更加容易进行,并可以在早期对代码兼容性进行验证。
(2)利用从下而上的兼容性检测方法,获取代码的可兼容性信息,可在不同粒度来进行可兼容性演化评估。通过在函数或方法的兼容性的基础上所获得的类的兼容性,能够获得较为完整的兼容性变更信息。传统的方法在对代码可兼容性评估时通常只对单个类做处理,不能够显示出代码整体的可兼容性程度。我们的技术所获的代码的可兼容性从下到上进行处理,可分别对包层次和系统层次进行更为整体的评估。
(3)对代码的可兼容性提供了软件演化的原因分析。通过我们在类层次所获取的类属性信息,能够对软件演化过程中导致可兼容性变化的原因进行分析;传统的评估工具只有针对代码整体变更的分析,并不具有针对可兼容性的演化分析,我们的方法通过获取项目演化过程中历史版本与目标版本的代码属性信息,并对两个版本的代码属性信息进行对比,从而定位出与可兼容性相关的演化原因。
附图说明
图1代码可兼容性演化评估体系结构;
图2为类的抽象语法树,图2(a)为类的抽象语法树中域和方法的结构,图2(b)为抽象语法树中方法体内部的结构。
具体实施方式
下面结合实施例和说明书附图对本发明作进一步的说明。图1给出了基于一种基于代码耦合度量的可替换性演化原因识别技术的体系结构。实施例中所使用项目为Junit。
实施例中Junit版本为3.4与3.5两个版本,其具体实施方式为:
步骤一,根据程序源代码的历史版本与目标版本中的每个类构造为抽象语法树;
抽象语法树(Abstract Syntax Tree,AST)作为程序的一种中间表示形式,在代码解析、程序分析等诸多领域有广泛的应用。它将java源代码映射为树的形式:每个java源文件被表示成AST节点树。Eclipse AST是Eclipse JDT的一个重要组成部分,定义在包org.eclipse.jdt.core.dom中,用来表示JAVA语言中的所有语法结构。
Eclipse AST的总体结构:
(1)、org.eclipse.jdt.core.dom.AST(AST节点类),Eclipse AST的工厂类,用于创建表示各种语法结构的节点。
(2)、org.eclipse.jdt.core.dom.ASTNode及其派生类(AST类),用于表示JAVA语言中的所有语法结构,在实际使用中常作为AST上的节点出现。
(3)、org.eclipse.jdt.core.dom.ASTVisitor(ASTVisitor类),Eclipse AST的访问者类,定义了统一的访问AST中各个节点的方法。
(4)、org.eclipse.jdt.core.dom.ASTParser(ASTParser类),用于解析包含java源代码的程序,并返回一个AST。其返回的结果包含了源代码字符的范围。
版本3.4与3.5中的源代码构造相应的抽象语法树,其中一段代码抽象语法树解析结果如图2所示;
该图2(a)所示,源代码的抽象语法树中包含一个TypeDeclaration节点,即一个类,类由两个成员变量和两个成员方法构成。两个成员变量为private类型,成员方法中第二个包含一个入口参数。
步骤二,从所述抽象语法树中的org.eclipse.jdt.core.dom.TypeDeclaration节点、org.eclipse.jdt.core.dom.FieldDeclaration节点和org.eclipse.jdt.core.dom.MethodDeclaration节点中获取类和接口的的属性信息,并记录到类的数据结构中;
代码属性模型是在抽象语法树的基础上,通过ASTVistior获取节点中各个属性的信息,构建出代码中每个类的属性信息模型ClassModel,需要获取以下节点信息:
org.eclipse.jdt.core.dom.TypeDeclaration,TypeDeclaration节点为一个类和接口声明的联合类型,其中每个节点中主要获取org.eclipse.jdt.core.dom.Modifier和isinterface两个属性节点。
org.eclipse.jdt.core.dom.FieldDeclaration,fieldDeclaration节点记录类体中的一系列的声明集合。其中每个节点中主要获取org.eclipse.jdt.core.dom.Modifier和org.eclipse.jdt.core.dom.Type两个属性节点。
org.eclipse.jdt.core.dom.MethodDeclaration,methodDeclaration节点记录函数或方法的声明,其中每个节点中主要获取org.eclipse.jdt.core.dom.Modifier和org.eclipse.jdt.core.dom.Type两个属性节点。
interface为boolean属性判断为接口或类;
org.eclipse.jdt.core.dom.Modifier包含对TypeDeclaration的修饰,包括abstract,final,picture,public,protected,static,strictfp,synchronized,native等属性;
org.eclipse.jdt.core.dom.Type节点为数据类型,包括原始类型byte、short、char、int、long、float、double、boolean、void、以及本地代码的数据类型。
通过访问将上述节点中获得的信息存储到ClassModel中,以便目标版本进行可兼容性评估。
在实施例中,图2(a)中所展示的抽象语法树中Modifiers节点记录为private,Type节点中为数据类型为java.lang.string;MethodDeclaration节点记录函数或方法的声明,其中每个节点主要获取org.eclipse.jdt.core.dom.Modifier和org.eclipse.jdt.core.dom.Type两个节点属性信息,如图2(b)中所示Modifiers节点中记录为public,parameter节点中有一个Type节点,数据类型为java.lang.string,return_type中记录函数或方法返回类型为void。
根据在步骤一中所获取的版本3.4与版本3.5的抽象语法树,对其中的各个指定节点进行访问,获取节点中所存储的类型信息,如类型名称、包名、修饰符以及数据类型等。根据访问节点所获得的信息,遍历后将版本3.4的属性信息放入数据结构ClassModel1中,将版本3.5的属性信息放入数据结构ClassModel2中。
在本实施例中,ClassModel1中共有31个类,其中包含207个方法,ClassModel2中共有45个类,其中包含292个类。
步骤三,基于二进制兼容中的不兼容性演化规则,遍历所述步骤二最终获取的类的数据结构,得到程序源代码的历史版本与目标版本的可兼容性集合,进而查看目标版本中类及方法是否兼容历史版本的类及方法,将不兼容的类及方法记录进不兼容性集合;
当类或接口中有下列演化类型发生时,则认为该类或接口发生不兼容性演化,将该类或接口标记为不兼容:
规则1:类的声明由非abstract类演化为abstract类;
规则2:类的声明由非final类演化为final类;
规则3:类的声明由public类演化为非public类;
规则4:类体中非private函数或方法的删除;
规则5:类体中函数或方法的声明由默认演化为private;
规则6:类体中函数或方法的声明由protected演化为默认或private访问;
规则7:类体中函数或方法的声明由public访问演化为protected、默认、或private访问;
规则8:类体中函数或方法的声明由非abstract演化为abstract;
规则9:类体中函数或方法的声明由非final演化为final;
规则10:类体中函数或方法的声明为private和static演化为非static;
规则11:类体中函数或方法的参数类型演化为其他非父类类型;
规则12:类型中函数或方法的返回类型演化为其他非子类类型;
规则13:接口的声明由public演化为非public;
规则14:接口的函数或方法的声明不兼容演化规则同类体中函数或方法的声明。
根据对两个版本代码的分析,获取各个节点信息到Classmodel中,遍历双方Classmodel,进而查看目标版本中类及方法演化是否符合规则,将不兼容的类及方法进行记录。
该部分主要包括以下几个数据结构:
1)UnCompatibilityList类负责记录所匹配类和接口中,发生不可兼容性的类详细信息;
2)CompatibilityList类负责记录所匹配的类和接口中,发生可兼容性演化的类和接口的详细信息;
在本实施例中通过遍历两个版本的ClassModel,将3.4版本的Classmodel1作为历史版本,将3.5版本的ClassModel2作为目标版本,进而查看目标版本中类及方法是否兼容历史版本,获取代码可兼容性演化集CompatibilityList及不可兼容性演化集UnCompatibilityList。
在本实施例中,通过规则验证,将两个版本中的类和接口分类,结果见表1;由表中可以看出可兼容性集合中有类共25个,包含方法144个,不可兼容性集合中有类共6个,包含可兼容性方法48个,不可兼容性方法15个。
表1 代码可兼容性评估结果
步骤四,统计可兼容性集合和不兼容性集合中的可兼容性类及方法、不可兼容性类及方法,然后使用代码可兼容性评估模型进行评估,得到代码可兼容性。
当代码发生演化后,若目标版本中的类和接口所发生的演化为兼容性演化,即仍能保证历史版本中类和接口的在目标版本中仍可被使用,根据上一步骤中获得的代码可兼容性演化集CompatibilityList及不可兼容性演化集UnCompatibilityList,通过公式获得代码可兼容性评估结果。
在本实施例中,可以统计出,历史版本中共包含有207个方法,发生兼容性演化的方法数目为192个,其中可兼容性演化集合中有方法144个,不可兼容性演化集合中有兼容性方法48个。发生不可兼容性演化的方法数目为15个。利用公式进行计算可得可兼容性为92.5%,即在3.4版本到3.5版本的演化中,有92.5%的方法或函数发生演化类型为可兼容性演化,对历史版本具有较好的兼容性。代码可兼容性评估结果越接近1,说明目标版本类和接口内够继续保持历史版本中类和接口的无错链接,在系统中发生错误的风险就越小。
上述实施例仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范围。
Claims (3)
1.一种面向软件演化的代码可兼容性评估方法,其特征在于,该方法包括以下步骤:
步骤一,根据程序源代码的历史版本与目标版本中的每个类构造为抽象语法树;
步骤二,从所述抽象语法树中的org.eclipse.jdt.core.dom.TypeDeclaration节点、org.eclipse.jdt.core.dom.FieldDeclaration节点和org. eclipse.jdt.core.dom.MethodDeclaration节点中获取类和接口的的属性信息,并记录到类的数据结构中;
步骤三,基于二进制兼容中的不兼容性演化规则,遍历所述步骤二最终获取的类的数据结构,得到程序源代码的历史版本与目标版本的可兼容性集合,进而查看目标版本中类及方法是否兼容历史版本的类及方法,将不兼容的类及方法记录进不兼容性集合,所述基于二进制兼容中的不兼容性演化规则为:
规则1:类的声明由非abstract类演化为abstract类;
规则2:类的声明由非final类演化为final类;
规则3:类的声明由public类演化为非public类;
规则4:类体中非private函数或方法的删除;
规则5:类体中函数或方法的声明由默认演化为private;
规则6:类体中函数或方法的声明由protected演化为默认或private访问;
规则7:类体中函数或方法的声明由public访问演化为protected、默认、或private访问;
规则8:类体中函数或方法的声明由非abstract演化为abstract;
规则9:类体中函数或方法的声明由非final演化为final;
规则10:类体中函数或方法的声明为private和static演化为非static;
规则11:类体中函数或方法的参数类型演化为其他非父类类型;
规则12:类体中函数或方法的返回类型演化为其他非子类类型;
规则13:接口的声明由public演化为非public;
规则14:接口的函数或方法的声明不兼容演化规则与类体中函数或方法的声明相同;
步骤四,统计可兼容性集合和不兼容性集合中的可兼容性类及方法、不可兼容性类及方法,然后使用代码可兼容性评估模型进行评估,得到代码可兼容性。
2.根据权利要求1所述的面向软件演化的代码可兼容性评估方法,其特征在于,所述步骤一构造的抽象语法树包含代码基本架构的解析树信息,以及支持程序分析所需的外部类型信息。
3.根据权利要求1或2所述的面向软件演化的代码可兼容性评估方法,其特征在于,所述步骤四中的代码可兼容性评估模型为:
X=A/B
其中,X表示代码可兼容性,取值范围在[0,1]之间,A为发生兼容性演化的方法数目,B为程序源代码历史版本的类和接口包含的方法数目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610165972.5A CN105843614B (zh) | 2016-03-22 | 2016-03-22 | 一种面向软件演化的代码可兼容性评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610165972.5A CN105843614B (zh) | 2016-03-22 | 2016-03-22 | 一种面向软件演化的代码可兼容性评估方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843614A CN105843614A (zh) | 2016-08-10 |
CN105843614B true CN105843614B (zh) | 2019-03-05 |
Family
ID=56588022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610165972.5A Active CN105843614B (zh) | 2016-03-22 | 2016-03-22 | 一种面向软件演化的代码可兼容性评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843614B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368321B (zh) * | 2017-07-27 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种软件版本演进方法及系统 |
CN108509338A (zh) * | 2018-03-17 | 2018-09-07 | 东南大学 | 一种基于多层次变更分析的软件演化评估系统及方法 |
CN108920370B (zh) * | 2018-07-02 | 2022-08-16 | 北京百度网讯科技有限公司 | 兼容性问题检测方法、装置及设备 |
CN111124931B (zh) * | 2019-12-30 | 2023-10-10 | 中国农业银行股份有限公司 | 一种Java代码合规性检查方法和装置 |
CN111382070B (zh) * | 2020-03-03 | 2022-03-04 | 腾讯科技(深圳)有限公司 | 兼容性测试方法、装置、存储介质和计算机设备 |
CN111857807B (zh) * | 2020-07-29 | 2024-07-19 | 海尔优家智能科技(北京)有限公司 | 版本适配结果的确定方法及装置、存储介质、电子装置 |
CN112463629B (zh) * | 2020-12-11 | 2022-03-29 | 北京航空航天大学 | 一种基于遗传进化的自主无人系统软件配置项调整方法 |
CN113688045B (zh) * | 2021-08-26 | 2024-03-22 | 烽火通信科技股份有限公司 | 一种二进制接口兼容性自动检查方法及装置 |
CN115934157B (zh) * | 2022-12-28 | 2024-04-16 | 中国人民解放军国防科技大学 | 软件依赖范围自动推断方法、装置、计算机设备和存储器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780580A (zh) * | 2012-06-21 | 2012-11-14 | 东南大学 | 一种基于信任的组合服务优化方法 |
CN104461867A (zh) * | 2014-11-08 | 2015-03-25 | 南通大学 | 一种软件演化过程故障分析方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007139840A2 (en) * | 2006-05-24 | 2007-12-06 | Syver, Llc | Method and tool for automatic verification of software protocols |
US8984485B2 (en) * | 2013-05-01 | 2015-03-17 | International Business Machines Corporation | Analysis of source code changes |
-
2016
- 2016-03-22 CN CN201610165972.5A patent/CN105843614B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102780580A (zh) * | 2012-06-21 | 2012-11-14 | 东南大学 | 一种基于信任的组合服务优化方法 |
CN104461867A (zh) * | 2014-11-08 | 2015-03-25 | 南通大学 | 一种软件演化过程故障分析方法 |
Non-Patent Citations (1)
Title |
---|
DTSC跨平台技术研究与实现;甘红星;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120815(第8期);摘要,正文第2,7-10,13,49页 |
Also Published As
Publication number | Publication date |
---|---|
CN105843614A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843614B (zh) | 一种面向软件演化的代码可兼容性评估方法 | |
US11023367B1 (en) | Systems and methods for testing a software application | |
US7752606B2 (en) | Software development tool using a structured format to generate software code | |
CN107688748B (zh) | 基于漏洞指纹的脆弱性代码克隆检测方法及其装置 | |
CN102804147B (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
CN109254907B (zh) | 一种基于Java的接口测试报告生成方法及系统 | |
US20140304688A1 (en) | Method and system for generating and processing black box test cases | |
US20140282373A1 (en) | Automated business rule harvesting with abstract syntax tree transformation | |
CN106909510A (zh) | 一种获取测试用例的方法以及服务器 | |
Nguyen et al. | Clone-aware configuration management | |
CN105867906B (zh) | 一种面向软件演化的代码可替换性评估方法 | |
CN110781086A (zh) | 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法 | |
CN110471694A (zh) | 注释信息处理方法、装置、计算机设备及存储介质 | |
CN106570232A (zh) | 一种检验规程的自动生成方法 | |
CN111026433A (zh) | 基于代码变更历史的软件代码质量问题自动修复方法、系统及介质 | |
CN108459954A (zh) | 应用程序漏洞检测方法和装置 | |
US20150193213A1 (en) | Computer Implemented System and Method for Checking a Program Code | |
CN103186468A (zh) | 一种验证软件升级准确性的方法和装置 | |
CN116383833A (zh) | 软件程序代码的测试方法及其装置、电子设备、存储介质 | |
CN111966587A (zh) | 数据采集方法、装置和设备 | |
CN104298603B (zh) | 一种应用系统版本构建的正确性的检查方法 | |
CN117312270A (zh) | 一种数据库自动化构建和部署的变更管理方法 | |
CN111176980B (zh) | 调试环境和运行环境分离的数据分析方法、装置及系统 | |
CN111966578A (zh) | 一种安卓兼容性缺陷修复效果的自动化评估方法 | |
CN106033338A (zh) | 基于fog数据的源代码导入及解析的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |