用途
code-stats 用于快速分析代码库的规模、组成与变更,无需手动计数即可获得项目概览。它结合两个命令行工具:tokei(按语言快速统计行数)和 difft(语义化、AST 感知的差异比较)。
主要能力
tokei:行数统计
可统计全部代码,输出各语言的文件数、总行数、代码行、注释行与空行。常用方式包括:
tokei:统计所有代码。tokei --compact --sort code:紧凑输出并按代码量排序。tokei --type=TypeScript,JavaScript:仅统计指定语言。tokei --exclude node_modules --exclude dist:排除指定目录。tokei --output json | jq '.Total.code':输出 JSON 以便脚本处理。
示例输出会列出各语言的文件数、Lines、Code、Comments、Blanks,并在 Total 行给出合计。
difft:语义化差异
difft old.ts new.ts:比较两个文件。difft --display=inline old.ts new.ts:使用内联模式。GIT_EXTERNAL_DIFF=difft git diff:与 git diff 配合。GIT_EXTERNAL_DIFF=difft git show HEAD~1:查看指定提交。
与传统的逐行 diff 相比,difft 是 AST 感知的:传统 diff 将移动识别为删除加新增,且对空白敏感;difft 能识别代码移动并忽略格式差异。
使用方式(快速参考)
| 任务 | 命令 |
|---|---|
| 统计全部代码 | tokei |
| 紧凑输出 | tokei --compact |
| 按代码量排序 | tokei --sort code |
| 仅统计 TypeScript | tokei -t TypeScript |
| JSON 输出 | tokei --output json |
| 排除目录 | tokei --exclude node_modules |
| 语义差异 | difft file1 file2 |
| Git 差异 | GIT_EXTERNAL_DIFF=difft git diff |
适用场景
- 快速获取代码库概览。
- 以语义方式比较代码变更。
- 理解项目组成。
- 评估重构影响。
- 跟踪代码库增长。
更多资源
需要详细模式时可加载:./references/tokei-advanced.md(过滤、输出格式、CI 集成)与 ./references/difft-advanced.md(显示模式、git 集成、语言支持)。
限制
资料未说明安装方法、支持的操作系统、对具体语言覆盖的完整列表、性能数据或收费信息,暂未提供。