一种代码变化量的统计方法及其装置与流程

文档序号:12362765阅读:289来源:国知局
一种代码变化量的统计方法及其装置与流程

本发明涉及通信技术,尤指一种代码变化量的统计方法及其装置。



背景技术:

在软件研发工作中,经常需要获取项目版本某个阶段内每个开发人员每天的代码变化量情况、变更类别、变更代码所属的模块、有效代码量、代码注释率以及反应代码质量的一些度量指标值,以便查看员工每天的代码变更趋势,统计故障泄漏率,评估员工的工作量、效率及代码质量,进而对开发工作的改进及时提供依据和参考价值。

通常,软件研发中的代码可以通过并发版本控制系统(Concurrent Versions System,简称CVS)等软件版本管理工具进行管理。具体的,通过CVS可以统计出整个版本中代码行数或有效代码量或是修改的代码行数。

在实施上述现有技术时,本领域技术人员发现,通常使用的软件版本管理工具无法统计每人每个时间段的代码变化情况。



技术实现要素:

为了解决上述技术问题,本发明提供了一种代码变化量的统计方法及其装置,用以解决无法统计每人每个时间段的代码变化情况的问题。

为了达到本发明目的,本发明提供了一种代码变化量的统计方法,包括:

根据提交日期和责任人,确定比较处理脚本,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改对应的代码行数;

根据所述比较处理脚本,获得所述责任人每天的代码变化量。

进一步的,还包括:

根据提交日期和责任人,确定前后代码对比脚本,所述前后代码对比脚本用以对所述提交日期和所述责任人对应的当前代码,以及前次代码分别进行规范性检测,所述前次代码包括在获取所述当前代码之前的最近一版本的代码;

根据所述前后代码对比脚本,获得当前代码检测结果和前次代码检测结果,所述当前代码检测结果包括对所述当前代码进行规范性检测的结果,所述前次代码检测结果包括对所述前次代码进行规范性检测的结果。

进一步的,还包括:

根据日期,确定规范检测脚本,所述规范检测脚本用于对所述日期对应的变化的代码进行检查;

根据所述规范检测脚本,获得变化代码检测结果,所述变化代码检测结果包括对所述日期对应的变化的代码进行规范性检查的结果。

进一步的,还包括:

根据提交日期、责任人以及修改前后的版本号,确定变更代码比较脚本,所述变更代码比较脚本用于对修改前后版本号对应的代码进行比较,获得修改前后版本号对应代码的修改结果,所述修改前后版本号包括修改代码或增加代码的当前版本号,以及获取所述当前版本号之前的最近一版本的版本号;

根据所述变更代码比较脚本,确定修改前后版本号对应代码的修改结果。

进一步的,所述根据提交日期和责任人,确定比较处理脚本之前,还包括:

确定版本号区间和要统计的代码所在的版本库路径;或者

确定时间段和要统计的代码所在的版本库路径。

本发明还提供了一种代码变化量的统计装置,包括:

确定模块,用于根据提交日期和责任人,确定比较处理脚本,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改对应的代码行数;

处理模块,用于根据所述比较处理脚本,获得所述责任人每天的代码变化量。

进一步的,所述确定模块,还用于根据提交日期和责任人,确定前后代码对比脚本,所述前后代码对比脚本用以对所述提交日期和所述责任人对应的当前代码,以及前次代码分别进行规范性检测,所述前次代码包括在获取所述当前代码之前的最近一版本的代码;

所述处理模块,还用于根据所述前后代码对比脚本,获得当前代码检测结果和前次代码检测结果,所述当前代码检测结果包括对所述当前代码进行规范性检测的结果,所述前次代码检测结果包括对所述前次代码进行规范性检测的结果。

进一步的,所述确定模块,还用于根据日期,确定规范检测脚本,所述规范检测脚本用于对所述日期对应的变更的代码进行检查;

所述处理模块,还用于根据所述规范检测脚本,获得变更代码检测结果,所述变更代码检测结果包括对所述日期对应的变更的代码进行规范性检查的结果。

进一步的,所述确定模块,还用于根据提交日期、责任人以及修改前后的版本号,确定变更代码比较脚本,所述变更代码比较脚本用于对修改前后版本号对应的代码进行比较,获得修改前后版本号对应代码的修改结果,所述修改前后版本号包括修改代码或增加代码的当前版本号,以及获取所述当前版本号之前的最近一版本的版本号;

所述处理模块,还用于根据所述变更代码比较脚本,确定修改前后版本号对应代码的修改结果。

进一步的,所述确定模块,还用于确定版本号区间和要统计的代码所在 的版本库路径;或者

