CN103699637A - 一种代码生产率统计方法及其系统 - Google Patents

一种代码生产率统计方法及其系统 Download PDF

Info

Publication number
CN103699637A
CN103699637A CN201310719445.0A CN201310719445A CN103699637A CN 103699637 A CN103699637 A CN 103699637A CN 201310719445 A CN201310719445 A CN 201310719445A CN 103699637 A CN103699637 A CN 103699637A
Authority
CN
China
Prior art keywords
code
module
statistic
throughput rate
statistical
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.)
Granted
Application number
CN201310719445.0A
Other languages
English (en)
Other versions
CN103699637B (zh
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.)
G Cloud Technology Co Ltd
Original Assignee
G Cloud 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 G Cloud Technology Co Ltd filed Critical G Cloud Technology Co Ltd
Priority to CN201310719445.0A priority Critical patent/CN103699637B/zh
Publication of CN103699637A publication Critical patent/CN103699637A/zh
Application granted granted Critical
Publication of CN103699637B publication Critical patent/CN103699637B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/88Mark-up to mark-up conversion

Abstract

本发明涉及统计技术领域,尤其是一种代码生产率统计方法及其系统。本发明首先确定要统计的时间段和要统计的所有代码所在的路径,使用操作日志导出模块导出一个操作日志。然后设定分类条件,单类代码行数统计模块逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号;比较。代码修改的行数,并进行记录,直到该类代码统计完毕为止;重复以上步骤直至所有类型的代码统计完;完毕后,得到一个各个用户的代码行数的记录,各单类乘以其代码换算比例,统计得到各个用户总代码生产率;最后将结果生成报表。本发明能够快速地对代码生产率进行统计,节省统计时间,提高统计效率;可以IT研发人员的工作质量、效率及工作成果总结和改进。

Description

