CN111367529A - 代码贡献统计方法及装置 - Google Patents

代码贡献统计方法及装置 Download PDF

Info

Publication number
CN111367529A
CN111367529A CN202010134945.8A CN202010134945A CN111367529A CN 111367529 A CN111367529 A CN 111367529A CN 202010134945 A CN202010134945 A CN 202010134945A CN 111367529 A CN111367529 A CN 111367529A
Authority
CN
China
Prior art keywords
code
line
change
file
submission
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.)
Pending
Application number
CN202010134945.8A
Other languages
English (en)
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.)
Zhejiang Supcon Technology Co Ltd
Original Assignee
Zhejiang Supcon Technology Co 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 Zhejiang Supcon Technology Co Ltd filed Critical Zhejiang Supcon Technology Co Ltd
Priority to CN202010134945.8A priority Critical patent/CN111367529A/zh
Publication of CN111367529A publication Critical patent/CN111367529A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及计算机技术领域,特别是涉及一种代码贡献统计方法及装置。该方法包括:获取目标软件项目在预设时间段内的初始代码文件及最终代码文件;将最终代码文件中的各个代码行与初始代码文件中的各个代码行进行比较,确定各个变更代码行;判断各个变更代码行是否符合无效代码规则,剔除符合无效代码规则的变更代码行,将不符合无效代码规则的变更代码行确定为有效变更代码行;确定各个有效变更代码行的行序号,查找每个行序号对应的提交信息;依据各个提交信息,确定对每个有效变更代码行进行变更操作的操作人员,并统计每个操作人员的总代码行数。应用本发明的方法,可以剔除无效更改的代码行,降低统计各个操作人员的代码贡献的误差。

Description

