一种代码生产率统计方法及其系统的制作方法

文档序号:6525276阅读:1556来源:国知局
一种代码生产率统计方法及其系统的制作方法
【专利摘要】本发明涉及统计【技术领域】,尤其是一种代码生产率统计方法及其系统。本发明首先确定要统计的时间段和要统计的所有代码所在的路径,使用操作日志导出模块导出一个操作日志。然后设定分类条件,单类代码行数统计模块逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号;比较。代码修改的行数,并进行记录,直到该类代码统计完毕为止;重复以上步骤直至所有类型的代码统计完;完毕后,得到一个各个用户的代码行数的记录,各单类乘以其代码换算比例,统计得到各个用户总代码生产率;最后将结果生成报表。本发明能够快速地对代码生产率进行统计,节省统计时间,提高统计效率;可以IT研发人员的工作质量、效率及工作成果总结和改进。
【专利说明】一种代码生产率统计方法及其系统
【技术领域】
[0001]本发明涉及统计【技术领域】,尤其是一种代码生产率统计方法及其系统。
【背景技术】
[0002]在IT研发工作中,经常需要对开发人员的代码生产率进行统计,以便反映出员工的工作质量、效率及工作成果,进而对开发工作进行总结和改进。
[0003]传统的代码生产率统计方法是在JAVA运行环境下CheckOut工作版本库的SVN,通过cmd命令行生成LOG文件,再调用StatSVN工具进行统计,再通过index, html文件查看统计结果,最后按照不同类型的代码根据不同比例换算。该方法通过在版本库中查看统计时间段内每个源代码文件的操作日志,然后日志中找出每次提交到版本库后代码被改动的行数来统计代码生产率,具有以下弊端:
[0004]—是方法复杂,需要重复输入多条cmd命令行,容易出错;
[0005]二是统计效率低,调用工具时统计的时间不等,工作量大,耗时长;
[0006]三是手动输入转换比例,出错几率大,工作量繁复。
[0007]为了快速方便地统计代码生产率,需要一种既能有效节省统计时间、提高统计效率,又能保证统计结果准确性的代码生产率的统计方法。

【发明内容】

[0008]本发明解决的技术问题之一在于提供一种可以高效、准确统计代码的方法,解决统计步骤多、规则繁复、工作量大的问题。
[0009]本发明解决的技术问题之二在于提供一种可以高效、准确统计代码系统,解决统计步骤多、规则繁复、工作量大的问题。
[0010]本发明解决上述技术问题之一的技术方案是:
[0011]包括如下步骤:
[0012]步骤1:确定要统计的时间段和要统计的所有代码所在的路径后,使用操作日志导出模块导出一个操作日志;
[0013]步骤2:单类代码行数统计模块先设定分类条件,即文件后缀;
[0014]步骤3:单类代码行数统计模块逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号;
[0015]步骤4:单类代码行数统计模块比较当前版本号与上个版本号之间代码修改的行数,并进行记录,直到该类代码统计完毕为止;
[0016]步骤5:如果需要继续统计其他类别的代码,则返回步骤2 ;如果不需要统计,执行步骤6 ;
[0017]步骤6:在各单类代码统计完毕以后,将得到一个各个用户的代码行数的记录,代码生产率统计模块将各单类乘以其代码换算比例,然后将换算后的值相加,统计得到各个用户总代码生产率;[0018]步骤7:存储模块将代码生产率统计模块的结果生成成报表。
[0019]所述的代码换算比例是指根据规模折算关系,对各类型代码换算成C语言的行数,例如:.css、.html类型的换算比例为0.4。
[0020]本发明解决上述技术问题之二的技术方案是:
[0021]所述的系统包括版本库、操作日志导出模块、单类代码行数统计模块、代码生产率统计模块、存储模块;
[0022]所述的版本库是指版本控制工具中建立的具体某项目的版本控制库,可以是SVN、CVS或Git中建立的某个代码仓库;
[0023]所述的操作日志导出模块是指从版本库中按照要求(统计时间段、统计路径)导出源代码文件的操作记录的模块;
[0024]所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块;
[0025]所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块;
[0026]所述的存储模块用于把统计结果生成报表。
[0027]本发明通过直接选择SVN代码路径、目标文件存放路径和时间区间来统计该路径下的代码行数,并自动统计计算三次,生成三份报表;将这三份报表的内容进行比较,取相同的两份作为最终的数据,若三份均不同则重新统计。本发明将统计方法从输入cmd命令行变成直接选取代码存放路径,不仅缩短了统计时长,也简化了统计方法,使得统计效率变高;而三次统计也增加了数据的准确性。
【专利附图】