一种代码生产率统计方法及其系统
技术领域
本发明涉及统计技术领域,尤其是一种代码生产率统计方法及其系统。
背景技术
在IT研发工作中,经常需要对开发人员的代码生产率进行统计,以便反映出员工的工作质量、效率及工作成果,进而对开发工作进行总结和改进。
传统的代码生产率统计方法是在JAVA运行环境下CheckOut工作版本库的SVN,通过cmd命令行生成LOG文件,再调用StatSVN工具进行统计,再通过index.html文件查看统计结果,最后按照不同类型的代码根据不同比例换算。该方法通过在版本库中查看统计时间段内每个源代码文件的操作日志,然后日志中找出每次提交到版本库后代码被改动的行数来统计代码生产率,具有以下弊端:
一是方法复杂,需要重复输入多条cmd命令行,容易出错;
二是统计效率低,调用工具时统计的时间不等,工作量大,耗时长;
三是手动输入转换比例,出错几率大,工作量繁复。
为了快速方便地统计代码生产率,需要一种既能有效节省统计时间、提高统计效率,又能保证统计结果准确性的代码生产率的统计方法。
发明内容
本发明解决的技术问题之一在于提供一种可以高效、准确统计代码的方法,解决统计步骤多、规则繁复、工作量大的问题。
本发明解决的技术问题之二在于提供一种可以高效、准确统计代码系统,解决统计步骤多、规则繁复、工作量大的问题。
本发明解决上述技术问题之一的技术方案是:
包括如下步骤:
步骤1:确定要统计的时间段和要统计的所有代码所在的路径后,使用操作日志导出模块导出一个操作日志;
步骤2:单类代码行数统计模块先设定分类条件,即文件后缀;
步骤3:单类代码行数统计模块逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号;
步骤4:单类代码行数统计模块比较当前版本号与上个版本号之间代码修改的行数,并进行记录,直到该类代码统计完毕为止;
步骤5:如果需要继续统计其他类别的代码,则返回步骤2;如果不需要统计,执行步骤6;
步骤6:在各单类代码统计完毕以后,将得到一个各个用户的代码行数的记录,代码生产率统计模块将各单类乘以其代码换算比例,然后将换算后的值相加,统计得到各个用户总代码生产率;
步骤7:存储模块将代码生产率统计模块的结果生成成报表。
所述的代码换算比例是指根据规模折算关系,对各类型代码换算成C语言的行数,例如:.css、.html类型的换算比例为0.4。
本发明解决上述技术问题之二的技术方案是:
所述的系统包括版本库、操作日志导出模块、单类代码行数统计模块、代码生产率统计模块、存储模块;
所述的版本库是指版本控制工具中建立的具体某项目的版本控制库,可以是SVN、CVS或Git中建立的某个代码仓库;
所述的操作日志导出模块是指从版本库中按照要求(统计时间段、统计路径)导出源代码文件的操作记录的模块;
所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块;
所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块;
所述的存储模块用于把统计结果生成报表。
本发明通过直接选择SVN代码路径、目标文件存放路径和时间区间来统计该路径下的代码行数,并自动统计计算三次,生成三份报表;将这三份报表的内容进行比较,取相同的两份作为最终的数据,若三份均不同则重新统计。本发明将统计方法从输入cmd命令行变成直接选取代码存放路径,不仅缩短了统计时长,也简化了统计方法,使得统计效率变高;而三次统计也增加了数据的准确性。
附图说明
下面结合附图对本发明进一步说明:
附图是本发明方法流程图。
具体实施方式
如附图所示,本发明先确定统计时间段和代码路径,使用操作日志导出模块导出操作日志,代码如下:
//调用svn命令生成操作日志
public class GenerateLogCommand{
//开始时间
private Date startDate;
//结束时间
private Date endDate;
//源代码路径
private String logFilePath;
public GenerateLogCommand(Date startDate,Date endDate,String logFilePath){
this.startDate=startDate;
this.endDate=endDate;
this.logFilePath=logFilePath;
}
private String formateDate(Date date){
SimpleDateFormat dateFm=new SimpleDateFormat("yyyy-MM-dd");
return dateFm.format(date);
}
public String toString(){
return"svn log-r{"+formateDate(startDate)+"}:{"+formateDate(endDate)+"}-v--xml>\""+
logFilePath+"\"";
}
}
public void generateSVNLog(){
CdCommand cd=new CdCommand(sourceCodeDirectory);
String diskId=sourceCodeDirectory.substring(0,2);
GenerateLogCommand generatelog=new GenerateLogCommand(startDate,endDate,
sourceCodeDirectory+logFileName);
try{
System.out.println("Generating log...");
deletefile(sourceCodeDirectory+logFileName);
//调用svn命令生成操作日志文件
CmdHandler.executeCommand(diskId+"&"+cd.toString()+"&"+generatelog.toString());
LogProcessor.processDate(sourceCodeDirectory+logFileName,startDate,endDate);
System.out.println("Generate successfully!");
}catch(Exception e){
e.printStackTrace();
}
}
再设定代码统计模块的分类条件,根据规模折算关系的比例,.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,定义如下:
public final static String CODE_LINE_1_SUFFIX="**/*.c;**/*.cpp;**/*.h";
public final static String CODE_LINE_0_7_SUFFIX="**/*.java;**/*.jsp;**/*.js;**/*.as;**/*.mxml";
public final static String CODE_LINE_0_6_2_SUFFIX="**/*.sql;**/*.sh;**/*.py;**/*.xml";
public final static String CODE_LINE_0_4_SUFFIX="**/*.css;**/*.html";
SVNStatCmd svnStatCmd=new SVNStatCmd(sourceCodeDirectory+logFileName,
sourceCodeDirectory,statResultDirectory+dir+"\\",suffixies);
再筛选日志记录,逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号,代码如下:
Figure BDA0000444320880000051
Figure BDA0000444320880000061
Figure BDA0000444320880000071
代码行数统计模块比较当前版本号与上个版本号间代码修改的行数,并进行记录,代码如下:
Figure BDA0000444320880000072
代码生产率模块将各用户的代码行数记录按照规模折算关系比例进行计算并求和,得到各用户的总代码生产率,代码如下:
Figure BDA0000444320880000082
Figure BDA0000444320880000091
Figure BDA0000444320880000101
最后存储模块将代码生产率统计模块的结果生成报表,并统计三次按照时间先后生成三份报表,代码如下:
Figure BDA0000444320880000102
Figure BDA0000444320880000111
前述实现本发明方法的系统包括版本库、操作日志导出模块、单类代码行数统计模块、代码生产率统计模块、存储模块;
所述的版本库是指版本控制工具中建立的具体某项目的版本控制库,可以是SVN、CVS或Git中建立的某个代码仓库;
所述的操作日志导出模块是指从版本库中按照要求(统计时间段、统计路径)导出源代码文件的操作记录的模块;
所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块;
所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块;
所述的存储模块用于把统计结果生成报表。

