社区代码统计的3种方式 原创 精华
社区代码度量方式总结
当开发者每提交一笔Pull Request/Commit时,都会有代码修改量,包含新增了多少行代码、删除了多少行代码。这属于过程动态的统计方式。还可以统计仓库代码量,不关注提交过程,只关注存留的代码量。这属于静态的统计方式。每位开发者都会关注自己贡献的代码量,此文就总结下,各个代码量统计方式。
1、git log统计每笔提交的修改量
先看下git log相关的参数说明。
git log 参数说明
–numstat
Similar to
--stat
, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two-
instead of saying0 0
.–shortstat
Output only the last line of the
--stat
format containing total number of modified files, as well as number of added and deleted lines.–stat
使用–stat参数主要可以在git log 的基础上输出文件增删改的统计数据。
执行后获得输出如下
开子进程:
在检出的代码仓目录下,执行 cmd=[‘git’, ‘log’, ‘–shortstat’, ‘–numstat’],处理输出,就可以统计出来仓库每一笔提交的代码增删修改量。
2、统计仓库代码量
使用cloc工具统计仓库代码量,cloc相关的参数如下,其中force-lang-def指定支持的编程语言定义,by-file-by-lang 指定按编程语言按文件分别输出。
在代码仓下,开子进程:
执行
即可以得到代码仓的每个程序的文件的代码量详情,包含blank空行、comment注释行、code代码行等,通常取其加和,都计算为代码量。输出示例内容如下:
3、统计代码仓贡献者的代码量
在上一章节,可以统计代码仓的代码量,有时候还想知道每一个开发者在这个代码仓中贡献了多少代码量,甚至还可以根据邮箱后缀,还知道每一家单位贡献的代码量。
对于上一章节cloc统计的每一个源代码文件,可以对这些文件执行git blame命令:
- 遍历cloc统计文件列表,执行git blame -e,获取贡献者及其贡献的代码量:
示例输出如下,可以看出这个文件,每一行最后是谁贡献的。如果一行文件,属于A新增的,但是B修改后,那最终显示这一行属于B贡献的,最后一次修改者最终贡献了这一行代码。
小结
本文介绍了代码量统计的各种方式。统计每一笔提交的增删改修改量,偏重统计过程中的贡献,批量增删时,容易产生巨量的代码量。cloc可以看出代码仓的最新最终规模,过程中的批量增删,会对冲。而git blame统计会看重每一位贡献者的代码量。因为时间关系,仓促写作,或能力限制,若有失误之处,请各位读者多多指正。遗漏之处,欢迎补充。感谢阅读,有什么问题,请留言。
通过统计存留的代码可以比较客观的看自己对开源做出的贡献。
666