代码贡献统计方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种代码贡献统计方法及装置。
背景技术
在各个软件项目的开发过程中,技术人员需要对软件项目中的各个代码进行多次的变更,例如修改某行代码中的参数、增加新的代码行等。在对技术人员的编码效率和质量进行评估时,需要统计各个技术人员对软件项目的各个代码行进行变更的贡献。
现有技术中,通过获取各个代码的历史提交日志,确定每次提交变更代码时的技术人员,以统计每一位技术人员总的变更代码次数,变更代码次数越多,技术人员对应的贡献就越高。但在现有技术的统计代码贡献过程中,技术人员可能只增加了一个空行代码,或对某一行代码进行了删除操作,而对于增加空行代码或删除代码等操作并不能作为技术人员的有效贡献。因此,在现有技术对代码贡献的统计过程中,统计各个开发人员的代码贡献的结果偏差较大。
发明内容
有鉴于此,本发明提供一种代码贡献统计方法,通过该方法,可以剔除无效更改的代码行,降低统计各个操作人员的代码贡献的误差。
本发明还提供了一种代码贡献统计装置,用以保证上述方法在实际中的实现及应用。
一种代码贡献统计方法,包括:
获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
上述的方法,可选的,所述获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,包括:
当接收到客户端输入所述目标软件项目对应的项目信息时,获取所述项目信息中包含的所述目标软件项目对应的代码保存路径,及所述预设时间段对应的起始时刻及结束时刻;
访问所述项目信息中包含的代码保存路径,获取在所述起始时刻所述目标软件项目中的各个代码行,及在所述结束时刻所述目标软件项目中的各个代码行;
将所述起始时刻对应的各个代码行保存至预设的初始代码文件中,及所述结束时刻对应的各个代码行保存至预设的最终代码文件中,获得所述目标软件项目在所述预设时间段内的初始代码文件及最终代码文件。
上述的方法,可选的,所述判断所述各个变更代码行是否符合预设的无效代码规则,包括:
对于每个所述变更代码行,判断所述变更代码行是否为空白行、注释行或被删除行;
若所述变更代码行为空白行、注释行或被删除行,则确定所述变更代码行符合预设的无效代码规则;
若所述变更代码行并非空白行、注释行或被删除行,则确定所述变更代码行不符合预设的无效代码规则。
上述的方法,可选的,所述依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,包括:
获取每个所述提交信息中包含的至少一个提交记录,所述提交记录包含提交版本、提交时间、变更内容、操作人员信息;
在每个所述有效变更代码行的提交信息中,确定所述提交信息中各个不符合所述无效代码规则的变更内容,并在所述提交信息的每个不符合所述无效代码规则的变更内容中,选择所述预设时间段内提交时间最晚的变更内容对应的提交记录为有效提交记录;
依据每个所述有效提交记录中包含的操作人员信息,确定对每个所述有效变更代码行进行变更操作的操作人员。
上述的方法,可选的,还包括:
应用预先设置的列表参数生成代码贡献列表,并将各个所述操作人员的总代码行数更新至所述代码贡献列表中。
一种代码贡献统计装置,包括:
获取单元,用于获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
比较单元,用于将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
判断单元,用于判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
查找单元,用于确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
统计单元,用于依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
上述的装置,可选的,所述获取单元,包括:
第一获取子单元,用于当接收到客户端输入所述目标软件项目对应的项目信息时,获取所述项目信息中包含的所述目标软件项目对应的代码保存路径,及所述预设时间段对应的起始时刻及结束时刻;
第二获取子单元,用于访问所述项目信息中包含的代码保存路径,获取在所述起始时刻所述目标软件项目中的各个代码行,及在所述结束时刻所述目标软件项目中的各个代码行;
保存子单元,用于将所述起始时刻对应的各个代码行保存至预设的初始代码文件中,及所述结束时刻对应的各个代码行保存至预设的最终代码文件中,获得所述目标软件项目在所述预设时间段内的初始代码文件及最终代码文件。
上述的装置,可选的,所述判断单元,包括:
判断子单元,用于对于每个所述变更代码行,判断所述变更代码行是否为空白行、注释行或被删除行;
第一确定子单元,用于若所述变更代码行为空白行、注释行或被删除行,则确定所述变更代码行符合预设的无效代码规则;
第二确定子单元,用于若所述变更代码行并非空白行、注释行或被删除行,则确定所述变更代码行不符合预设的无效代码规则。
上述的装置,可选的,所述统计单元,包括:
第三获取子单元,用于获取每个所述提交信息中包含的至少一个提交记录,所述提交记录包含提交版本、提交时间、变更内容、操作人员信息;
选择子单元,用于在每个所述有效变更代码行的提交信息中,确定所述提交信息中各个不符合所述无效代码规则的变更内容,并在所述提交信息的每个不符合所述无效代码规则的变更内容中,选择所述预设时间段内提交时间最晚变的更内容对应的提交记录为有效提交记录;
第三确定子单元,用于依据每个所述有效提交记录中包含的操作人员信息,确定对每个所述有效变更代码行进行变更操作的操作人员。
上述的装置,可选的,还包括:
更新单元,用于应用预先设置的列表参数生成代码贡献列表,并将各个所述操作人员的总代码行数更新至所述代码贡献列表中。
一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的代码贡献统计方法。
一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的代码贡献统计方法。
与现有技术相比,本发明包括以下优点:
本发明提供了一种代码贡献统计方法,包括:获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。应用本发明的方法,可以剔除无效更改的代码行,降低统计各个操作人员的代码贡献的误差。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种代码贡献统计方法的方法流程图;
图2为本发明实施例提供的一种代码贡献统计方法的又一方法流程图;
图3为本发明实施例提供的一种代码贡献统计方法的又一方法流程图;
图4为本发明实施例提供的一种代码贡献统计装置的装置结构图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明实施例提供了一种代码贡献统计方法,该方法可以应用在多种系统平台,其执行主体可以为计算机终端或各种移动设备的处理器,所述方法的方法流程图如图1所示,具体包括:
S101:获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
在本发明实施例中,在各个软件项目的开发过程中,需要定时统计每个软件项目的完成情况,以及每个操作人员对软件项目开发过程中的代码贡献情况。当确定要对某个软件项目的代码贡献进行统计时,待统计代码贡献的软件项目则为目标软件项目。在对目标软件项目的代码进行统计前,先获取该目标软件项目在预设时间段内的初始代码文件和最终代码文件。
需要说明的是,该初始代码文件中包含多个代码行,该初始代码文件中的每个代码行是在预设时间段的起始时刻该目标软件项目中的各个代码行。最终代码文件中也包含多个代码行,该最终代码文件中的每个代码行是在预设时间段的结束时刻该目标软件项目中的各个代码行。例如,该预设时间段为一个月,则该初始代码文件为月初时包含该目标软件项目的各个代码行的文件;该最终代码文件为月末时包含该目标软件项目的各个代码行的文件。
S102:将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
在本发明实施例中,在该预设时间段内,目标软件项目的某些代码行可能需要进行增加和修改。例如该目标软件项目出现漏洞时,需要操作人员对该目标软件项目进行维护,通过修改或增加代码行的方式修复漏洞。为确定该预设时间段内每个操作人员对该目标软件项目修改或增加代码行的贡献,需要将该初始代码文件与最终代码文件中的各个代码行进行比较,确定该最终代码文件中未与该初始代码文件中的各个代码行相匹配的代码行。
S103:判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
在本发明实施例中,在确定该最终代码文件中与该初始代码文件中的各个不匹配的变更代码行后,判断每个变更代码行是否满足无效代码规则。其中,该无效代码规则包括多种变更方式,具体可以包括:变更代码行的变更方式为删除代码、变更代码行的变更方式为增加对原代码行的注释及变更代码行的变更方式为增加一行空白代码等。变更方式为删除代码具体可以是在原代码行的基础上,该原代码行中的部分代码被删除或整段代码被删除,此时,该原代码行即使删除了某些代码或整段代码,但其对应的变更方式为无效变更,满足无效代码规则。同理,若原代码行在变更时,只是增加了文字注释,则变更方式也为无效变更。若变更方式为增加一行空白代码,该更改方式也是无效更改。
具体的,本发明实施例中,在各个变更代码行中确定满足该无效代码规则的变更代码行后,将符合该无效代码规则的变更代码行进行剔除,即无需对符合无效代码规则的变更代码行进行统计。将各个不符合无效代码规则的变更代码行确定为有效变更代码行,可以对有效变更代码行进行代码贡献统计。
S104:确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
在本发明实施例中,目标软件项目中的每个代码行都有其对应的行序号。当操作人员在提交代码文件时,会依据各个代码行的行序号,记录每次提交代码文件中发生变更的代码行的相关信息。在确定各个有效变更代码行后,需确定每个有效代变更码行的行序号,并在代码库中根据各个代码行查找对应的提交信息。
需要说明的是,本发明实施例中的代码库具体可以是版本控制系统SVN代码库。
S105:依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
在本发明实施例中,在每个代码行对应的提交信息中,包含了该代码行每次提交对应的操作人员,可获取该提交信息中包含的对每个有效变更代码行进行变更操作的操作人员。在该预设时间段内,同一个操作人员可能对该目标软件项目中的各个代码行进行多次更改,因此统计每个操作人员对应的总代码行数,以确定每个操作人员对应的代码贡献。
本发明实施例提供的代码贡献统计方法中,当需要统计预设时间段内,目标软件项目进行有效贡献的各个操作人员的总代码行数时,需获取在该预设时间段内的初始代码文件及最终代码文件。将该初始代码文件中的各个代码行与最终代码文件中的各个代码行进行比较,确定该最终代码文件中与该初始代码文件存在差异的变更代码行。在各个变更代码行中确定不符合无效代码规则的代码行为有效变更代码行,并将符合无效代码规则的代码行进行剔除。根据每个有效变更代码行的行序号,获取每个有效变更代码行对应的提交信息,并根据各个提交信息确定对每个有效变更代码行进行变更操作的操作人员,统计每个操作人员变更该目标软件项目中各个代码行的总代码行数,从而确定每个操作人员对该目标软件项目对应的代码贡献。操作人员的总代码行数越多,其对应的代码贡献越高。
需要说明的是,在将初始代码文件中的各个代码行与最终代码文件中的各个代码行进行比较时,可以通过应用BCompare、WinMerge及TortoiseUDifferent等工具软件执行比较代码行的过程,还可以是处理器通过获取初始代码文件的各个代码行,及最终代码文件的各个代码行一一进行差异性比较。
基于上述实施例提供的方法,该方法可以应用于开发应用软件的过程中,例如日常的聊天工具、音乐软件、视频软件等在开发过程中会存在某些漏洞,或需要对应用软件增加新的软件功能。此时操作人员可根据需求对该应用软件对应的各个代码行进行变更,达到修复应用软件的漏洞或增加新的软件功能的目的。当需要统计每个操作人员在月初到月末的时间段内对应用软件A中各个代码行进行变更的贡献时,获取月初时刻的初始代码文件及月末时刻的最终代码文件,并将初始代码文件与最终代码文件进行比较,确定最终代码文件中的各个变更代码行。并根据无效代码规则,将各个变更代码行中符合该无效代码规则的代码行进行剔除,剩余的变更代码行则为有效变更代码行。从代码库中获取每个有效变更代码行的行序号对应的提交信息,并根据各个提交信息确定每个有效变更代码行对应的操作人员,最终确定每个操作人员的总代码行数,从而确定每个操作人员的代码贡献。当需要对每个操作人员进行业绩考核时,可以根据每个操作人员的代码贡献作为考核标准之一。
应用本发明实施例提供的方法,按照无效代码规则,剔除各个变更代码行中进行无效更改的代码行,降低统计各个操作人员的代码贡献的误差。
本发明实施例提供的方法中,基于上述步骤S101的内容,所述获取目标软件项目在预设时间段内的初始代码文件及最终代码文件的过程如图2所示,具体可以包括:
S201:当接收到客户端输入所述目标软件项目对应的项目信息时,获取所述项目信息中包含的所述目标软件项目对应的代码保存路径,及所述预设时间段对应的起始时刻及结束时刻;
在本发明实施例中,用户可通过客户端输入需要进行代码贡献统计的目标软件项目的项目信息,当处理器接收到该项目信息后,可根据该项目信息获取该目标软件项目对应的代码保存路径。该代码保存路径为该目标软件在每次提交代码时,保存当前提交代码的保存路径。其中该项目信息中还包括用户设置的需要统计代码贡献的预设时间段对应的起始时刻和结束时刻。
S202:访问所述项目信息中包含的代码保存路径,获取在所述起始时刻所述目标软件项目中的各个代码行,及在所述结束时刻所述目标软件项目中的各个代码行;
在本发明实施例中,基于该代码保存路径,确定该目标软件项目对应的各个代码行的存储位置,并通过访问该代码保存路径,获得起始时刻对应的各个代码行及结束时刻对应的各个代码行。
S203:将所述起始时刻对应的各个代码行保存至预设的初始代码文件中,及所述结束时刻对应的各个代码行保存至预设的最终代码文件中,获得所述目标软件项目在所述预设时间段内的初始代码文件及最终代码文件。
在本发明实施例中,将起始时刻对应的对应的各个代码行保存到初始代码文件,同时也将结束时刻对应的各个代码行保存到最终代码文件,依据该初始代码文件及最终代码文件执行代码贡献的统计过程。
本发明实施例提供的代码贡献统计方法中,当用户需要统计在预设时间段内,该目标软件项目对应的每个操作人员的代码贡献时,可以通过客户端向处理器发送项目信息,该项目信息中包含该目标软件项目对应的代码保存路径、该预设时间段对应的起始时刻和结束时刻。其中,该起始时刻和结束时刻可以是用户自主设置的时间点。例如,该起始时刻为7月1日的中午12:00,结束时刻为8月1日中午12:00。在7月1日中午12:00时刻,该目标软件项目中的各个代码行,为该初始代码文件中的各个代码行;在8月1日中午12:00时刻,该目标软件项目中的各个代码行,为该最终代码文件中的各个代码行。在获取该项目信息中包含的代码保存路径后,通过访问该代码保存路径,获取在该预设时间段内的起始时刻该目标软件项目对应的各个代码行,以及在该预设时间段内的结束时刻该目标软件项目对应的各个代码行。将该预设时间段内的起始时刻该目标软件项目对应的各个代码行,保存到预先设置的初始代码文件当中,同时也将该预设时间段内的结束时刻该目标软件项目对应的各个代码行,保存到预先设置的最终代码文件当中,获得初始代码文件和最终代码文件。
需要说明的是,该项目信息中包括代码保存路径,及所述预设时间段对应的起始时刻及结束时刻,具体还可以包括代码文件类型、统计结果的保存路径、代码文件保存路径及代码库的URL地址等。
还需要说明的是,该初始代码文件中的各个代码行,可以是在该预设时间段的起始时刻之前最后一次提交的该目标软件项目中的各个代码行;也可以是在该起始时刻进行提交的目标软件项目中的各个代码行;也可以是在该起始时刻后第一次提交的该目标软件项目中的各个代码行。该最终代码行中的各个代码行可以是在该预设时间段的结束时刻之前最后一次提交的该目标软件项目中的各个代码行,也可以是在该结束时刻进行提交的该目标软件项目中的各个代码行。
应用本发明实施例提供的方法,通过输入的项目信息,确定代码保存路径,以通过该代码保存路径,获得在该预设时间段内该目标软件项目的初始代码文件及最终代码文件,并通过该初始代码文件及最终代码文件完成代码贡献统计的过程。
本发明实施例提供的方法中,基于上述步骤S103的内容,所述判断所述各个变更代码行是否符合预设的无效代码规则,包括:
对于每个所述变更代码行,判断所述变更代码行是否为空白行、注释行或被删除行;
若所述变更代码行为空白行、注释行或被删除行,则确定所述变更代码行符合预设的无效代码规则;
若所述变更代码行并非空白行、注释行或被删除行,则确定所述变更代码行不符合预设的无效代码规则。
本发明实施例提供的方法中,在确定该最终代码文件中各个变更代码行后,需要确定各个变更代码行中是否存在符合无效代码规则的代码行。对每个变更代码行进行判断,确定该变更代码行是否为空白行、注释行或被删除行,即,该判断该变更代码行是否存在代码仅进行注释或仅被删除了部分内容。如果该变更代码行为空白行、注释行或被删除行,则表征该变更代码行符合该无效代码规则,否则该变更代码行不符合无效代码规则。其中,不符合无效代码规则的变更代码行为有效变更代码行。
可选的,除了空白行、注释行及被删除行符合该无效代码规则之外,还可以包括乱码行、添加非代码内容的代码行等,如,原代码行为“ABC”,变更后为“#¥%”,该行代码变成乱码的乱码行;原代码行为“ABC”,变更后为“ABC//”,该行代码仅添加了非代码内容,且无实际意义的符号。
基于上述实施例提供的方法,对确定各个变更代码行是否符合无效代码规则的过程,进行举例如下:
初始代码文件中包含4个代码行分别为:
(1)AABBCCDD
(2)BBCCDDEEFF
(3)ABCDEF//
(4)BCDEF
最终代码文件中包含6个代码行分别为:
(1)AACCDD
(2)BBCCDDEEFF
(3)ABCDEF//“文件名称”
(4)BCDDF
(5)**//
(6)BCD
其中,最终代码文件中代码行(1)、(3)、(4)、(5)、(6)均为变更代码行,其中最终代码文件中(1)代码行仅删除了“BB”代码,符合无效代码规则;(3)代码行增加了注释为“文件名称”,也符合无效代码规则;(4)代码行中将“E”更改为“D”,不符合无效代码规则;(5)代码行增加“**//”新的代码行,并不存在实际意义且属于空白行,符合无效代码规则;(6)代码行增加“BCD”代码,为有意义的新增代码行,不符合无效代码规则。因此,仅有(4)和(6)代码行为有效变更代码行。
应用本发明实施例提供的方法,通过确定更改变更代码行是否为有效的变更,以确定每个操作人员对每个代码行进行变更操作是否为有效操作,降低统计各个操作人员的代码贡献的误差。
本发明实施例提供的方法中,基于上述步骤S105的内容,所述依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员的过程如图3所示,具体可以包括:
S301:获取每个所述提交信息中包含的至少一个提交记录,所述提交记录包含提交版本、提交时间、变更内容、操作人员信息;
在本发明实施例中,在每个行序号对应的提交信息中,可能会包含对该行序号对应的有效变更代码行进行多次变更的提交记录。从每个提交信息中提取出其包含的各个提交记录,每个提交记录中包含了每次提交时该目标软件项目对应的提交版本、提交时间、具体变更内容以及对应的变更操作的操作人员信息。
S302:在每个所述有效变更代码行的提交信息中,确定所述提交信息中各个不符合所述无效代码规则的变更内容,并在所述提交信息的每个不符合所述无效代码规则的变更内容中,选择所述预设时间段内提交时间最晚的变更内容对应的提交记录为有效提交记录;
在本发明实施例中,根据每个提交信息中的各个提交记录,确定该提交信息中各个不符合该无效代码规则的变更内容,并将该提交信息中,确定提交时间最晚且不符合该无效代码规则的变更内容对应的提交记录为有效提交记录。即,对于每一个有效变更代码行的提交信息,其每次进行提交的内容并非都不符合无效代码规则,例如,代码行“ABC”经过三次变更,分别为“AC”、“ABC”和“ADC”,则前两次变更符合无效代码规则,最后一次才是真正的有效变更,因此需要确定各个提交记录当中真正的有效提交记录。
S303:依据每个所述有效提交记录中包含的操作人员信息,确定对每个所述有效变更代码行进行变更操作的操作人员。
在本发明实施例中,根据该有效提交记录中的操作人员信息,可以确定该有效变更代码行对应的操作人员,并可以统计该操作人员对该目标软件项目的各个代码行进行有效的变更操作的总代码行数。
本发明实施例提供的代码贡献统计方法中,通过提取每个提交信息当中的提交记录,确定真正对该有效变更代码行进行有效变更的有效提交记录,以确定对该有效变更代码行进行有效的变更操作的操作人员,提高了统计各个操作人员的代码贡献的准确率。
具体的,本发明实施例提供的方法中,具体还可以包括:
应用预先设置的列表参数生成代码贡献列表,并将各个所述操作人员的总代码行数更新至所述代码贡献列表中。
在本发明实施例提供的方法中,在统计完各个操作人员的总代码行数后,可以设置对应的列表参数,其中该列表参数可以包括列表类型、列表格式、排布方式等。应用该列表参数生成代码贡献列表,同时将每个操作人员的总代码行数更新到该代码贡献列表当中。其中,该代码贡献列表中记录每个操作人员所贡献的代码行的具体内容,其中包括了与每个有效变更代码行的有效提交记录等。
具体的,在将各个总代码行数更新至该代码贡献列表后,可将该代码贡献列表展示在预设的展示页面上,用户或操作人员可以通过该展示页面获知每个操作人员对应进行有效变更的总代码行数。
应用本发明实施例提供的方法,生成代码贡献列表,可以更加直观地体现该目标软件项目在该预设时间段内进行有效修改的具体信息,及每个操作人员对该目标软件项目的代码贡献。
上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
与图1所述的方法相对应,本发明实施例还提供了一种代码贡献统计装置,用于对图1中方法的具体实现,本发明实施例提供的代码贡献统计装置可以应用计算机终端或各种移动设备中,其结构示意图如图4所示,具体包括:
获取单元401,用于获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
比较单元402,用于将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
判断单元403,用于判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
查找单元404,用于确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
统计单元405,用于依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
本发明实施例提供的代码贡献统计装置中,由获取单元获取需要进行代码贡献统计的初始代码文件和最终代码文件,并由比较单元将该初始代码文件和最终代码文件进行比较,以确定该最终代码文件中的各个变更代码行,由判断单元对每个变更代码行进行判断,确定各个变更代码行是否符合无效代码规则。将符合该无效代码规则的变更代码行进行剔除,并把所有不符合该无效代码规则的变更代码行确定为有效变更代码行。查找单元通过代码库查找每个有效变更代码行的提交信息,并通过各个提交信息确定对每个有效变更代码行进行贡献的操作人员,最后由统计单元对每个操作人员所进行更改操作的总代码行数。应用本发明实施例中的装置,通过比较单元和判断单元剔除各个符合无效规则的代码行,提高了统计各个操作人员的代码贡献的准确率。
本发明实施例提供的装置中,所述获取单元401,包括:
第一获取子单元,用于当接收到客户端输入所述目标软件项目对应的项目信息时,获取所述项目信息中包含的所述目标软件项目对应的代码保存路径,及所述预设时间段对应的起始时刻及结束时刻;
第二获取子单元,用于访问所述项目信息中包含的代码保存路径,获取在所述起始时刻所述目标软件项目中的各个代码行,及在所述结束时刻所述目标软件项目中的各个代码行;
保存子单元,用于将所述起始时刻对应的各个代码行保存至预设的初始代码文件中,及所述结束时刻对应的各个代码行保存至预设的最终代码文件中,获得所述目标软件项目在所述预设时间段内的初始代码文件及最终代码文件。
本发明实施例提供的装置中,所述判断单元403,包括:
判断子单元,用于对于每个所述变更代码行,判断所述变更代码行是否为空白行、注释行或被删除行;
第一确定子单元,用于若所述变更代码行为空白行、注释行或被删除行,则确定所述变更代码行符合预设的无效代码规则;
第二确定子单元,用于若所述变更代码行并非空白行、注释行或被删除行,则确定所述变更代码行不符合预设的无效代码规则。
本发明实施例提供的装置中,所述统计单元405,包括:
第三获取子单元,用于获取每个所述提交信息中包含的至少一个提交记录,所述提交记录包含提交版本、提交时间、变更内容、操作人员信息;
选择子单元,用于在每个所述有效变更代码行的提交信息中,确定所述提交信息中各个不符合所述无效代码规则的变更内容,并在所述提交信息的每个不符合所述无效代码规则的变更内容中,选择所述预设时间段内提交时间最晚的变更内容对应的提交记录为有效提交记录;
第三确定子单元,用于依据每个所述有效提交记录中包含的操作人员信息,确定对每个所述有效变更代码行进行变更操作的操作人员。
本发明实施例提供的装置中,还包括:
更新单元,用于应用预先设置的列表参数生成代码贡献列表,并将各个所述操作人员的总代码行数更新至所述代码贡献列表中。
以上本发明实施例公开的代码贡献统计装置中各个单元及子单元的具体工作过程,可参见本发明上述实施例公开的代码贡献统计方法中的对应内容,这里不再进行赘述。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述代码贡献统计方法。
本发明实施例还提供了一种电子设备,其结构示意图如图5所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现。
为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种代码贡献统计方法,其特征在于,包括:
获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
2.根据权利要求1所述的方法,其特征在于,所述获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,包括:
当接收到客户端输入所述目标软件项目对应的项目信息时,获取所述项目信息中包含的所述目标软件项目对应的代码保存路径,及所述预设时间段对应的起始时刻及结束时刻;
访问所述项目信息中包含的代码保存路径,获取在所述起始时刻所述目标软件项目中的各个代码行,及在所述结束时刻所述目标软件项目中的各个代码行;
将所述起始时刻对应的各个代码行保存至预设的初始代码文件中,及所述结束时刻对应的各个代码行保存至预设的最终代码文件中,获得所述目标软件项目在所述预设时间段内的初始代码文件及最终代码文件。
3.根据权利要求1所述的方法,其特征在于,所述判断所述各个变更代码行是否符合预设的无效代码规则,包括:
对于每个所述变更代码行,判断所述变更代码行是否为空白行、注释行或被删除行;
若所述变更代码行为空白行、注释行或被删除行,则确定所述变更代码行符合预设的无效代码规则;
若所述变更代码行并非空白行、注释行或被删除行,则确定所述变更代码行不符合预设的无效代码规则。
4.根据权利要求1所述的方法,其特征在于,所述依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,包括:
获取每个所述提交信息中包含的至少一个提交记录,所述提交记录包含提交版本、提交时间、变更内容、操作人员信息;
在每个所述有效变更代码行的提交信息中,确定所述提交信息中各个不符合所述无效代码规则的变更内容,并在所述提交信息的每个不符合所述无效代码规则的变更内容中,选择所述预设时间段内提交时间最晚的变更内容对应的提交记录为有效提交记录;
依据每个所述有效提交记录中包含的操作人员信息,确定对每个所述有效变更代码行进行变更操作的操作人员。
5.根据权利要求1所述的方法,其特征在于,还包括:
应用预先设置的列表参数生成代码贡献列表,并将各个所述操作人员的总代码行数更新至所述代码贡献列表中。
6.一种代码贡献统计装置,其特征在于,包括:
获取单元,用于获取目标软件项目在预设时间段内的初始代码文件及最终代码文件,所述初始代码文件包括在所述预设时间段的起始时刻,所述目标软件项目中的各个代码行;所述最终代码文件包括在所述预设时间段的结束时刻,所述目标软件项目中的各个代码行;
比较单元,用于将所述最终代码文件中的各个代码行与所述初始代码文件中的各个代码行进行比较,确定所述最终代码文件中的各个变更代码行;所述变更代码行,为所述最终代码文件中未与所述初始代码文件中的各个代码行相匹配的代码行;
判断单元,用于判断所述各个变更代码行是否符合预设的无效代码规则,对符合所述无效代码规则的变更代码行进行剔除,并将不符合所述无效代码规则的变更代码行确定为有效变更代码行;
查找单元,用于确定各个所述有效变更代码行的行序号,并在预先设置的代码库中查找每个所述行序号对应的提交信息;
统计单元,用于依据各个所述提交信息,确定对每个所述有效变更代码行进行变更操作的操作人员,并统计每个所述操作人员在所述预设时间段内进行变更操作的总代码行数。
7.根据权利要求6所述的装置,其特征在于,所述获取单元,包括:
第一获取子单元,用于当接收到客户端输入所述目标软件项目对应的项目信息时,获取所述项目信息中包含的所述目标软件项目对应的代码保存路径,及所述预设时间段对应的起始时刻及结束时刻;
第二获取子单元,用于访问所述项目信息中包含的代码保存路径,获取在所述起始时刻所述目标软件项目中的各个代码行,及在所述结束时刻所述目标软件项目中的各个代码行;
保存子单元,用于将所述起始时刻对应的各个代码行保存至预设的初始代码文件中,及所述结束时刻对应的各个代码行保存至预设的最终代码文件中,获得所述目标软件项目在所述预设时间段内的初始代码文件及最终代码文件。
8.根据权利要求6所述的装置,其特征在于,所述判断单元,包括:
判断子单元,用于对于每个所述变更代码行,判断所述变更代码行是否为空白行、注释行或被删除行;
第一确定子单元,用于若所述变更代码行为空白行、注释行或被删除行,则确定所述变更代码行符合预设的无效代码规则;
第二确定子单元,用于若所述变更代码行并非空白行、注释行或被删除行,则确定所述变更代码行不符合预设的无效代码规则。
9.根据权利要求6所述的装置,其特征在于,所述统计单元,包括:
第三获取子单元,用于获取每个所述提交信息中包含的至少一个提交记录,所述提交记录包含提交版本、提交时间、变更内容、操作人员信息;
选择子单元,用于在每个所述有效变更代码行的提交信息中,确定所述提交信息中各个不符合所述无效代码规则的变更内容,并在所述提交信息的每个不符合所述无效代码规则的变更内容中,选择所述预设时间段内提交时间最晚的变更内容对应的提交记录为有效提交记录;
第三确定子单元,用于依据每个所述有效提交记录中包含的操作人员信息,确定对每个所述有效变更代码行进行变更操作的操作人员。
10.根据权利要求6所述的装置,其特征在于,还包括:
更新单元,用于应用预先设置的列表参数生成代码贡献列表,并将各个所述操作人员的总代码行数更新至所述代码贡献列表中。
CN202010134945.8A 2020-03-02 2020-03-02 代码贡献统计方法及装置 Pending CN111367529A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010134945.8A CN111367529A (zh) 2020-03-02 2020-03-02 代码贡献统计方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010134945.8A CN111367529A (zh) 2020-03-02 2020-03-02 代码贡献统计方法及装置