确定时间段和要统计的代码所在的版本库路径。

与现有技术相比,本发明包括:根据提交日期和责任人,确定比较处理脚本,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改总和的代码行数;根据所述比较处理脚本,获得所述责任人每天的代码变化量。实现了对每个责任人每天的代码变化量的统计。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明代码变化量的统计方法一实施例的流程示意图;

图2为本发明代码变化量的统计装置一实施例的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例提供的代码变化量的统计方法具体可以应用于对修改或变 更的代码进行统计时。本实施例提供的代码变化量的统计方法具体可以通过代码变化量的统计装置来执行,该代码变化量的统计装置可以集成在计算机内部,或者单独设置,其中,该代码变化量的统计装置可以采用软件和/或硬件的方式来实现。以下对本实施例提供的代码变化量的统计方法及其装置进行详细地说明。

图1为本发明代码变化量的统计方法一实施例的流程示意图,如图1所示,本实施例的方法的执行主体可以是代码变化量的统计装置。该方法包括如下步骤:

步骤101、根据提交日期和责任人,确定比较处理脚本。

在本实施例中,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改对应的代码行数。

举例来讲,根据提交日期和责任人,确定比较处理脚本compare.bat,用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改对应的代码行数;

compare.bat是如下比较命令的集合(以责任人为单位):

需要说明是-e表示有效代码行的比较,具体的参考textdiff工具使用说明。

步骤102、根据所述比较处理脚本,获得所述责任人每天的代码变化量。

在本实施例中,根据提交日期和责任人,确定比较处理脚本,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化 量,所述代码变化量包括代码增加、代码删除和代码修改总和的代码行数;根据所述比较处理脚本,获得所述责任人每天的代码变化量。实现了对每个责任人每天的代码变化量的统计。

在上述实施例的基础上,该方法,还可以包括:

根据提交日期和责任人,确定前后代码对比脚本,所述前后代码对比脚本用以对所述提交日期和所述责任人对应的当前代码,以及前次代码分别进行规范性检测,所述前次代码包括在获取所述当前代码之前的最近一版本的代码。

根据所述前后代码对比脚本,获得当前代码检测结果和前次代码检测结果,所述当前代码检测结果包括对所述当前代码进行规范性检测的结果,所述前次代码检测结果包括对所述前次代码进行规范性检测的结果。

举例来讲,根据提交日期和责任人,确定前后代码对比脚本checkStyle.bat,用于对当前代码revision和前次代码lastrevision对应的源代码进行规范检查,并将结果输出到前次代码检测结果old_checkstyle_report.xml和当前代码检测结果new_checkstyle_report.xm中;

(1)checkStyle.bat是如下命令的集合:

在上述实施例的基础上,该方法,还包括:

根据日期,确定规范检测脚本,所述规范检测脚本用于对所述日期对应的变化的代码进行检查;

根据所述规范检测脚本,获得变化代码检测结果,所述变化代码检测结果包括对每天变更的代码进行规范性检查的结果。其中,变化代码包括代码增加、代码删除和代码修改中的至少一种。

举例来讲,根据日期确定规范检测脚本copyCodeToSM.bat,用于将每天变化的文件拷贝到sourceMonitor检测工具目录下,对代码进行sourceMonitor检查。

进一步的,在上述实施例的基础上,该方法,还可以包括:

根据提交日期、责任人以及修改前后的版本号,确定变更代码比较脚本,所述变更代码比较脚本用于对修改前后版本号对应的代码进行比较,获得修改前后版本号对应代码的修改结果,所述修改前后版本号包括修改代码或增加代码的当前版本号,以及获取所述当前版本号之前的最近一版本的版本号;

根据所述变更代码比较脚本,确定修改前后版本号对应代码的修改结果。

根据文件的变化类型(M、A、D),对于变化类型是M和A的,根据提交日期、责任人以及修改前后的版本号按照一定的目录组织规则生成导出文件的命令并输入到批处理脚本svnExport.bat中;其中M表示修改、A表示添加、D表示删除;

(2)svnExport.bat中的内容是如下导出命令的集合(以单个文件为单位):

进一步的,在上述实施例的基础上,依次执行svnExport.bat、compare.bat、checkStyle.bat、copyCodeToSM.bat,执行完毕,每天每人变更前后的文件会导出到本地目录,代码变动量比较结果txt文件和代码规范检查xml文件会输出到批处理命令中设置的路径下,具体的说明如下:

(1)revision对应的文件导出到“文件导出目录\项目版本名称\code\提交日期\new\责任人\文件路径\文件名称”目录下;

lastrevision对应的文件导出到“文件导出目录\项目版本名称\code\提交日期\old\责任人\文件路径\文件名称”目录下;