【附图说明】
[0028]下面结合附图对本发明进一步说明:
[0029]附图是本发明方法流程图。
【具体实施方式】
[0030]如附图所示,本发明先确定统计时间段和代码路径,使用操作日志导出模块导出操作日志,代码如下:
[0031 ] Il调用svn命令生成操作日志
[0032]public class GenerateLogCommand{
[0033]Il开始时间
[0034]private Date startDate;
[0035]Il结束时间
[0036]private Date endDate;
[0037]//源代码路径
[0038]private String 1gFilePath;
[0039]pub lie GenerateLogCommand (Date startDate, Date endDate, String1gFilePath){
[0040]this.startDate=startDate;[0041]this.endDate=endDate;
[0042]this.1ogFilePath=1gFilePath;
[0043]}
[0044]private String formateDate(Date date){
[0045]SimpleDateFormat dateFm=new SimpleDateFormat("yyyy-MM-dd");
[0046]return dateFm.format (date);
[0047]}
[0048]public String toStringO {
[0049]return〃svn log_r {〃+formateDate (startDate)+〃}: {^+formateDate (endDate) +-v__xml〉',",+
[0050]1gFi lePath+"\"";
[0051]}
[0052]}
[0053]public void ge nerateSVNLog() {
[0054]CdCommand cd=new CdCommand(sourceCodeDirectory);
[0055]String diskId=sourceCodeDirectory.substring(0,2);
[0056]GenerateLogCommand generatelog=new GenerateLogCommand(startDate, endDate,
[0057]sourceCodeDirectory+logFileName);
[0058]try {
[0059]System, out.println ("Generating log..,);
[0060]deletefile(sourceCodeDirectory+logFileName);
[0061]//调用svn命令生成操作日志文件
[0062]CmdHandler.executeCommand(diskId+"&"+cd.toString()+"&"+generatelog.toStringO);
[0063]LogProcessor.processDate (sourceCodeDirectory+logFiIeNamejstartDate, endDate);
[0064]System, out.println("Generate successfully!;
[0065]} catch (Exception e) {
[0066]e.printStackTrace ();
[0067]}
[0068]}
[0069]再设定代码统计模块的分类条件,根据规模折算关系的比例,.C、.cpp..h转换成C语言行数的比例为1,.java、.jsp、.js、.as、.mxml转换成C语言行数的比例为0.7,.sql、.sh、.py、.xml转换成C语言行数的比例为0.62,.css、.html转换成C语言行数的比例为0.4,定义如下:
[0070]public final static String CODE—LINE—I—SUFFIX="**/*, c;**/*? cpp;**/*.h";
[0071]public final static String CODE—LINE—0—7—SUFFIX="**/*.java;**/*?jsp;木木/木?j s;木木/木? as;木木/木? mxml”;
[0072]public final static String CODE—LINE—0—6—2—SUFFIX="**/*.sql;**/*?sh;木木/木? py;木木/木? xml”;
[0073]public final static String CODE—LINE—0—4—SUFFIX="**/*, css;**/*? html";
[0074]SVNStatCmd svnStatCmd=new SVNStatCmd(sourceCodeDirectory+logFiIeNamej
[0075]sourceCodeDirectory, statResultDirectory+dir+〃\\〃,suffixies);
[0076]再筛选日志记录,逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并
读取其版本号,代码如下:
[0077]
【权利要求】
1.一种代码生产率统计方法,其特征在于: 包括如下步骤: 步骤1:确定要统计的时间段和要统计的所有代码所在的路径后,使用操作日志导出模块导出一个操作日志; 步骤2:单类代码行数统计模块先设定分类条件,即文件后缀; 步骤3:单类代码行数统计模块逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号; 步骤4:单类代码行数统计模块比较当前版本号与上个版本号之间代码修改的行数,并进行记录,直到该类代码统计完毕为止; 步骤5:如果需要继续统计其他类别的代码,则返回步骤2 ;如果不需要统计,执行步骤6 ; 步骤6:在各单类代码统计完毕以后,将得到一个各个用户的代码行数的记录,代码生产率统计模块将各单类乘以其代码换算比例,然后将换算后的值相加,统计得到各个用户总代码生产率; 步骤7:存储模块将代码生产率统计模块的结果生成成报表。
2.根据权利要求1所述的代码生产率统计方法,其特征在于:所述的代码换算比例是指根据规模折算关系,对各类型代码换算成C语言的行数,例如:.CSS、.html类型的换算比例为0.4。
3.一种实现权利要求1所述方法的代码生产率统计系统,其特征在于:所述的系统包括版本库、操作日志导出模块、单类代码行数统计模块、代码生产率统计模块、存储模块; 所述的版本库是指版本控制工具中建立的具体某项目的版本控制库,可以是SVN、CVS或Git中建立的某个代码仓库; 所述的操作日志导出模块是指从版本库中按照要求(统计时间段、统计路径)导出源代码文件的操作记录的模块; 所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块; 所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块; 所述的存储模块用于把统计结果生成报表。
【文档编号】G06F17/30GK103699637SQ201310719445
【公开日】2014年4月2日 申请日期:2013年12月23日 优先权日:2013年12月23日
【发明者】汤碧君, 杨松, 莫展鹏, 季统凯 申请人:国云科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1