1

我试图在我们的代码库中可视化一些代码气味。基本上这就是我想展示的:

  • 按提交次数排在前 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 的启发,他正是谈到了这一点。

谁能帮我处理剩下的部分?

4

1 回答 1

0

查找 first-commit-after-big-migration 的哈希值,或为其添加标签,并在您的git log命令中使用它:

$ git log --numstat --pretty --oneline 0f5d22e..HEAD -- <filename> | awk ...
于 2013-07-08T09:34:01.980 回答