如果我想统计我当前的项目有多少代码量?行数最高的代码文件有哪些?并且排除某些目录,怎么统计?要统计出注释多少行,和代码多少行?使用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开始_代码行数

排除某个目录分析项目

​ cloc ./ --exclude-dir=node_modules​

丈量你的代码,从cloc开始_代码行数_02

统计代码行数(排除注释)排名前10的go文件

​cloc --quiet -by-file ./ --exclude-dir=node_modules --include-lang=Go|grep ".go"|sort -rn -k 4 | head -n 10​

丈量你的代码,从cloc开始_代码行数_03

这个命令稍微解释下,首先--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的使用估计还有很多用法,功能也非常强大,只有用时再琢磨了。