我试图在我们的代码库中可视化一些代码气味。基本上这就是我想展示的:
按提交次数排在前 20 位的文件。可以使用以下命令找到:
$ git log --pretty=format: --name-only | sort | uniq -l | sort -rg | head -20
添加行的前 20 个文件。不知道如何得到这个,我也想省略这个计数中的第一次提交,因为显示我们从 SVN 移动时添加的行数没有多大意义。
按已删除行排列的前 20 个文件。不知道如何得到这个。
按更改(包括添加和删除)行排列的前 20 个文件。不知道如何得到这个。
我会将这些计数与每个文件中的代码行数保持一致。
我可以使用此命令获得添加和删除的行:
$ git log --numstat --pretty --oneline <filename> | awk 'N F==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
但是添加的行是倾斜的,因为我不能省略第一次提交。此外,我希望它分析整个代码库,而不仅仅是一个文件。
我计划可视化的是我的一个怀疑,即我们拥有的最大文件也将是我们更改最多的文件,因此它们是重构的主要候选者。我对谁做了什么更改或谁删除或添加了大多数行不感兴趣。我只是想对一些决策者提出一个痛苦的观点;-)
这是受到 QCon 的 Michael Feathers 的启发,他正是谈到了这一点。
谁能帮我处理剩下的部分?