发明名称 一种源代码的比对方法
摘要 本发明适用软件领域,提供了一种代码的比对方法,所述方法包括:获取待比对的新旧源代码文件,提取新旧源代码文件的修改日期和文件大小;如日期和文件大小中有一个不相同,将旧源代码文件读入OldString,将新源代码文件读入NewString;如OldString与NewString不相同,解析出旧源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组OldClass()中,解析出新源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组NewClass()中;取OldClass()中的每个元素与NewString比对;根据比对结果判断是否记录到变更清单。本发明提供的技术方案具有准确定义源代码修改的优点。
申请公布号 CN103617122B 申请公布日期 2016.03.30
申请号 CN201310682487.1 申请日期 2013.12.12
申请人 用友网络科技股份有限公司 发明人 曹峰
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京中恒高博知识产权代理有限公司 11249 代理人 刘洪京
主权项 一种代码的比对方法,其特征在于,所述方法包括:获取待比对的新旧源代码文件,提取新旧源代码文件的修改日期和文件大小;如日期和文件大小中有一个不相同,将旧源代码文件读入OldString,将新源代码文件读入NewString;所述OldString为旧源代码文件的字符串变量,所述NewString为新源代码文件的字符串变量;如OldString与NewString相同,则对比结束,认为新旧源代码文件一样;如OldString与NewString不相同,解析出旧源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组OldClass()中,解析出新源代码文件中的文件头、类声明、属性声明和方法声明,存入字符串组NewClass()中;取OldClass()中的每个元素与NewString比对;如OldClass()中的元素包含于NewString中,取NewClass()中的每个元素与OldString比对,如NewClass()中的元素包含于NewString中且OldClass()与NewClass()中的元素的类名称不同,则记变更,该OldClass()的元素被修改,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;如NewClass()中的元素不包含于NewString,则该元素为新增,将该元素中的分支和循环语句提取分支ID和注释信息记录到变更清单;如OldClass()中的元素不包含于NewString中且类名称不存在于NewString,则取OldClass()中这类代码与NewClass()中同名的类元素对比,具体的比对方式为:将OldClass()中这类代码的所有类成员解析为OldMember(),将NewClass()中同名的类元素的所有类成员解析为NewMember();取OldMember()中的每个元素与NewString对比,若OldMember()元素包含于NewString 字符串中,则该元素存在且无变更;从NewString 中删除该元素;若发现 OldMember()中某元素不在NewString中且该元素的名称包含在NewString 中,那么认为该元素被修改,取OldMember()中该元素代码与NewMember()中同名的元素对比;若发现 OldMember()中某元素不在NewString中且该元素的名称不包含在NewString 中则认为该元素被删除,分析元素的分支和循环语句提取分支ID和注释信息记录到变更清单;将该变更清单发送给黑盒测试人员及相关功能开发人员;所述新源代码文件和所述旧源代码文件中的源代码的每个分支和循环语句中均插入有分支ID以及注释信息。
地址 100094 北京市海淀区北清路68号用友软件园