CN103699637B - 一种代码生产率统计方法及其系统 - Google Patents
一种代码生产率统计方法及其系统 Download PDFInfo
- Publication number
- CN103699637B CN103699637B CN201310719445.0A CN201310719445A CN103699637B CN 103699637 B CN103699637 B CN 103699637B CN 201310719445 A CN201310719445 A CN 201310719445A CN 103699637 B CN103699637 B CN 103699637B
- Authority
- CN
- China
- Prior art keywords
- code
- module
- statistic
- line number
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information 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/84—Mapping; Conversion
- G06F16/88—Mark-up to mark-up conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
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,StringlogFilePath){
this.startDate=startDate;
this.endDate=endDate;
this.logFilePath=logFilePath;
}
private String formateDate(Date date){
SimpleDateFonnat dateFm=new SimpleDateFormat(″yyyy-MM-dd″);
retum dateFm.format(date);
}
public String toString(){
retum″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);
再筛选日志记录,逐条读取操作日志,在日志中筛选符合条件的文件提交记录,并读取其版本号,代码如下:
代码行数统计模块比较当前版本号与上个版本号间代码修改的行数,并进行记录,代码如下:
代码生产率模块将各用户的代码行数记录按照规模折算关系比例进行计算并求和,得到各用户的总代码生产率,代码如下:
最后存储模块将代码生产率统计模块的结果生成报表,并统计三次按照时间先后生成三份报表,代码如下:
前述实现本发明方法的系统包括版本库、操作日志导出模块、单类代码行数统计模块、代码生产率统计模块、存储模块;
所述的版本库是指版本控制工具中建立的具体某项目的版本控制库,可以是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中建立的某个代码仓库;
所述的操作日志导出模块是指从版本库中按照统计时间段、统计路径的要求导出源代码文件的操作记录的模块;
所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块;
所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块;
所述的存储模块用于把统计结果生成报表。
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 CN103699637A (zh) | 2014-04-02 |
CN103699637B true 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) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461671A (zh) * | 2014-12-05 | 2015-03-25 | 闻泰通讯股份有限公司 | 代码修改汇报的定时管理方法及系统 |
CN105760184B (zh) * | 2014-12-18 | 2019-07-23 | 深圳云之家网络有限公司 | 一种加载组件的方法和装置 |
CN106293662A (zh) * | 2015-05-22 | 2017-01-04 | 中兴通讯股份有限公司 | 一种代码变化量的统计方法及其装置 |
CN106407243A (zh) * | 2016-04-19 | 2017-02-15 | 北京新能源汽车股份有限公司 | 工程文件的容量信息处理方法及装置 |
CN109597642A (zh) * | 2017-09-30 | 2019-04-09 | 车伯乐(北京)信息科技有限公司 | 一种代码统计方法、装置、服务器、设备及可读介质 |
CN108446135A (zh) * | 2018-03-13 | 2018-08-24 | 中国银行股份有限公司 | 一种代码行数统计方法及装置 |
CN109190974A (zh) * | 2018-08-30 | 2019-01-11 | 北京云族佳科技有限公司 | 工作量统计方法和系统 |
CN109783105B (zh) * | 2018-12-14 | 2024-04-09 | 北京中发展智源人工智能科技发展有限公司 | 企业服务平台的编码统计方法、设备、存储介质及装置 |
CN109918412A (zh) * | 2019-01-22 | 2019-06-21 | 新智云数据服务有限公司 | 数据处理方法、装置、设备和存储介质 |
CN110033242B (zh) * | 2019-04-23 | 2023-11-28 | 软通智慧科技有限公司 | 工作时间确定方法、装置、设备和介质 |
CN110413733B (zh) * | 2019-07-23 | 2022-05-06 | 上海易点时空网络有限公司 | 代码统计方法以及装置 |
CN111581915A (zh) * | 2020-04-29 | 2020-08-25 | 上海庆科信息技术有限公司 | 一种项目任务管理方法、平台及电子设备和存储介质 |
CN112416417A (zh) * | 2020-12-03 | 2021-02-26 | 中国人寿保险股份有限公司 | 一种代码量统计方法、装置、电子设备及存储介质 |
CN114818612A (zh) * | 2022-04-26 | 2022-07-29 | 中国农业银行股份有限公司 | 一种基于结构化数据的报表代码的处理方法及相关设备 |
CN115617635B (zh) * | 2022-12-16 | 2023-05-23 | 南京易联阳光信息技术股份有限公司 | 支持跨代码仓库的代码统计方法、系统及设备 |
Citations (5)
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 | 阿里巴巴集团控股有限公司 | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 |
-
2013
- 2013-12-23 CN CN201310719445.0A patent/CN103699637B/zh active Active
Patent Citations (5)
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)
Title |
---|
StatSVN统计SVN中的代码量;heydaytoheyong;《博客频道-CSDN.NET》;20130608;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103699637A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699637B (zh) | 一种代码生产率统计方法及其系统 | |
US20230065572A1 (en) | System and method for performing automated api tests | |
CN103337113B (zh) | 电子流水日志智能分析方法、装置及处理器 | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
RU2008144137A (ru) | Генерация отчетов с интегрированным контролем качества | |
CN104572122A (zh) | 一种软件应用数据的生成装置及方法 | |
CN104267938B (zh) | 一种流式计算的应用快速开发部署的方法及装置 | |
CN102298607A (zh) | 数据集成的方案合约 | |
CN104063519B (zh) | 基于excel的bpa电网数据解析及管理方法及系统 | |
CN102799690A (zh) | 一种利用数据库技术校验网页输入的方法 | |
CN102043716A (zh) | 基于业务驱动的软件自动化测试方法 | |
CN107844414A (zh) | 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法 | |
CN108021509B (zh) | 基于程序行为网络聚合的测试用例动态排序方法 | |
CN110287188B (zh) | 通话详单数据的特征变量生成方法及装置 | |
CN108920140A (zh) | 一种前后端统一校验方法 | |
US9213543B2 (en) | Software internationalization estimation model | |
CN105302730A (zh) | 一种检测计算模型的方法、测试服务器及业务平台 | |
US20120173519A1 (en) | Performing pre-aggregation and re-aggregation using the same query language | |
CN110287241B (zh) | 一种生成告警数据报表的方法及装置 | |
CN105573972B (zh) | 报表校验公式的生成方法及装置 | |
CN110347570A (zh) | 一种ide环境下代码自动生成工具分析方法 | |
US9335987B2 (en) | Data object with common statement series | |
CN112685456A (zh) | 一种用户访问数据的处理方法、装置及计算机系统 | |
CN115495082B (zh) | Tlv格式数据自动转换方法及相关设备 | |
CN112051987B (zh) | 业务数据处理方法、装置及设备、程序生成方法及装置 |
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 |
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. |
|
CP02 | Change in the address of a patent holder |