跳转至

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
===============================================================================