Claims (3)

1.一种代码生产率统计方法,其特征在于:
包括如下步骤:
步骤1:确定要统计的时间段和要统计的所有代码所在的路径后,使用操作日志导出模块导出一个操作日志;
步骤2:单类代码行数统计模块先设定分类条件,即文件后缀;
步骤3:单类代码行数统计模块逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号;
步骤4:单类代码行数统计模块比较当前版本号与上个版本号之间代码修改的行数,并进行记录,直到该类代码统计完毕为止;
步骤5:如果需要继续统计其他类别的代码,则返回步骤2;如果不需要统计,执行步骤6;
步骤6:在各单类代码统计完毕以后,将得到一个各个用户的代码行数的记录,代码生产率统计模块将各单类乘以其代码换算比例,然后将换算后的值相加,统计得到各个用户总代码生产率;
步骤7:存储模块将代码生产率统计模块的结果生成成报表。
2.根据权利要求1所述的代码生产率统计方法,其特征在于:所述的代码换算比例是指根据规模折算关系,对各类型代码换算成C语言的行数,例如:.css、.html类型的换算比例为0.4。
3.一种实现权利要求1所述方法的代码生产率统计系统,其特征在于:所述的系统包括版本库、操作日志导出模块、单类代码行数统计模块、代码生产率统计模块、存储模块;
所述的版本库是指版本控制工具中建立的具体某项目的版本控制库,可以是SVN、CVS或Git中建立的某个代码仓库;
所述的操作日志导出模块是指从版本库中按照要求(统计时间段、统计路径)导出源代码文件的操作记录的模块;
所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块;
所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块;
所述的存储模块用于把统计结果生成报表。
CN201310719445.0A 2013-12-23 2013-12-23 一种代码生产率统计方法及其系统 Active CN103699637B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310719445.0A CN103699637B (zh) 2013-12-23 2013-12-23 一种代码生产率统计方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310719445.0A CN103699637B (zh) 2013-12-23 2013-12-23 一种代码生产率统计方法及其系统

Publications (2)

Publication Number Publication Date
CN103699637A true CN103699637A (zh) 2014-04-02
CN103699637B CN103699637B (zh) 2017-02-08

Family

ID=50361165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310719445.0A Active CN103699637B (zh) 2013-12-23 2013-12-23 一种代码生产率统计方法及其系统

Country Status (1)

