如果我想統計我當前的項目有多少代碼量?行數最高的代碼文件有哪些?並且排除某些目錄,怎么統計?要統計出注釋多少行,和代碼多少行?使用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