Cloc¶
简介¶
cloc 是一个统计代码行数的工具
对比¶
除了 cloc,还有类似的工具,比如 tokei。我更推荐使用后者,原因如下
- cloc 的较新版本存在严重缺陷——目录名、文件名等包含中文字符时会出错,且作者目前 没有修改意愿
- tokei 使用 Rust 实现,速度极快
- tokei 功能更全面,比如对于 markdown,tokei 能够统计 md 内嵌的代码种类、行数,但 cloc 不行
安装¶
# Windows
scoop install cloc
scoop install tokei
使用¶
cloc 的使用¶
# 统计单个文件
cloc hello.c
# 统计单个目录
cloc src
# 统计一个归档
cloc master.zip
# 统计 git 仓库特定的提交
cloc 6be804e07a5db
# 报错没有 unzip 可以使用别的解压器
cloc 6be804e07a5db --extract-with='tar zxf >FILE<'
cloc 的输出会按语言进行分类,并单独统计文件数、空行、注释行等。比如对于我的一个 web 应用,输出的结果是这样的
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
JSON 68 10 0 130917
JSX 116 605 41 3486
JavaScript 86 455 91 2699
TypeScript 50 314 11 2147
reStructuredText 12 42 0 179
Markdown 13 62 0 177
HTML 8 0 0 105
CSS 3 8 0 81
SVG 1 0 0 1
-------------------------------------------------------------------------------
SUM: 357 1496 143 139792
-------------------------------------------------------------------------------
tokei 的使用¶
# 统计单个文件
tokei README.md
# 统计单个目录
tokei docs
此外还有很多参数
# 统计隐藏文件
--hidden
# 统计忽略文件
--no-ignore
# 更改输出格式,包括 json/yaml/cbor
--output json
# 更改排序方式,包括 blanks/code/comments/lines
--sort
# 仅统计部分语言
--type=Rust,Markdown
这是在本项目根目录运行 tokei . 的输出 cloc 由于中文问题没有正确的输出
===============================================================================
Language Files Lines Code Comments Blanks
===============================================================================
JavaScript 1 12 12 0 0
Plain Text 1 6 0 6 0
TOML 1 13 10 0 3
YAML 1 129 123 0 6
-------------------------------------------------------------------------------
Markdown 50 3490 0 2255 1235
|- INI 2 19 11 7 1
|- JSON 5 78 78 0 0
|- JSX 1 13 10 2 1
|- Lisp 1 14 7 7 0
|- Makefile 1 21 20 0 1
|- Python 2 16 8 8 0
|- TeX 1 6 6 0 0
|- TOML 2 18 18 0 0
|- YAML 2 13 8 3 2
(Total) 3688 166 2282 1240
===============================================================================
Total 54 3650 145 2261 1244
===============================================================================