I can believe fly.

Thursday, June 13, 2019

statsvn统计分析报告


介绍

statsvn工具是针对SVN日志信息进行代码统计,它将以一组表格与图表的静态html显示代码行数、开发者的代码行数、开发者活跃程度、开发者提交日志信息、文件(目录)大小等数据。本文主要针对利用它统计指定单版本或指定版本范围获取开发者代码行数出现的差异进行分析。

逻辑

  1. SVN操作动作:A(add) , R(replacing) , D(delete) , M(modified)
  2. 统计结果状态:new, del, changed
  • new:一种是取本地文件的行数;一种是diff的结果。
  • changed:行数则是diff的结果。
  • del:不算行数。一种是当前版本的删除文件。另外,如果当前版本删除之后,某版本删除了其文件夹,则其删除的文件算在后版本。
  1. 两者关系:
  • A->new:Add操作的文件,则状态会被置于new。
  • R-> new:单独指定一个SVN修订版时,文件如果为Replacing操作,则状态会被置于new。
  • R-> changed:指定多个修订版本范围,如果当前版本的文件为R,前一个修订版的文件状态为M,M,M,...R,R ,则统计结果的状态会置于changed。
  • D->del:所有删除操作都会被置于del。
  • M->new:如果M操作的文件被置于new,且行数为0,则说明本地代码所对应的文件不存在,中间有删除操作。
  • M->changed:modified操作的文件,则状态会被置于changed。

现象

以下几中现象,会对数据统计产生影响:
  1. 指定单版本统计:文件被新增,则有计算行数; 指定版本范围统计:当前版本被新增的文件,下一个版本被删除,则行数不在统计范围内。
  2. 指定单版本统计: 当前版本文件被修改,置于change,无变化行数; 指定版本范围统计:当前版本文件被修改,下个版本被删除。当前版本有计算行数。(缓存)
  3. 日志显示文件状态为R,则单版本(NEW +N),版本范围(changed)无行数。比如:1-100,修改状态为(M,M,M,...R,R ) ,统计单版本99时为new(有数字),整个版本范围时为changed。解释:R在单个版本的时候会被认为是new……版本范围中(非第一个版本)的时候被认为是changed……

No comments: