对于大型复杂架构的产品代码,如何知道哪些是被频繁修改的?哪些不稳定或蕴含了潜在的缺陷或者需要频繁的回归测试,以保证持续交付的质量?如果能根据代码痕迹画出热力图或云图。据此就能找到那些不稳定的模块和代码,调动人员review这些代码,分析导致变动的原因,解决那些不稳定因素,不管是耦合问题,还是抽象层次问题,那么代码的质量会直线上升,程序员工作量就会直线下降。
Git Log加命令行管道
git log命令的结果中包含了所有的提交信息,可以通过参数只筛选出文件名,然后先按照文件名进行排序(sort),然后用(uniq)命令来统计每个文件名出现的次数,然后再按次数排序(sort),最后是(head)命令来找出提交次数最多的10个,即是那些被频繁修改的代码文件。
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
管道命令可以任意拼接,比如只想从所有C#代码里面来扫描,就再加一个grep管道来过滤即可:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20
Git Effort
如果你在安装GIT命令行时安装了附加工具包git-extras,就可以用git-effort命令来扫描, 它会列出你的仓库中所有文件及提交次数。例如,你可以用下列命令来忽略少于4次提交的文件:
git-effort --above 4