(2)txt文件会输出到“文件导出目录\项目版本名称\code\提交日期\author\责任人\out.txt”

具体的,out.txt文件的内容格式如下:

(3)revision和lastrevision对应文件的代码规范检查结果分别输出到下面目录的文件中:

“文件导出目录\项目版本名称\code\提交日期\author\责任人\old_checkstyle_report.xml”

“文件导出目录\项目版本名称\code\提交日期\author\责任人\new_checkstyle_report.xml”

(4)SourceMonitor检查结果csv文件输出到目录“SourceMonitor工具目录\项目版本名称\report”

步骤S06:代码变更情况统计模块解析“文件导出目录\项目版本名称\code\提交日期\author\责任人”目录下的out.txt和*.xml文件,统计每人每天的代码变更情况,并将结果输出到EXCEL报表中,具体的统计信息包括:责任人、变更日期、SVN版本号、代码所属项目分支名称、文件路径、文件名称、变更类别、增加的代码行数、删除的代码行数、修改的代码行数、代码总行数、注释率、修改前代码规范检查指标值、修改后代码规范检查指标值、修改前后规范检查差值、SVN提交日志、故障单号、所属模块。最后,会对统计区间内每个开发人员的总的代码变更情况进行汇总,并将结果输出到EXCEL报表的“汇总”页中。较佳的,根据变更类别和所属模块可以统计出每个模块的故障单数及代码行数,进而得出故障泄漏率。

根据所述的实施方案,用户在执行一次统计任务时,可以将需要的参数信息配置到批处理命令中,然后一键执行即可,中途不需人工输入任何参数。具体的配置信息说明如下:

在上述实施例的基础上,在所述根据提交日期和责任人,确定比较处理脚本之前,还包括:

确定版本号区间和要统计的代码所在的版本库路径;或者

确定时间段和要统计的代码所在的版本库路径。

举例来讲,首先要在项目版本中规范化管理提交日志模板和代码注释模板,下面列出本发明实施例中用到的模板,需要说明的是,模板不限于此,可以根据实际需求进行调整,具体的,本实施例中用到的模板信息如下:

SVN提交日志模板如下:

代码注释模板如下:

图2为本发明代码变化量的统计装置一实施例的结构示意图,如图2所示,该代码变化量的统计装置,包括:确定模块21和处理模块22。其中,

确定模块21,用于根据提交日期和责任人,确定比较处理脚本,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改对应的代码行数;

处理模块22,用于根据所述比较处理脚本,获得所述责任人每天的代码变化量。

本实施例中,根据提交日期和责任人,确定比较处理脚本,所述比较处理脚本用于比较在所述提交日期的范围内,每个责任人每天的代码变化量,所述代码变化量包括代码增加、代码删除和代码修改总和的代码行数;根据所述比较处理脚本,获得所述责任人每天的代码变化量。实现了对每个责任人每天的代码变化量的统计。

在上述实施例的基础上,所述确定模块21,还用于根据提交日期和责任人,确定前后代码对比脚本,所述前后代码对比脚本用以对所述提交日期和所述责任人对应的当前代码,以及前次代码分别进行规范性检测,所述前次代码包括在获取所述当前代码之前的最近一版本的代码;

所述处理模块22,还用于根据所述前后代码对比脚本,获得当前代码检测结果和前次代码检测结果,所述当前代码检测结果包括对所述当前代码进行规范性检测的结果,所述前次代码检测结果包括对所述前次代码进行规范性检测的结果。

可选的,在上述实施例的基础上,所述确定模块21,还用于根据日期,确定规范检测脚本,所述规范检测脚本用于对所述日期对应的变更的代码进行检查;

所述处理模块22,还用于根据所述规范检测脚本,获得变更代码检测结果,所述变更代码检测结果包括对所述日期对应的变更的代码进行规范性检查的结果。

可选的,在上述实施例的基础上,所述确定模块21,还用于根据提交日期、责任人以及修改前后的版本号,确定变更代码比较脚本,所述变更代码比较脚本用于对修改前后版本号对应的代码进行比较,获得修改前后版本号对应代码的修改结果,所述修改前后版本号包括修改代码或增加代码的当前版本号,以及获取所述当前版本号之前的最近一版本的版本号;

所述处理模块22,还用于根据所述变更代码比较脚本,确定修改前后版本号对应代码的修改结果。

进一步的,在上述实施例的基础上,所述确定模块21,还用于确定版本号区间和要统计的代码所在的版本库路径;或者,确定时间段和要统计的代码所在的版本库路径。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利 要求书所界定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1