Country Link
CN (1) CN103699637B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461671A (zh) * 2014-12-05 2015-03-25 闻泰通讯股份有限公司 代码修改汇报的定时管理方法及系统
CN105760184A (zh) * 2014-12-18 2016-07-13 深圳云之家网络有限公司 一种加载组件的方法和装置
WO2016188149A1 (zh) * 2015-05-22 2016-12-01 中兴通讯股份有限公司 一种代码变化量的统计方法及其装置
WO2017181631A1 (zh) * 2016-04-19 2017-10-26 北京新能源汽车股份有限公司 工程文件的容量信息处理方法及装置
CN108446135A (zh) * 2018-03-13 2018-08-24 中国银行股份有限公司 一种代码行数统计方法及装置
CN109190974A (zh) * 2018-08-30 2019-01-11 北京云族佳科技有限公司 工作量统计方法和系统
CN109597642A (zh) * 2017-09-30 2019-04-09 车伯乐(北京)信息科技有限公司 一种代码统计方法、装置、服务器、设备及可读介质
CN109783105A (zh) * 2018-12-14 2019-05-21 平安普惠企业管理有限公司 企业服务平台的编码统计方法、设备、存储介质及装置
CN109918412A (zh) * 2019-01-22 2019-06-21 新智云数据服务有限公司 数据处理方法、装置、设备和存储介质
CN110033242A (zh) * 2019-04-23 2019-07-19 软通智慧科技有限公司 工作时间确定方法、装置、设备和介质
CN110413733A (zh) * 2019-07-23 2019-11-05 上海易点时空网络有限公司 代码统计方法以及装置
CN111581915A (zh) * 2020-04-29 2020-08-25 上海庆科信息技术有限公司 一种项目任务管理方法、平台及电子设备和存储介质
CN112416417A (zh) * 2020-12-03 2021-02-26 中国人寿保险股份有限公司 一种代码量统计方法、装置、电子设备及存储介质
CN115617635A (zh) * 2022-12-16 2023-01-17 南京易联阳光信息技术股份有限公司 支持跨代码仓库的代码统计方法、系统及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1395171A (zh) * 2001-07-06 2003-02-05 华为技术有限公司 一种计算机软件程序的代码统计工具及其实现方法
WO2005050510A1 (ja) * 2003-10-23 2005-06-02 Intellectual Property Bank Corp. 企業評価装置並びに企業評価プログラム
KR101102466B1 (ko) * 2011-04-22 2012-01-05 한국과학기술정보연구원 기술 추이 시각화 장치 및 방법
CN103092761A (zh) * 2013-02-05 2013-05-08 烽火通信科技股份有限公司 基于差异信息文件识别和检查修改代码块的方法及装置
CN103246602A (zh) * 2012-02-14 2013-08-14 阿里巴巴集团控股有限公司 代码覆盖率确定方法及系统、代码覆盖检测方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1395171A (zh) * 2001-07-06 2003-02-05 华为技术有限公司 一种计算机软件程序的代码统计工具及其实现方法
WO2005050510A1 (ja) * 2003-10-23 2005-06-02 Intellectual Property Bank Corp. 企業評価装置並びに企業評価プログラム
KR101102466B1 (ko) * 2011-04-22 2012-01-05 한국과학기술정보연구원 기술 추이 시각화 장치 및 방법
CN103246602A (zh) * 2012-02-14 2013-08-14 阿里巴巴集团控股有限公司 代码覆盖率确定方法及系统、代码覆盖检测方法及系统
CN103092761A (zh) * 2013-02-05 2013-05-08 烽火通信科技股份有限公司 基于差异信息文件识别和检查修改代码块的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HEYDAYTOHEYONG: "StatSVN统计SVN中的代码量", 《博客频道-CSDN.NET》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461671A (zh) * 2014-12-05 2015-03-25 闻泰通讯股份有限公司 代码修改汇报的定时管理方法及系统
CN105760184B (zh) * 2014-12-18 2019-07-23 深圳云之家网络有限公司 一种加载组件的方法和装置
CN105760184A (zh) * 2014-12-18 2016-07-13 深圳云之家网络有限公司 一种加载组件的方法和装置
WO2016188149A1 (zh) * 2015-05-22 2016-12-01 中兴通讯股份有限公司 一种代码变化量的统计方法及其装置
CN106293662A (zh) * 2015-05-22 2017-01-04 中兴通讯股份有限公司 一种代码变化量的统计方法及其装置
WO2017181631A1 (zh) * 2016-04-19 2017-10-26 北京新能源汽车股份有限公司 工程文件的容量信息处理方法及装置
CN109597642A (zh) * 2017-09-30 2019-04-09 车伯乐(北京)信息科技有限公司 一种代码统计方法、装置、服务器、设备及可读介质
CN108446135A (zh) * 2018-03-13 2018-08-24 中国银行股份有限公司 一种代码行数统计方法及装置
CN109190974A (zh) * 2018-08-30 2019-01-11 北京云族佳科技有限公司 工作量统计方法和系统
CN109783105A (zh) * 2018-12-14 2019-05-21 平安普惠企业管理有限公司 企业服务平台的编码统计方法、设备、存储介质及装置
CN109783105B (zh) * 2018-12-14 2024-04-09 北京中发展智源人工智能科技发展有限公司 企业服务平台的编码统计方法、设备、存储介质及装置
CN109918412A (zh) * 2019-01-22 2019-06-21 新智云数据服务有限公司 数据处理方法、装置、设备和存储介质
CN110033242A (zh) * 2019-04-23 2019-07-19 软通智慧科技有限公司 工作时间确定方法、装置、设备和介质
CN110033242B (zh) * 2019-04-23 2023-11-28 软通智慧科技有限公司 工作时间确定方法、装置、设备和介质
CN110413733A (zh) * 2019-07-23 2019-11-05 上海易点时空网络有限公司 代码统计方法以及装置
CN111581915A (zh) * 2020-04-29 2020-08-25 上海庆科信息技术有限公司 一种项目任务管理方法、平台及电子设备和存储介质
CN112416417A (zh) * 2020-12-03 2021-02-26 中国人寿保险股份有限公司 一种代码量统计方法、装置、电子设备及存储介质
CN115617635A (zh) * 2022-12-16 2023-01-17 南京易联阳光信息技术股份有限公司 支持跨代码仓库的代码统计方法、系统及设备

