如果我想统计我当前的项目有多少代码量?行数最高的代码文件有哪些?并且排除某些目录,怎么统计?要统计出注释多少行,和代码多少行?使用cloc就行。
cloc是一款使用Perl语言开发的开源代码统计工具,支持多平台使用、多语言识别。
mac上安装cloc还是用brew最为简单, brew install cloc
即可。
cloc自身项目也是开源的,github地址为:https://github.com/AlDanial/cloc 里面有使用说明。当然你也可以查看help命令。
有兴趣的同学可以看下这个开源项目,代码就完全一个文件,1万7千多行的一个perl文件!!!真是非常的极客风范。
我这里列一下几个可能用到的使用方式。
显示cloc支持的语言
cloc --show-lang
排除某个目录分析项目
cloc ./ --exclude-dir=node_modules
统计代码行数(排除注释)排名前10的go文件
cloc --quiet -by-file ./ --exclude-dir=node_modules --include-lang=Go|grep ".go"|sort -rn -k 4 | head -n 10
这个命令稍微解释下,首先--quiet是把输出结果精简化了,一些总计的结果给过滤了。然后使用-by-file 代表统计的时候按照文件统计,而不是按照默认的语言统计, --e xclude-dir 表示省略node_modules文件夹。 --include-lang 这里直接标记将Golang的文件统计出来。
上面这些cloc的命令就把./下有哪些go文件,每个文件的空格多少行,注释多少行,真正代码多少行都列出来了。然后使用grep ".go" 把一些噪音输出过滤掉,只留下“文件名\t空格行数\t注释行数\t代码行数”,后面的sort -rn -k 4 按照第四列(代码行数)倒序排列,并且 head -n 10 显示前10个文件。
cloc的使用估计还有很多用法,功能也非常强大,只有用时再琢磨了。
一个文件实现了这么多功能。为这个项目点个star~
参考:
https://juejin.cn/post/6844904015449309191