Publications (1)

Publication Number Publication Date
CN111367529A true CN111367529A (zh) 2020-07-03

Family

ID=71206456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010134945.8A Pending CN111367529A (zh) 2020-03-02 2020-03-02 代码贡献统计方法及装置

Country Status (1)

Country Link
CN (1) CN111367529A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181430A (zh) * 2020-09-29 2021-01-05 北京云族佳科技有限公司 代码变更统计方法、装置、电子设备及存储介质
CN112416417A (zh) * 2020-12-03 2021-02-26 中国人寿保险股份有限公司 一种代码量统计方法、装置、电子设备及存储介质
CN113485683A (zh) * 2021-06-28 2021-10-08 延锋伟世通电子科技(上海)有限公司 Rtc代码量统计方法、系统、介质及终端

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446135A (zh) * 2018-03-13 2018-08-24 中国银行股份有限公司 一种代码行数统计方法及装置
CN110716739A (zh) * 2019-09-19 2020-01-21 平安科技(深圳)有限公司 一种代码变更信息统计方法、系统和可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446135A (zh) * 2018-03-13 2018-08-24 中国银行股份有限公司 一种代码行数统计方法及装置
CN110716739A (zh) * 2019-09-19 2020-01-21 平安科技(深圳)有限公司 一种代码变更信息统计方法、系统和可读存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181430A (zh) * 2020-09-29 2021-01-05 北京云族佳科技有限公司 代码变更统计方法、装置、电子设备及存储介质
CN112181430B (zh) * 2020-09-29 2024-06-14 北京云族佳科技有限公司 代码变更统计方法、装置、电子设备及存储介质
CN112416417A (zh) * 2020-12-03 2021-02-26 中国人寿保险股份有限公司 一种代码量统计方法、装置、电子设备及存储介质
CN113485683A (zh) * 2021-06-28 2021-10-08 延锋伟世通电子科技(上海)有限公司 Rtc代码量统计方法、系统、介质及终端

