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

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

Info

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
Application number
CN201310719445.0A
Other languages
English (en)
Other versions
CN103699637A (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

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

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中建立的某个代码仓库;
所述的操作日志导出模块是指从版本库中按照统计时间段、统计路径的要求导出源代码文件的操作记录的模块;
所述的单类代码行数统计模块是从操作日志中按照预先设定的代码分类要求分别对不同种类的代码按不同的提交者统计其代码提交行数的模块;
所述的代码生产率统计模块是指按照统计规则对每个研发人员的代码生产率进行统计的模块;
所述的存储模块用于把统计结果生成报表。
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 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 (14)

* 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 深圳云之家网络有限公司 一种加载组件的方法和装置
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 中国人寿保险股份有限公司 一种代码量统计方法、装置、电子设备及存储介质
CN115617635B (zh) * 2022-12-16 2023-05-23 南京易联阳光信息技术股份有限公司 支持跨代码仓库的代码统计方法、系统及设备

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
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) 一种代码生产率统计方法及其系统
US11675691B2 (en) System and method for performing automated API tests
CN101996131A (zh) 基于xml封装关键字的gui自动测试方法及自动测试平台
RU2008144137A (ru) Генерация отчетов с интегрированным контролем качества
CN102298607A (zh) 数据集成的方案合约
CN102043716A (zh) 基于业务驱动的软件自动化测试方法
CN102799690A (zh) 一种利用数据库技术校验网页输入的方法
CN110287188B (zh) 通话详单数据的特征变量生成方法及装置
US20120017143A1 (en) Electronic device and method for data management
US10701213B2 (en) Dynamically generating an aggregation routine
WO2022088632A1 (zh) 用户数据监控分析方法、装置、设备及介质
CN104267938A (zh) 一种流式计算的应用快速开发部署的方法及装置
US9213543B2 (en) Software internationalization estimation model
CN108021509A (zh) 基于程序行为网络聚合的测试用例动态排序方法
Furia et al. Applying Bayesian analysis guidelines to empirical software engineering data: The case of programming languages and code quality
CN105574032A (zh) 规则匹配运算方法及装置
CN115495082B (zh) Tlv格式数据自动转换方法及相关设备
US20150160942A1 (en) Data object with common statement series
TWI785724B (zh) 資訊倉庫創建方法、電子設備及儲存介質
CN108132802B (zh) 一种配置模型在系统开发中的应用方法
CN115687356A (zh) 实现自动化测试临床试验中数据核查的方法和系统
CN112732549B (zh) 基于聚类分析的测试程序分类方法
JP2014228889A (ja) 性能情報収集プログラム、情報処理装置及び性能情報収集方法
CN112380117A (zh) 一种软件测试基础用例的生产方法、装置和电子设备
CN112711933A (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