代码变更统计方法、装置、电子设备及存储介质制造方法及图纸

技术编号:26969674 阅读:23 留言:0更新日期:2021-01-05 23:58
本申请提供一种代码变更统计方法、装置、电子设备及存储介质,包括:获取第一源代码文件中的第一代码,以及代码变更后的第二源代码文件中的第二代码,其中,所述第一代码包括至少一个第一代码行,所述第二代码包括至少一个第二代码行;针对每个第二代码行,在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行;根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量。由于此方法是直接对代码行进行比较,并不涉及语法分析和语法树构建过程,因此,与现有技术相比,所需时长较短,继而提高代码变更量的统计效率。

【技术实现步骤摘要】
代码变更统计方法、装置、电子设备及存储介质
本申请涉及软件开发
,具体而言,涉及一种代码变更统计方法、装置、电子设备及存储介质。
技术介绍
一般而言,程序员在进行软件开发时,通常是基于之前编写的代码进行后续开发,因此,为了比较合理地统计程序员的工作量,因此,现有技术基于第一代码文件中的代码建立第一抽象语法树,以及基于代码变更后的第二代码文件中的代码建立第二抽象语法树,通过计算第一抽象语法树和第二抽象语法树之间节点的差异,以统计程序员编写的第二代码文件所作出的代码贡献量;然而,在构建语法树时,需要将代码文件中的源代码进行词法分析和语法分析之后,才能构建出语法树,复杂度高,耗时较长;其次,在构建出的语法树比较大时,比较语法树之间的节点差异的过程也非常耗时。
技术实现思路
鉴于此,本申请实施例的目的在于提供一种代码变更统计方法、装置、电子设备及存储介质,以提高统计效率。第一方面,本申请实施例提供一种代码变更统计方法,所述方法包括:获取第一源代码文件中的第一代码,以及代码变更后的第二源代码文件中的第二代码,其中,所述第一代码包括至少一个第一代码行,所述第二代码包括至少一个第二代码行;针对每个第二代码行,在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行;根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量。在上述实现过程中,在获取到第一源代码文件中的至少一个第一代码行,以及代码变更后的第二源代码文件中的至少一个第二代码行之后,针对每个第二代码行,通过将该第二代码行与所述至少一个第二代码行中的各行代码进行比较,在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行,继而根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量,由于上述过程是直接对代码行进行比较,且不涉及语法分析和语法树构建过程,因此,与现有技术相比,所需时长较短,继而提高代码变更量的统计效率。基于第一方面,在一种可能的设计中,在所述第二代码中还包括各个第二代码行的行号时,在所述在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行之后,所述方法还包括:将该第二代码行的行号记录为所述目标代码行的行号;根据所述目标代码行的行号对所述目标代码行进行汇总。在目标代码行的数量比较多的情况下,若确定出一个目标代码行,就将记录该目标代码行的代码,在目标代码行的数量较多的情况下,需要记录的内容也会变得非常多,因此,在上述实现过程中,在确定出一个目标代码行之后,只需要记录目标代码行的行号,无需直接记录该目标代码行的代码,需要记录的内容较少,最后根据所述目标代码行的行号对所述目标代码行进行汇总,以根据汇总后的目标代码行确定出代码变更量。基于第一方面,在一种可能的设计中,所述根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量,包括:根据所述目标代码行,确定所述至少一个第一代码行中是否存在与该目标代码行部分相同的代码行;在确定所述至少一个第一代码行中存在与该目标代码行部分相同的代码行时,确定该目标代码行为变更后的代码行,否则确定该目标代码行为新增代码行;根据所述变更后的代码行、所述新增代码行和预设规则,确定出表征程序员对所述第一代码所作变更的变更量。针对每个目标代码行,将其与至少一个第一代码行相比,该目标代码行可能是新增代码行,也可能是对某个第一代码行进行部分修改后的变更后的代码行,可以理解的是,新增一行代码的工作量通常比修改一行代码的工作量大,因此,在上述实现过程中,通过对变更后的代码行和新增代码行进行区分,继而根据所述变更后的代码行、所述新增代码行和所述预设规则,更为准确地确定出程序员的工作量。基于第一方面,在一种可能的设计中,在所述确定出表征程序员对所述第一代码所作变更的变更量之前,所述方法还包括:在确定所述至少一个第一代码行中存在与该目标代码行部分相同的代码行时,确定所述部分相同的代码行为与该目标代码行对应的变更前的代码行;对应的,所述根据所述变更后的代码行、所述新增代码行和预设规则,确定出表征程序员对所述第一代码所作变更的变更量,包括:针对每个变更后的代码行,基于词法分析技术,将该变更后的代码行和与该变更后的代码行对应的变更前的代码行进行分词并比较,确定存在差异的第一单词数量;基于所述词法分析技术,对所述新增代码行进行分词,确定出第二单词数量;基于所述第一单词数量和所述第二单词数量,确定出所述变更量。某些场景下(比如if条件判断语句层级的变动、代码层级缩进等),针对现有技术,即使只对代码文件中的代码作一个比较小的修改,也会导致语法树结构发生较大的变化,继而导致代码变更前后的代码文件所对应的语法树之间的节点差异较大,最终导致程序员的工作量统计不够准确,因此,在上述实现过程中,基于词法分析技术,将该变更后的代码行和与该变更后的代码行对应的变更前的代码行进行分词并比较,确定存在差异的第一单词数量,由于第一单词数量能较为准确地度量变更后的代码行和与该变更后的代码行对应的变更前的代码行之间的差异,可以理解的是,第一单词的数量越多,工作量越大,反之,越小;继而根据第一单词数量和第二单词数量能更为准确地确定出程序员的工作量。基于第一方面,在一种可能的设计中,所述根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量,包括:基于词法分析技术,对所述目标代码行中的代码进行分词,确定单词的数量为所述变更量。在上述实现过程中,通过确定目标代码行中的单词的数量为变更量,能够快速、且合理地确定出程序员的工作量。第二方面,本申请实施例提供一种代码变更统计装置,所述装置包括:获取单元,用于获取第一源代码文件中的第一代码,以及代码变更后的第二源代码文件中的第二代码,其中,所述第一代码包括至少一个第一代码行,所述第二代码包括至少一个第二代码行;目标代码行确定单元,用于针对每个第二代码行,在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行;变更量确定单元,用于根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量。基于第二方面,在一种可能的设计中,在所述第二代码中还包括各个第二代码行的行号时,所述装置还包括:汇总单元,用于将该第二代码行的行号记录为所述目标代码行的行号;以及根据所述目标代码行的行号对所述目标代码行进行汇总。基于第二方面,在一种可能的设计中,所述变更量确定单元,具体用于根据所述目标代码行,确定所述至少一个第一代码行中是否存在与该目标代码行部分相同的代码行;以及在确定所述至少一个第一代码行中存在与该目标代码行部分相同的代码行时,确定该目标代码行为变更后的代码行,否则确定该目标代码行为新增代码行;根据所述变更后的代码行、所述新增代码行和预设规则,确定出表征程序员对所述第一代码所作变更的变更量。基于第二方面,在一种可能的设计中,所述装置还包括:变更前的代码行确定单元,用于在确定本文档来自技高网...