Also Published As

Publication number Publication date
CN103699637B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN103699637A (zh) 一种代码生产率统计方法及其系统
US11216302B2 (en) Modifying task dependencies at worker nodes using precompiled libraries
US10635435B2 (en) Collection of API documentations
US9928288B2 (en) Automatic modeling of column and pivot table layout tabular data
US10379934B2 (en) System and method of providing post error analysis for instances of applications in cloud service environments on a per user basis
CN113641701B (zh) 一种数据查询方法、系统、异构加速平台及存储介质
CN110471652B (zh) 任务编排方法、编排器、设备及可读存储介质
van Hoorn et al. DynaMod project: Dynamic analysis for model-driven software modernization
JP2012113706A (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
US9292296B2 (en) Code optimization based on information of readably converted executed instruction groups represented in address file
Skinner Performance monitoring of parallel scientific applications
CN113360139A (zh) 前端框架的集成方法、装置、电子设备及存储介质
US20150339106A1 (en) Tabular format transaction editor
US10324822B1 (en) Data analytics in a software development cycle
CN115495082A (zh) Tlv格式数据自动转换方法及相关设备
JP6075204B2 (ja) 性能情報収集プログラム、情報処理装置及び性能情報収集方法
CN116051301A (zh) 一种用于税务申报的方法及系统
US11734299B2 (en) Message templatization for log analytics
CN115295109A (zh) 医疗数据溯源方法及装置、存储介质、终端设备
WO2021133448A1 (en) Edge table representation of processes
CN111667214B (zh) 基于二维码的货物信息获取方法、装置及电子设备
US8495033B2 (en) Data processing
CN109918084B (zh) 一种业务管理系统的数据映射方法
CN111782608A (zh) 文件自动生成方法、装置、电子设备及存储介质
JP2020052451A (ja) 計算機システム及び業務フローのパターン生成方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province

Patentee after: G-Cloud Technology Co., Ltd.

Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province

Patentee before: G-Cloud Technology Co., Ltd.