tokei是目前唯一能直接给出可信结果的方案,它自动识别语言、剔除注释与空行、严格遵循.gitignore;而vscode插件如vscodecounter、project statistics默认不解析语法、不跳过生成文件且忽略.gitignore,导致统计虚高3–10倍。

tokei 是目前唯一能直接给出可信结果的方案。所有 VSCode 插件(包括 VSCodeCounter、Project Statistics)默认都不剔除注释和空行,也不真正遵守 .gitignore,统计值普遍虚高 3–10 倍。
为什么 VSCode 插件统计总行数不准
多数插件只是递归读取文件、粗暴数换行符,不解析语法,也不跳过二进制或锁文件:
-
node_modules、yarn.lock、dist/默认全量计入——单个yarn.lock就可能贡献上万行 -
.vue文件被当 HTML 处理,<script></script>里的 JS 行算进 HTML 类别,JS 行数偏低 -
.png、.jpg等二进制文件若被误配为文本(如"files.associations": {"*.png": "plaintext"}),也会被扫入 -
VSCodeCounter.useGitignore必须手动开启且重启生效,热重载无效;Project Statistics根本不读.gitignore
用 tokei 命令行工具快速得到真实代码行数
它自动识别语言、剔除注释与空行、严格遵循 .gitignore,开箱即准:
- macOS:
brew install tokei;Windows:choco install tokei;Linux:cargo install tokei - 在项目根目录执行:
tokei,输出含code(有效逻辑行)、comment、blank三列 - 想导出结构化结果供脚本处理:
tokei --output json | jq '.["TypeScript"].code' - 它会自动跳过
node_modules、.git、dist等所有.gitignore中声明的路径
在 VSCode 里一键运行 tokei 的正确配置
避免反复切终端,关键是把命令塞进 .vscode/tasks.json,且必须用 type: "shell":
- 编辑项目根目录下的
.vscode/tasks.json,填入完整任务定义(不是process类型) -
"presentation": { "panel": "shared", "clear": true }必须设置,否则旧结果堆叠干扰 - 保存后按
Ctrl+Shift+P→ 输入Tasks: Run Task→ 选count lines - 快捷键可自定义:打开键盘快捷方式(
Ctrl+K Ctrl+S),搜workbench.action.terminal.runSelectedText绑定
tokei 输出里真正该看的只有 code 列
这是剔除注释和空行后的有效逻辑行数,也是评估工程规模和维护成本的基准值。其他列(comment、blank)只是辅助参考,不要混入总量计算。
容易被忽略的是:如果你项目里有大量生成文件(比如 out/、.next/),它们虽不在 .gitignore 里,但 tokei 不会自动跳过——得手动加进 .gitignore 才生效。