【技术保护点】
1.一种代码变更统计方法,其特征在于,所述方法包括:/n获取第一源代码文件中的第一代码,以及代码变更后的第二源代码文件中的第二代码,其中,所述第一代码包括至少一个第一代码行,所述第二代码包括至少一个第二代码行;/n针对每个第二代码行,在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行;/n根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量。/n

【技术特征摘要】
1.一种代码变更统计方法,其特征在于,所述方法包括:
获取第一源代码文件中的第一代码,以及代码变更后的第二源代码文件中的第二代码,其中,所述第一代码包括至少一个第一代码行,所述第二代码包括至少一个第二代码行;
针对每个第二代码行,在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行;
根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量。


2.根据权利要求1所述的方法,其特征在于,在所述第二代码中还包括各个第二代码行的行号时,在所述在确定所述至少一个第一代码行中不存在与该第二代码行相同的代码行时,确定该第二代码行为目标代码行之后,所述方法还包括:
将该第二代码行的行号记录为所述目标代码行的行号;
根据所述目标代码行的行号对所述目标代码行进行汇总。


3.根据权利要求1所述的方法,其特征在于,所述根据所述目标代码行,确定出表征程序员对所述第一代码所作变更的变更量,包括:
根据所述目标代码行,确定所述至少一个第一代码行中是否存在与该目标代码行部分相同的代码行;
在确定所述至少一个第一代码行中存在与该目标代码行部分相同的代码行时,确定该目标代码行为变更后的代码行,否则确定该目标代码行为新增代码行;
根据所述变更后的代码行、所述新增代码行和预设规则,确定出表征程序员对所述第一代码所作变更的变更量。


4.根据权利要求3所述的方法,其特征在于,在所述确定出表征程序员对所述第一代码所作变更的变更量之前,所述方法还包括:
在确定所述至少一个第一代码行中存在与该目标代码行部分相同的代码行时,确定所述存在部分相同的代码行为与该目标代码行对应的变更前的代码行;
对应的,所述根据所述变更后的代码行、所述新增代码行和预设规则,确定出表征程序员对所述第一代码所作变更的变更量,包括:
针对每个变更后的代码行,基于词法分析技术,将该变更后的代码行和与该变更后的代码行对应的变更前的代码行进行分词并比较,确定存在差异的第一单词数量;
基于所述词法分析技术,对所述新增代码...

【专利技术属性】
技术研发人员:何军宋勇明黄驰郝宽江同飞
申请(专利权)人:北京云族佳科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1