CN102253992B - 一种基于面向对象的文件差异比较方法及其*** - Google Patents

一种基于面向对象的文件差异比较方法及其*** Download PDF

Info

Publication number
CN102253992B
CN102253992B CN 201110188141 CN201110188141A CN102253992B CN 102253992 B CN102253992 B CN 102253992B CN 201110188141 CN201110188141 CN 201110188141 CN 201110188141 A CN201110188141 A CN 201110188141A CN 102253992 B CN102253992 B CN 102253992B
Authority
CN
China
Prior art keywords
file
change information
engineering
function
living
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
Application number
CN 201110188141
Other languages
English (en)
Other versions
CN102253992A (zh
Inventor
罗敬清
康晓林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Gaohang Intellectual Property Operation Co ltd
Nantong Guangshuo Communication Equipment Co ltd
Original Assignee
Vtron Technologies Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Vtron Technologies Ltd filed Critical Vtron Technologies Ltd
Priority to CN 201110188141 priority Critical patent/CN102253992B/zh
Publication of CN102253992A publication Critical patent/CN102253992A/zh
Application granted granted Critical
Publication of CN102253992B publication Critical patent/CN102253992B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及软件版本管理相关技术领域,特别是一种基于面向对象的文件差异比较方法及其***,所述方法包括:通过利用关键字进行语法解析来分别找出要比较的新旧两个版本的工程中的计算机语言描述对象;对相同的计算机语言描述对象进行分析找出在两个版本中的变化信息并保存为变化信息记录文件。本发明实现了对整个工程进行比较且由于是对每个计算机语言描述对象分别比较,因此可以减少对文件中的空行语句和注释语句也进行比较的技术问题,从而提高了文件差异比较功能在实际使用中的效率。

Description

一种基于面向对象的文件差异比较方法及其***
技术领域
本发明涉及软件版本管理相关技术领域,特别是一种基于面向对象的文件差异比较方法及其***。
背景技术
    现有流行的版本管理工具,如SVN(subversion),其具有版本控制和备份服务器两大功能,用户可以将其当成自己的文件备份服务器,更好的是,它可以帮助用户记住每次上传到服务器上的档案内容,并自动的赋予每次的变更一个版本。为此,设计人员在进行软件的设计开发时,可以选用SVN作为代码管理工具提供的文件差异比较功能,来实现对不同软件版本的代码进行差异化比较。
SVN自身提供的文件差异比较功能,其原理是将两个文件作为文本文件进行逐行比较,进而找出所要比较的两个文件的差异。在需要比较两个不同版本的代码文件差别时,SVN将会首先把所要比较的代码文件的两个版本下载到本地主机上,然后进行逐行比较。
SVN自身提供的文件差异比较功能虽然使用起来方便,而且能非常准确的比较出目标文件不同版本的差异,但是该功能有如下两个缺点:第一,该功能只能对文件进行比较,而无法整个工程进行比较;第二,由于该功能采用的是逐行比较的方式,自然会将文件中的空行语句和注释语句也进行比较。因此,SVN自身所提供的文件差异比较功能在实际使用中其效率较为低下。
发明内容
本发明的第一个发明目的在于提供一种基于面向对象的文件差异比较方法,以解决现有版本管理工具对基于面向对象的计算机编程项目工程进行差异比较时效率低下的技术问题。
本发明的第一发明目的采用如下技术方案实现:
一种基于面向对象的文件差异比较方法,对基于面向对象的计算机编程项目工程进行差异比较,所述方法包括:
通过利用关键字进行语法解析来分别找出要比较的新旧两个版本的工程中的计算机语言描述对象;
对相同的计算机语言描述对象进行分析找出在两个版本中的变化信息并保存为变化信息记录文件。
作为一种优选方案,所述方法采用XML节点格式用于描述工程中的计算机语言描述对象。
作为进一步的优选方案,所述计算机语言描述对象包括全局变量、全局函数和/或类声明及其成员变量与成员函数。
作为再进一步的优选方案,若计算机语言描述对象为全局变量:
若全局变量为新增全局变量,变化信息为该全局变量所在的新版本工程中的文件及所处文件的位置;
若全局变量被删除,变化信息为该全局变量所在的旧版本工程中的文件及所处文件的位置;
若全局变量的类型发生变化,则变化信息为该全局变量所在的新旧两个版本的工程中的文件及所处文件的位置。
作为再进一步的优选方案,若计算机语言描述对象为全局函数:
若全局函数为新增全局函数,变化信息为该全局函数的声明和定义所在的新版工程中的文件及所处文件的位置;
若全局函数被删除,变化信息为该全局函数的声明和定义所在的旧版本工程中的文件及所处文件的位置;
若全局函数的声明或定义发生了改变,变化信息为该全局函数的声明或定义所在的新旧两个版本的工程中的文件及所处文件的位置。
作为再进一步的优选方案,若计算机语言描述对象为类声明及其成员变量与成员函数,变化信息为一系列成员变量和成员函数变化信息的组合:
若成员变量为新增成员变量,变化信息为该成员变量所在的新版本工程中的文件及所处文件的位置;
若成员变量被删除,变化信息为该成员变量所在的旧版本工程中的文件及所处文件的位置;
若成员变量的类型发生变化,则变化信息为该成员变量所在的新旧两个版本的工程中的文件及所处文件的位置;
若成员函数为新增成员函数,变化信息为该成员函数的声明和定义所在的新版工程中的文件及所处文件的位置;
若成员函数被删除,变化信息为该成员函数的声明和定义所在的旧版本工程中的文件及所处文件的位置;
若成员函数的声明或定义发生了改变,变化信息为该成员函数的声明或定义所在的新旧两个版本的工程中的文件及所处文件的位置。
作为进一步的优选方案,通过解析变化信息记录文件,形成以新版本工程为基准的两个版本中的发生变化的计算机语言描述对象集合,在选中某一个发生变化的计算机语言描述对象或计算机语言描述子对象时,根据变化信息记录文件中记录的变化信息进行文件定位,即定位到相应的文件和所处文件的位置。
所述定位到相应的文件和所处文件的位置是指定位到新版本工程中的文件,对于被删除的计算机语言描述对象或计算机语言描述子对象,在新版本工程文件将用横线给于提示,表示被删除。
本发明的第二个发明目的,在于提供、一种基于面向对象的文件差异比较***,以实现本发明第一个发明目的所提供的比较方法。
本发明的第二个发明目的采用如下技术方案实现:
一种基于面向对象的文件差异比较***,用于对基于面向对象的计算机编程项目工程进行差异比较,所述***包括:
通过利用关键字进行语法解析来分别找出要比较的新旧两个版本的工程中的计算机语言描述对象的对象解析模块;
对相同的计算机语言描述对象进行分析找出在两个版本中的变化信息的对象比较模块;
用于保存变化信息的变化信息记录文件生成模块;
对象解析模块、对象比较模块和变化信息记录文件生成模块依次连接。
作为一种优选方案,所述变化信息记录文件采用XML生成,所述***还包括依次连接的XML文档加载模块和XML文档解析模块:
XML文档加载模块与变化信息记录文件生成模块连接,加载变化信息记录文件;
XML文档解析模块通过解析描述变化信息记录文件,形成以新版本工程为基准的两个版本中的发生变化的计算机语言描述对象集合,在选中某一个发生变化的计算机语言描述对象或计算机语言描述子对象时,根据变化信息记录文件中记录的变化信息进行文件定位,即定位到相应的文件和所处文件的位置。
本发明提出了一种基于面向对象的文件差异比较,该方法首先定义了一套用于描述工程中的全局变量、全局函数,类声明及其成员变量与成员函数的基本信息和变化信息的XML节点格式,然后通过利用关键字进行语法解析来分别找出要比较的两个版本的工程中的全局变量、全局函数,类声明及其成员变量与成员函数,并以新版本工程为基准,将上述所解析出来的两个版本的工程的全局变量、全局函数,类声明及其成员变量与成员函数分别依次进行比较并找出其区别,将发生变化的全局对象、声明或定义发生改变的全局函数及类的基本信息及变化信息按照上述所定义的XML节点格式写入XML文件。
本发明实现了对整个工程进行比较且由于是对每个计算机语言描述对象分别比较,因此可以减少对文件中的空行语句和注释语句也进行比较的技术问题,从而提高了文件差异比较功能在实际使用中的效率。
附图说明
附图1为本实施例的流程示意图。
附图2为本实施例的***结构示意图。
备注:附图1和附图2中的对象是指工程中的全局变量、全局函数、类。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
如图1所示,本发明提出了一种基于面向对象的文件差异比较,该方法将项目工程作为一个整体进行比较。在该方法中,通过搜索项目工程中的所有文件来找出工程中所用到的类名及其成员函数和成员变量、全局变量、全局函数,然后通过对项目工程的两个不同版本所搜索出来的上述对象进行逐个比较,来找出项目工程的两个不同版本的差异。本方法的实现技术方案如下:
S1:通过利用关键字进行语法解析来找出要比较的两个版本的工程中的对象;
S2:以新版本工程为基准,对所解析出来的两个版本的工程的对象分别依次进行比较并找出其区别;
S3:将发生变化的对象的基本信息及变化信息写入XML文件;
S4:解析XML文件,生成以新版本工程为基准的两个版本中的发生变化的计算机语言描述对象集合。
步骤S1中定义的对象包括:全局变量、全局函数和/或类声明及其成员变量与成员函数。
对于全局变量,XML节点记录其变量名和类型以及该变量是否发生了改变;对于全局函数,XML节点记录其声明所在的文件及其在该文件中的位置和其定义所在的文件及其在该文件中的起始位置以及该函数的声明和定义是否发生了改变;对于类的声明与定义,XML节点记录其成员变量列表及成员函数列表以及该类是否发生了改变,成员变量的描述同全局变量,成员函数的描述同全局函数。在将两个版本中的上述对象解析分别出来以后,以新版本的工程为基准,依次对上述所解析出来的对象列表进行比较,进而找出项目工程两个不同版本的区别。对于全局变量的比较,其标准是新版本中的全局变量相对于旧版本是否被删除,或者是否属新增变量,或者变量的类型是否被修改;对于全局函数的比较,其标准是新版本中的全局函数相对旧版本来说,其声明是否改变,或者其定义是否改变,或者该函数是否属新增函数,或者该函数是否被删除。对于函数定义是否改变,采用对函数体逐行比较的方式来判断;对于类的比较,包括对类的声明的比较和对类的定义的比较,前者是对类成员变量和成员函数声明的比较,后者是对成员函数定义的比较。类成员变量的比较同全局变量,而类成员函数的比较同全局函数的比较。
附图2为本实施例的***结构示意图。
本实施例为一种基于面向对象的文件差异比较***,用于对基于面向对象的计算机编程项目工程进行差异比较,所述***包括依次连接的对象解析模块21、对象比较模块22、XML文档生成模块23、XML文档加载模块24和XML文档解析模块25:
对象解析模块21通过利用关键字进行语法解析来分别找出要比较的新旧两个版本的工程中的计算机语言描述对象;
对象比较模块22对相同的计算机语言描述对象进行分析找出在两个版本中的变化信息;
XML文档生成模块23用于采用XML保存变化信息并生成变化信息记录文件;
XML文档加载模块24加载变化信息记录文件;
XML文档解析模块25通过解析描述变化信息记录文件,形成以新版本工程为基准的两个版本中的发生变化的计算机语言描述对象集合,在选中某一个发生变化的计算机语言描述对象或计算机语言描述子对象时,根据变化信息记录文件中记录的变化信息进行文件定位,即定位到相应的文件和所处文件的位置。

Claims (5)

1.一种基于面向对象的文件差异比较方法,对基于面向对象的计算机编程项目工程进行差异比较,其特征在于,所述方法包括:
通过利用关键字进行语法解析来分别找出要比较的新旧两个版本的工程中的计算机语言描述对象;
对相同的计算机语言描述对象进行分析找出在两个版本中的变化信息并保存为变化信息记录文件;
所述计算机语言描述对象包括全局变量、全局函数和/或类声明及其成员变量与成员函数;
若计算机语言描述对象为全局变量:
若全局变量为新增全局变量,变化信息为该全局变量所在的新版本工程中的文件及所处文件的位置;
若全局变量被删除,变化信息为该全局变量所在的旧版本工程中的文件及所处文件的位置;
若全局变量的类型发生变化,则变化信息为该全局变量所在的新旧两个版本的工程中的文件及所处文件的位置;
若计算机语言描述对象为全局函数:
若全局函数为新增全局函数,变化信息为该全局函数的声明和定义所在的新版工程中的文件及所处文件的位置;
若全局函数被删除,变化信息为该全局函数的声明和定义所在的旧版本工程中的文件及所处文件的位置;
若全局函数的声明或定义发生了改变,变化信息为该全局函数的声明或定义所在的新旧两个版本的工程中的文件及所处文件的位置;
若计算机语言描述对象为类声明及其成员变量与成员函数,变化信息为一系列成员变量和成员函数变化信息的组合:
若成员变量为新增成员变量,变化信息为该成员变量所在的新版本工程中的文件及所处文件的位置;
若成员变量被删除,变化信息为该成员变量所在的旧版本工程中的文件及所处文件的位置;
若成员变量的类型发生变化,则变化信息为该成员变量所在的新旧两个版本的工程中的文件及所处文件的位置;
若成员函数为新增成员函数,变化信息为该成员函数的声明和定义所在的新版工程中的文件及所处文件的位置;
若成员函数被删除,变化信息为该成员函数的声明和定义所在的旧版本工程中的文件及所处文件的位置;
若成员函数的声明或定义发生了改变,变化信息为该成员函数的声明或定义所在的新旧两个版本的工程中的文件及所处文件的位置。
2.根据权利要求1所述的比较方法,其特征在于,所述方法采用XML节点格式用于描述工程中的计算机语言描述对象。
3.根据权利要求1或2所述的比较方法,其特征在于,通过解析变化信息记录文件,形成以新版本工程为基准的两个版本中的发生变化的计算机语言描述对象集合,在选中某一个发生变化的计算机语言描述对象或计算机语言描述子对象时,根据变化信息记录文件中记录的变化信息进行文件定位,即定位到相应的文件和所处文件的位置。
4.一种基于面向对象的文件差异比较***,用于对基于面向对象的计算机编程项目工程进行差异比较,其特征在于,所述***包括:
通过利用关键字进行语法解析来分别找出要比较的新旧两个版本的工程中的计算机语言描述对象的对象解析模块;
对相同的计算机语言描述对象进行分析找出在两个版本中的变化信息的对象比较模块;
用于保存变化信息的变化信息记录文件生成模块;
对象解析模块、对象比较模块和变化信息记录文件生成模块依次连接;
其中,所述计算机语言描述对象包括全局变量、全局函数和/或类声明及其成员变量与成员函数;
若计算机语言描述对象为全局变量:
若全局变量为新增全局变量,变化信息为该全局变量所在的新版本工程中的文件及所处文件的位置;
若全局变量被删除,变化信息为该全局变量所在的旧版本工程中的文件及所处文件的位置;
若全局变量的类型发生变化,则变化信息为该全局变量所在的新旧两个版本的工程中的文件及所处文件的位置;
若计算机语言描述对象为全局函数:
若全局函数为新增全局函数,变化信息为该全局函数的声明和定义所在的新版工程中的文件及所处文件的位置;
若全局函数被删除,变化信息为该全局函数的声明和定义所在的旧版本工程中的文件及所处文件的位置;
若全局函数的声明或定义发生了改变,变化信息为该全局函数的声明或定义所在的新旧两个版本的工程中的文件及所处文件的位置;
若计算机语言描述对象为类声明及其成员变量与成员函数,变化信息为一系列成员变量和成员函数变化信息的组合:
若成员变量为新增成员变量,变化信息为该成员变量所在的新版本工程中的文件及所处文件的位置;
若成员变量被删除,变化信息为该成员变量所在的旧版本工程中的文件及所处文件的位置;
若成员变量的类型发生变化,则变化信息为该成员变量所在的新旧两个版本的工程中的文件及所处文件的位置;
若成员函数为新增成员函数,变化信息为该成员函数的声明和定义所在的新版工程中的文件及所处文件的位置;
若成员函数被删除,变化信息为该成员函数的声明和定义所在的旧版本工程中的文件及所处文件的位置;
若成员函数的声明或定义发生了改变,变化信息为该成员函数的声明或定义所在的新旧两个版本的工程中的文件及所处文件的位置。
5.根据权利要求4所述的比较***,其特征在于,所述变化信息记录文件采用XML生成,所述***还包括依次连接的XML文档加载模块和XML文档解析模块:
XML文档加载模块与变化信息记录文件生成模块连接,加载变化信息记录文件;
XML文档解析模块通过解析描述变化信息记录文件,形成以新版本工程为基准的两个版本中的发生变化的计算机语言描述对象集合,在选中某一个发生变化的计算机语言描述对象或计算机语言描述子对象时,根据变化信息记录文件中记录的变化信息进行文件定位,即定位到相应的文件和所处文件的位置。
CN 201110188141 2011-07-06 2011-07-06 一种基于面向对象的文件差异比较方法及其*** Active CN102253992B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110188141 CN102253992B (zh) 2011-07-06 2011-07-06 一种基于面向对象的文件差异比较方法及其***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110188141 CN102253992B (zh) 2011-07-06 2011-07-06 一种基于面向对象的文件差异比较方法及其***

Publications (2)

Publication Number Publication Date
CN102253992A CN102253992A (zh) 2011-11-23
CN102253992B true CN102253992B (zh) 2013-01-23

Family

ID=44981256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110188141 Active CN102253992B (zh) 2011-07-06 2011-07-06 一种基于面向对象的文件差异比较方法及其***

Country Status (1)

Country Link
CN (1) CN102253992B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102682127B (zh) * 2012-05-16 2014-12-03 北京像素软件科技股份有限公司 一种数据版本的控制方法
CN103942131B (zh) * 2013-01-23 2018-07-06 腾讯科技(深圳)有限公司 监控底层接口是否变化的方法及装置
CN103984578B (zh) * 2014-05-29 2017-08-25 中国银行股份有限公司 一种cobol程序版本的更新方法及装置
CN104035772B (zh) * 2014-06-09 2017-11-14 中国科学院软件研究所 基于静态分析的源码多版本函数调用关系差异性标识方法
CN106502903B (zh) * 2016-10-26 2019-08-30 腾讯科技(深圳)有限公司 一种程序的变更功能确定方法、装置及处理设备
CN109117376A (zh) * 2018-08-31 2019-01-01 北京龙创悦动网络科技有限公司 一种ccb文件的检测方法和装置
CN109408102B (zh) * 2018-09-04 2021-03-23 珠海格力电器股份有限公司 一种版本比对方法和装置、家电设备、网络设备
CN112965738B (zh) * 2021-02-02 2022-07-08 烽火通信科技股份有限公司 一种信息模型版本差异比对方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790335A (zh) * 2005-12-19 2006-06-21 无锡永中科技有限公司 Xml文件数据存取的方法
CN101789042A (zh) * 2010-01-29 2010-07-28 华东电网有限公司 电网企业cim模型增量比较工具

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868524B2 (en) * 2005-08-25 2014-10-21 International Business Machines Corporation Floating merge selection viewer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790335A (zh) * 2005-12-19 2006-06-21 无锡永中科技有限公司 Xml文件数据存取的方法
CN101789042A (zh) * 2010-01-29 2010-07-28 华东电网有限公司 电网企业cim模型增量比较工具

Also Published As

Publication number Publication date
CN102253992A (zh) 2011-11-23

Similar Documents

Publication Publication Date Title
CN102253992B (zh) 一种基于面向对象的文件差异比较方法及其***
US10872093B2 (en) Dynamically switching between data sources
CN110555025B (zh) 一种web表单自定义字段的实现方法与***
Capriolo et al. Programming hive
Ferrández et al. The QALL-ME framework: A specifiable-domain multilingual question answering architecture
EP2126734B1 (en) Xml-based translation
US7937410B2 (en) Generic archiving of enterprise service oriented architecture data
CN103279358B (zh) 一种面向行业应用的解释型业务组件动态构建方法
Hahn et al. An overview of JCoRe, the JULIE lab UIMA component repository
CN103262047A (zh) 使用代码克隆检测的智能代码差分
US10614062B2 (en) Data model extension generation
CN103793432A (zh) 一种数据库读写分离方法及装置
Hahn et al. UIMA-based JCoRe 2.0 goes GitHub and Maven central―state-of-the-art software resource engineering and distribution of NLP pipelines
Barmpis et al. Towards scalable querying of large-scale models
CN103020075B (zh) 分析目标对象的依赖关系的方法
Basciani et al. Exploring model repositories by means of megamodel-aware search operators.
Jeter et al. Semantic links across distributed heterogeneous data
Lange et al. Reimplementing the mathematics subject classification (msc) as a linked open dataset
Vrgoč et al. MillenniumDB: An open-source graph database system
CN103810259A (zh) 基于OpenEHR的尿检原型构建和数据存储方法
Morara et al. Solving XCSP problems by using Gecode
CN101639827A (zh) 图书元数据生成方法
Keivanloo et al. Semantic Web-The missing link in global source code analysis?
Bollinger A portable general-purpose application programming interface for CIF 2.0
Yuan et al. A semantic information integration tool suite

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: Kezhu road high tech Industrial Development Zone, Guangzhou city of Guangdong Province, No. 233 510670

Patentee after: VTRON GROUP Co.,Ltd.

Address before: 510663 No. 6, color road, hi tech Industrial Development Zone, Guangdong, Guangzhou, China

Patentee before: VTRON TECHNOLOGIES Ltd.

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20201126

Address after: 510000 unit 2414-2416, building, No. five, No. 371, Tianhe District, Guangdong, China

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: Kezhu road high tech Industrial Development Zone, Guangzhou city of Guangdong Province, No. 233 510670

Patentee before: VTRON GROUP Co.,Ltd.

Effective date of registration: 20201126

Address after: 226600 Building 2, No.288, Changjiang West Road, Haian Town, Haian City, Nantong City, Jiangsu Province

Patentee after: Nantong guangshuo communication equipment Co.,Ltd.

Address before: 510000 unit 2414-2416, building, No. five, No. 371, Tianhe District, Guangdong, China

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

TR01 Transfer of patent right