Tokei 代码统计¶
为什么要学 Tokei¶
Tokei 是一个快速的代码统计工具,用 Rust 编写,能够按语言统计代码行数、注释行数和空白行数。它支持 200+ 种编程语言,速度比同类工具(cloc、scc)更快。对于评估项目规模、生成报告、了解代码库组成来说,Tokei 是最简洁高效的选择。
核心概念¶
| 概念 | 白话解释 | 用途 |
|---|---|---|
| Lines of Code | 代码行 | 实际代码行数(不含注释和空行) |
| Comments | 注释行 | 代码注释的行数 |
| Blanks | 空行 | 空白行数 |
| Languages | 语言 | 按编程语言分类统计 |
| Files | 文件 | 每种语言的文件数 |
安装配置¶
# macOS
brew install tokei
# Cargo
cargo install tokei
# Ubuntu (snap)
snap install tokei
# 无需配置,开箱即用
快速上手¶
# 统计当前目录
tokei
# 统计特定目录
tokei /path/to/project
# 输出示例:
# ===============================================================================
# Language Files Lines Code Comments Blanks
# ===============================================================================
# Python 45 8234 6120 987 1127
# JavaScript 23 4567 3456 456 655
# Markdown 12 890 0 890 0
# TOML 3 156 120 15 21
# ===============================================================================
# Total 83 13847 9696 2348 1803
# ===============================================================================
常用选项¶
# 排除目录
tokei --exclude node_modules --exclude .venv
# 按文件显示
tokei --files
# 排序方式
tokei --sort code # 按代码行排序
tokei --sort files # 按文件数排序
tokei --sort lines # 按总行数排序
# 输出格式
tokei --output json # JSON 格式(便于程序处理)
tokei --output yaml # YAML 格式
# 只统计特定语言
tokei --type Python,Rust,Go
# 统计多个目录
tokei src/ tests/ lib/
# 隐藏语言(少于 N 行的不显示)
tokei --hidden 10
进阶用法¶
JSON 输出用于分析¶
# 导出 JSON 供脚本处理
tokei --output json > stats.json
# 用 jq 提取 Python 统计
tokei --output json | jq '.Python'
# 自定义报告脚本
tokei --output json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for lang, info in sorted(data.items(), key=lambda x: x[1].get('code', 0), reverse=True):
if isinstance(info, dict) and 'code' in info:
print(f'{lang}: {info[\"code\"]:,} lines')
"
与 CI/CD 集成¶
# GitHub Actions
- name: Code Stats
run: |
cargo install tokei
tokei --output json > code-stats.json
echo "## Code Statistics" >> $GITHUB_STEP_SUMMARY
tokei >> $GITHUB_STEP_SUMMARY
与 scc 对比¶
常见问题¶
Q: 如何排除生成的代码?¶
Q: 支持哪些语言?¶
200+ 种语言,运行 tokei --languages 查看完整列表。
Q: 统计结果不准确?¶
检查是否有非标准文件扩展名。可以通过 .tokeignore 文件排除不需要统计的路径(格式同 .gitignore)。
参考资源¶
- GitHub:https://github.com/XAMPPRocky/tokei
- 支持的语言列表:https://github.com/XAMPPRocky/tokei#supported-languages
- 替代工具:scc (https://github.com/boyter/scc)、cloc