我正在研究由几个技术水平差异很大的人编写的程序.那里的文件从未改变过(可能永远不会,因为我们害怕触摸它们)和其他不断变化的文件.
我想知道,是否有任何工具可以查看整个仓库历史(git)并对给定文件的更改频率进行分析?还是打包?还是项目?
值得认识的是(例如)我们花了25%的时间在一组软件包上工作,与"正常工作"的代码相比,这将是指示性或代码的脆弱性.
我建议使用类似的命令
git log --follow -p file
Run Code Online (Sandbox Code Playgroud)
这将为您提供历史记录中对该文件进行的所有更改(包括重命名)。如果要获取更改文件的提交次数,则可以在基于UNIX的OS上执行以下操作:
git log --follow --format=oneline Gemfile | wc -l
Run Code Online (Sandbox Code Playgroud)
然后,您可以创建一个bash脚本,以将此名称应用到多个文件(名称除外)。
希望能有所帮助!
我写了一些东西,用于成功地可视化这些信息.
https://github.com/bcarlso/defect-density-heatmap
看看项目,您可以看到自述文件中的输出结果.
您可以通过首先从Git获取每个提交中已更改的文件列表来执行您所需的操作.
~ $ git log --pretty="format:" --name-only | grep -v ^$ > file-changes.txt
~ $ for i in `cat file-changes.txt | cut -d"." -f1,2 | uniq`; do num=`cat file-changes.txt | grep $i | wc -l`; if (( $num > 1 )); then echo $num,0,$i; fi; done | heatmap > results.html
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个带有文件的标签云,这些文件会更多地显示出来.