Similar Documents

Publication Publication Date Title
US9135289B2 (en) Matching transactions in multi-level records
KR101999409B1 (ko) 예시에 의한 데이터 포매팅 기법
CN109271321B (zh) 一种贡献代码数统计方法及装置
CN111367529A (zh) 代码贡献统计方法及装置
CN110209650A (zh) 数据规整迁移方法、装置、计算机设备和存储介质
CN114416667A (zh) 快速分享网盘文件的方法、装置、网盘及存储介质
CN108415998B (zh) 应用依赖关系更新方法、终端、设备及存储介质
CN110851173B (zh) 报表生成方法及装置
CN112491649A (zh) 接口联调测试方法、装置、电子设备及存储介质
US20060095841A1 (en) Methods and apparatus for document management
CN115757411A (zh) 一种股市信息数据管理方法、系统、设备及存储介质
CN115408049A (zh) 文件版本控制方法、装置和电子设备
CN114518895A (zh) 批量升级流程优化方法及装置
CN110795424B (zh) 特征工程变量数据请求处理方法、装置及电子设备
CN113971074A (zh) 事务处理方法、装置、电子设备及计算机可读存储介质
CN113377791A (zh) 一种数据处理方法、系统及计算设备
CN111078026A (zh) 一种输入提示方法、装置、电子设备及可读存储介质
CN113961555B (zh) 数据修正方法及装置、存储介质及电子设备
CN116661758B (zh) 一种优化日志框架配置的方法、装置、电子设备及介质
JP6126764B1 (ja) 検索装置、検索方法、プログラム、および非一時的なコンピュータ読取可能な情報記録媒体
CN111767412B (zh) 用于知识图谱构建的数据映射方法及系统、电子设备
CN116069724A (zh) 数据库性能快照的使用方法、存储介质及设备
CN118035210A (zh) 数据库的数据字典管理方法、存储介质、设备及产品
CN112417831A (zh) 表格合并方法和装置
CN113961555A (zh) 数据修正方法及装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination