CN110716739B - 一种代码变更信息统计方法、***和可读存储介质 - Google Patents
一种代码变更信息统计方法、***和可读存储介质 Download PDFInfo
- Publication number
- CN110716739B CN110716739B CN201910885915.8A CN201910885915A CN110716739B CN 110716739 B CN110716739 B CN 110716739B CN 201910885915 A CN201910885915 A CN 201910885915A CN 110716739 B CN110716739 B CN 110716739B
- Authority
- CN
- China
- Prior art keywords
- change
- version
- information
- change information
- file
- 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
- 230000008859 change Effects 0.000 title claims abstract description 358
- 238000007619 statistical method Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000012552 review Methods 0.000 abstract description 15
- 238000001914 filtration Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 5
- 239000003607 modifier Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Abstract
本发明提供一种代码变更信息统计方法、***和可读存储介质,所述方法包括:接收预设版本区间的代码变更源数据;从所述代码变更源数据中获取所有变更文件;获取每个变更文件在预设版本区间中有变更记录的版本信息;解析每个变更文件在其版本信息中相邻两版本区间的变更信息;合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。本发明能够让代码评审会议始终关注于被变更代码行和与其相关的其它变更行,并可以快速过滤出某变更人对应的所有变更文件,以达到快速过滤目标文件的目的,有效提高代码评审的效率。
Description
技术领域
本发明涉及代码处理技术领域,尤其涉及一种代码变更信息统计方法、***和可读存储介质。
背景技术
SVN(Subversion)作为一个开放源代码的版本控制***,可以让多个开发人员通过一个中心版本控制***来记录提交到服务器的文件版本,从而达到保证文件同步的目的,主要用于在多人开发环境下的源代码维护。
代码评审作为软件开发活动中的一个重要环节,旨在找到并且修复在软件开发最初阶段被忽视掉的一些问题,以此来改进软件质量,同时也能提高程序员的编码能力。目前,代码评审时往往需要面对以下问题:
第一、同一个源代码文件同时被多个人修改,当轮到评审某一个人的代码时,从几百行,甚至几千行的代码中难以快速把此人改动过的代码展示出来。
第二、某一个人改动过代码的文件可能分布在不同的包(文件夹)里,需要对所有文件一一查找,浪费查找时间,无法快速过滤出此人改动过的文件。
基于以上问题,在代码评审会议上往往会花费较多的时间去查找指定人员改动的代码,此过程容易导致评审会议开展的不连贯,降低了评审效率。
发明内容
为了解决上述至少一个技术问题,本发明提出了一种代码变更信息统计方法、***和可读存储介质。
为了实现上述目的,本发明第一方面提出了一种代码变更信息统计方法,包括:
接收预设版本区间的代码变更源数据;
从所述代码变更源数据中获取所有变更文件;
获取每个变更文件在预设版本区间中有变更记录的版本信息;
解析每个变更文件在其版本信息中相邻两版本区间的变更信息;
合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。
本方案中,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,包括:
解析初始版本与版本信息对应的第一个版本之间的变更信息,并作为初始变更信息;
解析版本信息中所有相邻两版本区间的变更信息。
本方案中,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,还包括:
根据第一次变更内容中删除数据和新增数据的差值,得出第一偏移值;
计算第一偏移值与初始偏移值之和得到第一累计偏移值,并根据第一累计偏移值对第一次变更内容进行保存;
根据第二次变更内容中删除数据和新增数据的差值,得到第二偏移值;
计算第二偏移值与第一累计偏移值之和得到第二累计偏移值,并根据第二累计偏移值对第二次变更内容进行保存;
依序进行上述两步骤,解析相邻两版本区间的所有变更内容,并进行保存。
本方案中,合并每个变更文件所有相邻两版本区间的变更信息,还包括:
预设一个集合库,并以所述变更信息中的第一组变更信息的最大键值初始化所述集合库;
将第一组变更信息合并至所述集合库中,并在集合库中标注第一组变更信息的变更人;
按照所述变更信息中的第二组变更信息的最大键值扩展所述集合库;
将第二组变更信息合并至所述集合库中,并在集合库中标注第二组变更信息的变更人;
依序进行上述两步骤,直至所述变更信息全部合并至所述集合库中。
本方案中,在得到每个变更文件在预设版本区间的变更结果信息之后,还包括:
根据用户需求,将所述变更结果信息按照预定规则进行展示,所述预定规则依据变更文件中变更行的位置顺序,或以变更人为维度对变更行的集合。
本方案中,所述变更信息包括新增行号、修改行号、删除行号的一种或几种;所述版本信息包括版本号、新增记录、修改记录、删除记录的一种或几种;所述变更结果信息包括变更文件名、变更人、变更行的一种或几种。
本发明第二方面还提出一种代码变更信息统计***,所述代码变更信息统计***包括:存储器及处理器,所述存储器中包括一种代码变更信息统计方法程序,所述代码变更信息统计方法程序被所述处理器执行时实现如下步骤:
接收预设版本区间的代码变更源数据;
从所述代码变更源数据中获取所有变更文件;
获取每个变更文件在预设版本区间中有变更记录的版本信息;
解析每个变更文件在其版本信息中相邻两版本区间的变更信息;
合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。
本方案中,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,还包括:
根据第一次变更内容中删除数据和新增数据的差值,得出第一偏移值;
计算第一偏移值与初始偏移值之和得到第一累计偏移值,并根据第一累计偏移值对第一次变更内容进行保存;
根据第二次变更内容中删除数据和新增数据的差值,得到第二偏移值;
计算第二偏移值与第一累计偏移值之和得到第二累计偏移值,并根据第二累计偏移值对第二次变更内容进行保存;
依序进行上述两步骤,解析相邻两版本区间的所有变更内容,并进行保存。
本方案中,合并每个变更文件所有相邻两版本区间的变更信息,还包括:
预设一个集合库,并以所述变更信息中的第一组变更信息的最大键值初始化所述集合库;
将第一组变更信息合并至所述集合库中,并在集合库中标注第一组变更信息的变更人;
按照所述变更信息中的第二组变更信息的最大键值扩展所述集合库;
将第二组变更信息合并至所述集合库中,并在集合库中标注第二组变更信息的变更人;
依序进行上述两步骤,直至所述变更信息全部合并至所述集合库中。
本发明第三方面还提出一种计算机可读存储介质,所述计算机可读存储介质中包括一种代码变更信息统计方法程序,所述代码变更信息统计方法程序被处理器执行时,实现如上述的一种代码变更信息统计方法的步骤。
本发明通过接收预设版本区间的代码变更源数据;从所述代码变更源数据中获取所有变更文件;获取每个变更文件在预设版本区间中有变更记录的版本信息;解析每个变更文件在其版本信息中相邻两版本区间的变更信息;合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。本发明能够给代码变更的评审工具提供功能支持,以提高代码评审会议的效率。本发明可以让评审工具快速跳转到某一个文件的变更行,并且标注出该变更行的修改人,让评审会议始终关注于被变更代码行和与其相关的其它变更行。同时,本发明还可以得出整个变更版本区间中以变更人为维度,以文件为对应维度数据的数据集合,如此一来,可以快速过滤出某变更人对应的所有的变更文件,以达到快速过滤目标文件的目的。
本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1示出了本发明一种代码变更信息统计方法的流程图;
图2示出了本发明代码变更信息统计中解析相邻两版本区间的变更信息的流程图;
图3示出了本发明代码变更信息统计中合并所有相邻两版本区间的变更信息的流程图;
图4示出了本发明一种代码变更信息统计***的框图;
图5示出了本发明代码变更信息统计中将变更过的文件存入集合A中的流程图;
图6示出了本发明代码变更信息统计中将每个变更文件的版本信息存入集合B中的流程图;
图7示出了本发明代码变更信息统计中分析相邻两版本区间的变更内容的流程图;
图8示出了本发明代码变更信息统计中相邻两版本区间的变更内容所在文件的结构图;
图9示出了本发明代码变更信息统计中计算连续两次内容变更的流程图;
图10示出了本发明代码变更信息统计中合并同一个文件不同变更版本的解析结果的流程图;
图11示出了本发明代码变更信息统计中根据用户需求生成数据集合的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了本发明一种代码变更信息统计方法的流程图。
如图1所示,本发明第一方面提出一种代码变更信息统计方法,包括:
S102,接收预设版本区间的代码变更源数据;
S104,从所述代码变更源数据中获取所有变更文件;
S106,获取每个变更文件在预设版本区间中有变更记录的版本信息;
S108,解析每个变更文件在其版本信息中相邻两版本区间的变更信息;
S110,合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。
需要说明的是,本发明的技术方案可以在PC、手机、PAD等终端设备中进行操作。
需要说明的是,本发明所述的版本是一个全局概念,以每次提交代码到服务器为一个新版本,提交一次就会生成一个新版本,并且一个版本只会对应一个提交人(即变更人),一次提交可以提交多个文件。
需要说明的是,本发明的代码变更状态可以包括新增、修改和删除。但不限于此。如果同一个文件同时被两个人变更,假如第一个人修改了文件的第10、11、12行并提交,第二个人在文件第8行的位置新增了两行数据,则第一个人最后修改的数据被偏移到第12、13、14行;假如第一个人修改了文件的第10、11、12行并提交,第二个人删除了文件第7、8行并提交,则第一个人最后修改的数据被偏移到第8、9、10行。可以理解,更多人对同一个文件的变更与上述两个人对同一个文件的变更原理相同。
需要说明的是,所述变更信息包括新增行号、修改行号、删除行号的一种或几种;所述版本信息包括版本号、新增记录、修改记录、删除记录的一种或几种;所述变更结果信息包括变更文件名、变更人、变更行的一种或几种。但不限于此。
根据本发明的实施例,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,包括:
解析初始版本与版本信息对应的第一个版本之间的变更信息,并作为初始变更信息;
解析版本信息中所有相邻两版本区间的变更信息。
需要说明的是,由于版本区间需要提供两个版本才可构成,所以在处理版本信息中的第一个版本时,需要将初始版本(默认为版本1)作为起始版本,并将版本信息中的第一个版本作为结束版本来进行处理。
图2示出了本发明代码变更信息统计中解析相邻两版本区间的变更信息的流程图。
如图2所示,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,还包括:
S202,根据第一次变更内容中删除数据和新增数据的差值,得出第一偏移值;
S204,计算第一偏移值与初始偏移值之和得到第一累计偏移值,并根据第一累计偏移值对第一次变更内容进行保存;
S206,根据第二次变更内容中删除数据和新增数据的差值,得到第二偏移值;
S208,计算第二偏移值与第一累计偏移值之和得到第二累计偏移值,并根据第二累计偏移值对第二次变更内容进行保存;
S210,依序进行上述两步骤,解析相邻两版本区间的所有变更内容,并进行保存。
需要说明的是,步骤S210中所述的两步骤分别指步骤S206和步骤S208。
图3示出了本发明代码变更信息统计中合并所有相邻两版本区间的变更信息的流程图。
如图3所示,合并每个变更文件所有相邻两版本区间的变更信息,还包括:
S302,预设一个集合库,并以所述变更信息中的第一组变更信息的最大键值初始化所述集合库;
S304,将第一组变更信息合并至所述集合库中,并在集合库中标注第一组变更信息的变更人;
S306,按照所述变更信息中的第二组变更信息的最大键值扩展所述集合库;
S308,将第二组变更信息合并至所述集合库中,并在集合库中标注第二组变更信息的变更人;
S310,依序进行上述两步骤,直至所述变更信息全部合并至所述集合库中。
需要说明的是,步骤S310中所述的两步骤分别指步骤S306和步骤S308。
根据本发明的实施例,在得到每个变更文件在预设版本区间的变更结果信息之后,还包括:
根据用户需求,将所述变更结果信息按照预定规则进行展示,所述预定规则依据变更文件中变更行的位置顺序,或以变更人为维度对变更行的集合。
图4示出了本发明一种代码变更信息统计***的框图。
本发明第二方面还提出一种代码变更信息统计***4,所述代码变更信息统计***4包括:存储器41及处理器42,所述存储器41中包括一种代码变更信息统计方法程序,所述代码变更信息统计方法程序被所述处理器42执行时实现如下步骤:
接收预设版本区间的代码变更源数据;
从所述代码变更源数据中获取所有变更文件;
获取每个变更文件在预设版本区间中有变更记录的版本信息;
解析每个变更文件在其版本信息中相邻两版本区间的变更信息;
合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。
需要说明的是,本发明的***可以在PC、手机、PAD等终端设备中进行操作。
需要说明的是,所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
需要说明的是,本发明所述的版本一个全局概念,以每次提交代码到服务器为一个新版本,提交一次就会生成一个新版本,并且一个版本只会对应一个提交人(即变更人),一次提交可以提交多个文件。
需要说明的是,本发明的代码变更状态可以包括新增、修改和删除。但不限于此。如果同一个文件同时被两个人变更,假如第一个人修改了文件的第10、11、12行并提交,第二个人在文件第8行的位置新增了两行数据,则第一个人最后修改的数据被偏移到第12、13、14行;假如第一个人修改了文件的第10、11、12行并提交,第二个人删除了文件第7、8行并提交,则第一个人最后修改的数据被偏移到第8、9、10行。可以理解,更多人对同一个文件的变更与上述两个人对同一个文件的变更原理相同。
需要说明的是,所述变更信息包括新增行号、修改行号、删除行号的一种或几种;所述版本信息包括版本号、新增记录、修改记录、删除记录的一种或几种;所述变更结果信息包括变更文件名、变更人、变更行的一种或几种。但不限于此。
根据本发明的实施例,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,还包括:
解析初始版本与版本信息中第一个版本之间的变更信息,并作为初始变更信息;
解析版本信息中所有相邻两版本区间的变更信息。
需要说明的是,由于版本区间需要提供两个版本才可构成,所以在处理版本信息中的第一个版本时,需要将初始版本(默认为版本1)作为起始版本,并将版本信息中的第一个版本作为结束版本来进行处理。
根据本发明的实施例,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,还包括:
根据第一次变更内容中删除数据和新增数据的差值,得出第一偏移值;
计算第一偏移值与初始偏移值之和得到第一累计偏移值,并根据第一累计偏移值对第一次变更内容进行保存;
根据第二次变更内容中删除数据和新增数据的差值,得到第二偏移值;
计算第二偏移值与第一累计偏移值之和得到第二累计偏移值,并根据第二累计偏移值对第二次变更内容进行保存;
依序进行上述两步骤,解析相邻两版本区间的所有变更内容,并进行保存。
根据本发明的实施例,合并每个变更文件所有相邻两版本区间的变更信息,还包括:
预设一个集合库,并以所述变更信息中的第一组变更信息的最大键值初始化所述集合库;
将第一组变更信息合并至所述集合库中,并在集合库中标注第一组变更信息的变更人;
按照所述变更信息中的第二组变更信息的最大键值扩展所述集合库;
将第二组变更信息合并至所述集合库中,并在集合库中标注第二组变更信息的变更人;
依序进行上述两步骤,直至所述变更信息全部合并至所述集合库中。
根据本发明的实施例,在得到每个变更文件在预设版本区间的变更结果信息之后,还包括:
根据用户需求,将所述变更结果信息按照预定规则进行展示,所述预定规则依据变更文件中变更行的位置顺序,或以变更人为维度对变更行的集合。
本发明第三方面还提出一种计算机可读存储介质,所述计算机可读存储介质中包括一种代码变更信息统计方法程序,所述代码变更信息统计方法程序被处理器执行时,实现如上述的一种代码变更信息统计方法的步骤。
为了更好的解释本发明的技术方案,下面将通过一个实施例进行详细说明。
首先,需要在***中输入数据,在输入数据之前,先要确定待分析代码的版本区间(1-100),然后根据版本区间(1-100)确定输入的数据。
然后,获取版本区间1-100间变更过的所有源文件,并存入集合A中,如图5所示,图5示出的url为源文件在版本服务器上的根路径地址。
获取每个变更文件在版本区间1-100中有变更记录的版本信息,并将每个文件的版本信息存入集合B中,如图6所示,图6示出的url为该文件在版本服务器上的地址。
需要说明的是,由于集合A中存有多个变更文件,需要针对多个变更文件逐个处理,且在集合B中以变更文件为维度来对版本信息进行保存。
分别处理集合B中的每一个文件,并保存每一个相邻版本区间中的变更信息,由于需要提供两个版本才可构成版本区间,所以处理第一个版本号(本实施例为版本3)时,需要将初始的版本区间的起始版本1作为起始版本,并将第一个版本号作为结束版本来进行处理,以得到记录该版本区间所有变更内容的文件1;在处理第二个版本号(本实施例为版本7)时,需要将版本3作为起始版本,并将版本7作为结束版本来进行处理,以得到记录该版本区间所有变更内容的文件2。如图7所示,图7示出的url为该文件在版本服务器上的地址。
分别读取每一个文件的变更内容,上述文件1中的部分内容如图8所示。
如图9所示,一个被解析的数据段是以@@为起始,到下一个@@或者文件数据行结束,该数据段为一次变更的内容,根据第一次变更内容中删除行数和新增行数的差值,得出第一偏移值为1;计算第一偏移值(1)与初始偏移值(0)之和得到最终偏移值为1,并根据最终偏移值对第一次变更内容进行保存;根据第二次变更内容中删除行数和新增行数的差值,得到第二偏移值为2;计算第二偏移值(2)与上一次最终偏移值(1)之和得到新的最终偏移值为3,并根据新的最终偏移值对第二次变更内容进行保存;最终将第一次变更内容和第二次变更内容的相关数据存放入集合C中。需要说明的是,集合C中的值A表示新增,值D表示删除,值M表示修改;若同一行先删除,再增加,则认为表更状态是修改。
如图10所示,合并同一个文件不同变更版本的解析结果,即每一个变更版本文件数据都生成一个集合C,最后将所有的集合C合并起来就是该文件在版本区间1-100的变更结果,所有的数据整合到集合D内。
具体的,以第一个集合C的最大key值(79)初始化集合D,第一个集合C的文件由用户U1提交,将第一个集合C的数据合并到集合D中,并将用户U1作为集合D的值保存到集合D中,扩展集合D长度到第二个集合C的最大长度(99),第二个集合C的文件由用户U2提交,如果第二个集合C的长度小于集合D(79),则忽略此步骤;合并第二个集合C和扩展长度后的集合D,并将用户U2作为集合D的值保存到集合D中。
需要说明的是,用户名更新到集合D的规则如下:
如果集合D中对应键的值为NULL,且集合C对应键值为M或A,则集合D对应键的值赋值为U1;
如果集合D中对应键的值不为NULL,如果集合C对应键的值为M,则将集合C的对应键的值合并到原集合D对应的键的值上去;
如果集合C中对应键的值为D,则不管集合D中对应键的值是什么,都将该键和值从集合D中移除。
如图11所示,根据用户的需求利用集合D中的数据生成最终的数据集合。具体的,可以将集合D中的数据整合成以某一个人修改了该文件的那些行为维度的集合E;也可以将集合D中的数据整合成以行被哪些人修改了的集合F。如果同一行被多人修改,则以最后一个人为准。
本发明通过接收预设版本区间的代码变更源数据;从所述代码变更源数据中获取所有变更文件;获取每个变更文件在预设版本区间中有变更记录的版本信息;解析每个变更文件在其版本信息中相邻两版本区间的变更信息;合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息。本发明能够给代码变更评审工具提供功能支持,以提高代码评审会议的效率。本发明可以让评审工具快速跳转到某一个文件的变更行,并且标注出该变更行的修改人,让评审会议始终关注于被变更代码行和与其相关的其它变更行。同时,本发明还可以得出整个变更版本区间中以变更人为维度,以文件为对应维度数据的数据集合,如此一来,可以快速过滤出某变更人对应的所有的变更文件,以达到快速过滤目标文件的目的。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (6)
1.一种代码变更信息统计方法,其特征在于,包括:
S102,接收预设版本区间的代码变更源数据;
S104,从所述代码变更源数据中获取所有变更文件;
S106,获取每个变更文件在预设版本区间中有变更记录的版本信息;其中,所述版本信息包括版本号、新增记录、修改记录、删除记录中的至少一种;
S108,解析每个变更文件在其版本信息中相邻两版本区间的变更信息;其中,所述变更信息包括新增行号、修改行号、删除行号中的至少一种;
S110,合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息;其中,所述变更结果信息包括变更人、变更文件名、变更行中的至少一种;
根据用户需求,将所述变更结果信息按照预定规则进行展示,所述预定规则依据变更文件中变更行的位置顺序,或以变更人为维度对变更行的集合;
其中,合并每个变更文件所有相邻两版本区间的变更信息,包括:
S302,预设一个集合库,并以所述变更信息中的第一组变更信息的最大键值初始化所述集合库;
S304,将第一组变更信息合并至所述集合库中,并在集合库中标注第一组变更信息的变更人;
S306,按照所述变更信息中的第二组变更信息的最大键值扩展所述集合库;
S308,将第二组变更信息合并至所述集合库中,并在集合库中标注第二组变更信息的变更人;
S310,依序进行上述步骤S306和步骤S308,直至所述变更信息全部合并至所述集合库中。
2.根据权利要求1所述的一种代码变更信息统计方法,其特征在于,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,包括:
解析初始版本与版本信息对应的第一个版本之间的变更信息,并作为初始变更信息;
解析版本信息中所有相邻两版本区间的变更信息。
3.根据权利要求1所述的一种代码变更信息统计方法,其特征在于,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,还包括:
S202,根据第一次变更内容中删除数据和新增数据的差值,得出第一偏移值;
S204,计算第一偏移值与初始偏移值之和得到第一累计偏移值,并根据第一累计偏移值对第一次变更内容进行保存;
S206,根据第二次变更内容中删除数据和新增数据的差值,得到第二偏移值;
S208,计算第二偏移值与第一累计偏移值之和得到第二累计偏移值,并根据第二累计偏移值对第二次变更内容进行保存;
S210,依序进行上述步骤S206和步骤S208,解析相邻两版本区间的所有变更内容,并进行保存。
4.一种代码变更信息统计***,其特征在于,所述代码变更信息统计***包括:存储器及处理器,所述存储器中包括一种代码变更信息统计方法程序,所述代码变更信息统计方法程序被所述处理器执行时实现如下步骤:
S102,接收预设版本区间的代码变更源数据;
S104,从所述代码变更源数据中获取所有变更文件;
S106,获取每个变更文件在预设版本区间中有变更记录的版本信息;其中,所述版本信息包括版本号、新增记录、修改记录、删除记录中的至少一种;
S108,解析每个变更文件在其版本信息中相邻两版本区间的变更信息;其中,所述变更信息包括新增行号、修改行号、删除行号中的至少一种;
S110,合并每个变更文件所有相邻两版本区间的变更信息,以得到每个变更文件在预设版本区间的变更结果信息;其中,所述变更结果信息包括变更人、变更文件名、变更行中的至少一种;
根据用户需求,将所述变更结果信息按照预定规则进行展示,所述预定规则依据变更文件中变更行的位置顺序,或以变更人为维度对变更行的集合;
其中,合并每个变更文件所有相邻两版本区间的变更信息,包括:
S302,预设一个集合库,并以所述变更信息中的第一组变更信息的最大键值初始化所述集合库;
S304,将第一组变更信息合并至所述集合库中,并在集合库中标注第一组变更信息的变更人;
S306,按照所述变更信息中的第二组变更信息的最大键值扩展所述集合库;
S308,将第二组变更信息合并至所述集合库中,并在集合库中标注第二组变更信息的变更人;
S310,依序进行上述步骤S306和步骤S308,直至所述变更信息全部合并至所述集合库中。
5.根据权利要求4所述的一种代码变更信息统计***,其特征在于,解析每个变更文件在其版本信息中相邻两版本区间的变更信息,包括:
S202,根据第一次变更内容中删除数据和新增数据的差值,得出第一偏移值;
S204,计算第一偏移值与初始偏移值之和得到第一累计偏移值,并根据第一累计偏移值对第一次变更内容进行保存;
S206,根据第二次变更内容中删除数据和新增数据的差值,得到第二偏移值;
S208,计算第二偏移值与第一累计偏移值之和得到第二累计偏移值,并根据第二累计偏移值对第二次变更内容进行保存;
S210,依序进行上述步骤S206和步骤S208,解析相邻两版本区间的所有变更内容,并进行保存。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括一种代码变更信息统计方法程序,所述代码变更信息统计方法程序被处理器执行时,实现如权利要求1至3中任一项所述的一种代码变更信息统计方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910885915.8A CN110716739B (zh) | 2019-09-19 | 一种代码变更信息统计方法、***和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910885915.8A CN110716739B (zh) | 2019-09-19 | 一种代码变更信息统计方法、***和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110716739A CN110716739A (zh) | 2020-01-21 |
CN110716739B true CN110716739B (zh) | 2024-06-25 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446135A (zh) * | 2018-03-13 | 2018-08-24 | 中国银行股份有限公司 | 一种代码行数统计方法及装置 |
CN110209568A (zh) * | 2018-04-24 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法、装置及存储设备 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446135A (zh) * | 2018-03-13 | 2018-08-24 | 中国银行股份有限公司 | 一种代码行数统计方法及装置 |
CN110209568A (zh) * | 2018-04-24 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 覆盖率测试方法、装置及存储设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656934B (zh) | 基于日志解析的源端Oracle数据库DDL同步方法及设备 | |
CN107729526B (zh) | 一种文本结构化的方法 | |
US10366154B2 (en) | Information processing device, information processing method, and computer program product | |
CN106557307B (zh) | 业务数据的处理方法及处理*** | |
CN113468196B (zh) | 用于处理数据的方法、装置、***、服务器和介质 | |
CN111176901B (zh) | 一种hdfs删除文件恢复方法、终端设备及存储介质 | |
CN110716739B (zh) | 一种代码变更信息统计方法、***和可读存储介质 | |
CN114611039B (zh) | 异步加载规则的解析方法、装置、存储介质和电子设备 | |
CN115757174A (zh) | 一种数据库的差异检测方法及装置 | |
CN111444197B (zh) | 一种块链式账本中数据记录的验证方法、装置及设备 | |
CN111444194B (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
KR20100090178A (ko) | 키워드 정련 장치 및 방법과 그를 위한 컨텐츠 검색 시스템 및 그 방법 | |
CN114115831A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN113704227A (zh) | 一种增量更新数据入库方法、装置、电子设备及存储介质 | |
CN110716739A (zh) | 一种代码变更信息统计方法、***和可读存储介质 | |
CN114385155A (zh) | vue项目可视化工具生成方法、装置、设备及存储介质 | |
US10841405B1 (en) | Data compression of table rows | |
CN110263303B (zh) | 文本修改历史的追溯方法及装置 | |
CN106469086B (zh) | 事件处理方法和装置 | |
CN113313615A (zh) | 一种对企业司法风险进行量化评分定级的方法及装置 | |
WO2021072776A1 (zh) | 数据合并方法、装置、电子设备及存储介质 | |
CN110825784A (zh) | 一种低效业务过程的检测方法及装置 | |
CN116521742B (zh) | 源代码分析结果聚合方法、装置、电子设备及存储介质 | |
CN116991978B (zh) | 一种cms碎片特征提取方法、***、电子设备及存储介质 | |
CN111444195B (zh) | 一种块链式账本中索引的清除方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |