乐于分享
好东西不私藏

代码行数统计神器对决:tokei vs scc vs cloc

代码行数统计神器对决:tokei vs scc vs cloc

在日常开发中,你一定遇到过这些场景:

  • 想统计项目 代码总行数

  • 想看看 各语言占比

  • 想评估 技术债规模

  • 想分析 代码增长趋势

很多人第一反应是:

find . -name "*.java" | xargs wc -l
但这种方法有很多问题:
  • 不会识别 注释 / 空行

  • 无法识别 不同语言

  • 不支持 忽略 vendor / build 目录

  • 统计结果 不准确

于是就有了专门的 代码统计工具

今天介绍三个最常用、最强大的工具:

工具
特点
tokei
Rust编写,速度极快
scc
Go编写,功能最强
cloc
Perl编写,最经典

一、代码统计到底在统计什么

代码统计一般会区分:

类型
说明
Code
真实代码
Comment
注释
Blank
空行
Files
文件数

例如:

Language     Files   Blank   Comment   CodeGo              12     120      90      1500Java            50     800      400     9000Markdown         5      10       0      200
这些数据可以帮助我们:
  • 判断 代码复杂度

  • 评估 维护成本

  • 分析 语言比例


二、三大代码统计工具

1 cloc(最经典)

cloc = Count Lines Of Code

最古老、最稳定的统计工具。

官网:

https://github.com/AlDanial/cloc

特点:

  • 支持 200+ 语言

  • 统计 代码 / 注释 / 空行

  • 支持 diff 对比

  • 支持 JSON/CSV 输出

安装:

Mac

brew install cloc
Linux
apt install cloc

基础使用

统计当前项目:

cloc .
示例输出:
Language    files  blank  comment  code---------------------------------------Go             15    120      80    1300Java           20    300     150    5000---------------------------------------SUM:           35    420     230    6300

忽略目录

例如忽略:

  • node_modules

  • build

  • vendor

cloc . --exclude-dir=node_modules,build,vendor

统计指定语言

cloc . --include-lang=Go,Java

输出 JSON

cloc . --json

适合做 CI统计分析


对比两个版本代码

这是 cloc 的杀手功能。

cloc old_version new_version

输出:

added linesremoved linesmodified lines
可以用来:
  • 统计 PR代码规模

  • 评估 代码增长


三、tokei:最快的代码统计工具

如果说 cloc 是经典,

那么 tokei 就是速度王者

项目地址:

https://github.com/XAMPPRocky/tokei

Rust 编写,速度非常快。


安装

Mac

brew install tokei
Linux
cargo install tokei

基础使用

tokei
输出示例:
Language      Files  Lines  Code  Comments  Blanks--------------------------------------------------Rust             5   1200    900      200      100Markdown         3    200    150        0       50--------------------------------------------------Total            8   1400   1050      200      150

忽略目录

tokei --exclude node_modules,target

输出 JSON

tokei -o json

统计指定目录

tokei src

统计 Git 仓库

tokei .

默认会自动忽略:

.gitignore

四、scc:功能最强的统计工具

如果说:

  • cloc 最经典

  • tokei 最快

那么:

scc = 功能最强

项目:

https://github.com/boyter/scc

作者用 Go 写的。

支持:

  • 代码复杂度

  • 语言检测

  • Git统计

  • 多线程加速


安装

Mac

brew install scc
Linux
go install github.com/boyter/scc@latest

基础使用

scc
示例:
Language   Files  Lines  Code  Comment  Blank---------------------------------------------Go            10   1200   900      200    100Java          20   6000  4500      900    600---------------------------------------------Total         30   7200  5400     1100    700

统计复杂度

scc 独有功能:

scc --complexity
输出:
Cyclomatic Complexity
可以看到代码复杂度。

排序输出

scc --sort code
按代码行排序。

统计某种语言

scc --include-ext go,java

输出 JSON

scc --format json

五、真实工程场景

1 统计项目规模

scc .
快速了解:
  • 项目代码规模

  • 技术栈占比


2 统计 PR 代码量

cloc old new

用于:

  • Code Review

  • PR规模评估


3 CI 自动统计

GitHub Action:

tokei -o json > code_stats.json
生成:
  • 代码趋势

  • 语言比例


4 技术债分析

例如:

Comment / Code 比例
如果:
Comment < 5%
说明:

文档严重不足。


七、三大工具对比

工具
语言
速度
功能
cloc
Perl
经典
tokei
Rust
简洁
scc
Go
最快
最强

总结:

稳定首选

cloc

追求速度

tokei

工程级统计

scc

八、工程师必备组合

推荐 CLI 工具组合:

代码搜索
ripgrep
模糊查找
fzf
代码统计
scc / tokei

九、一个有趣的事实

很多工程师会用代码行数评估项目规模。但实际上:代码行数 ≠ 软件复杂度


十、结语

代码统计工具看似简单,

但却是 理解项目结构的重要工具

推荐工程师都安装:

scctokeicloc
三条命令就能快速了解任何项目。
文章推荐
ripgrep + fzf:工程师必备高效搜索系统
ripgrep:比grep更快的搜索神器
fzf:让你的命令行效率提升10倍的神器
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 代码行数统计神器对决:tokei vs scc vs cloc

猜你喜欢

  • 暂无文章