首先引用一句话:“用代码行数来衡量编程的进度,就如同用重量来衡量飞机的制造进度”这是比尔盖茨总结的一句非常经典的话”。
- 我们统计这个不是目的,只是用来寻找开发过程中的一些原因。
1、计算公式
千行代码bug率=bug数/(代码行数/1000)
2、bug率标准
CMMI级别中做出了相关的指标规定,千行代码缺陷率(bug率):
CMM1级 11.95‰
CMM2级 5.52‰
CMM3级 2.39‰
CMM4级 0.92‰
CMM5级 0.32‰
3.统计方式一,git log
git log的方式,依赖于提交记录,统计全量,统计个人,按时间段统计都能做,但有一些问题 :
- 经测试不能完全反应整体的记录,只是单纯的统计数量增加,空白行不能省略
- 在加上时间段统计后,调整时间,部分不准确,没找到问题
如果在分别统计个人的时候,git log还是比较好用
如需要可自动搜索相关git 命令,挺多的:
#统计总量
git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
#统计总量:按时间节点
git log --pretty=tformat: --since ==2021-4-1 --until=2022-01-31 --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
#统计个人:按提交人
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --since ==2021-4-1 --until=2022-01-31 --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
#统计个人:按提交人和指定文件后缀(.html|.cs|.md|.xml|.properties)
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | grep "\(.html\|.cs\|.md\|.xml\|.properties\)$" | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
4.统计方式二,cloc
使用cloc,统计总量,能分别对多种语言统计。
不依赖于提交记录,只对当前目录下的文件进行遍历统计安装和使用方式如下:
#安装,最好是全局安装,以便在其他目录也能使用
npm instal -g cloc
#进入要统计的目录
clon ./
#也能加一些其他参数,去掉指定目录不统计:--exclude-dir
clon ./ --exclude-dir
如下图所示:
查看更多完整命令可以输入:cloc --help
一些cloc比较常用的指令:
--diff <set1> <set2> - 计算set1和set2的源文件之间的代码差异。 输入可以是文件和目录的混合。
--ignore-whitespace - 在使用--diff比较文件时忽略水平空格。
--max-file-size=<MB> - 如果要跳过大于给定大小MB的文件。
--exclude-dir=<dir1>,<dir2> - 排除给定的逗号分隔目录。
--exclude-ext=<ext1>,<ext2> - 排除给定的文件扩展名。
--out=<file> - 将结果保存到<file> 。
--quiet - 禁止所有信息消息并仅显示最终报告。
3.统计方式三:使用linux命令中的wc统计
在统计总量的时候,相对还是比较麻烦和不太直观,去掉空白和注释要自行使用shell处理,但能指定后缀统计结果
#遍历当前目录及子目录下的文件统计行数
find . -name "*.cs" | xargs wc -l {}
或者
git ls-files | xargs cat | wc -l
#使用cat,grep,awk,可以尝试去掉空白和注释,还未测试
find . -name "*.cs" |xargs cat| wc -l
如所示:
4.统计方式四:使用visual code 的插件
- VS Code Counter
版权声明:本文为atzqtzq原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。