跳转至

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 对比

# scc 提供更多信息(复杂度估算、成本估算)
# tokei 更快、更简洁
# 大型项目建议 tokei,需要复杂度分析时用 scc

常见问题

Q: 如何排除生成的代码?

tokei --exclude "*.generated.*" --exclude vendor/

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