vs code counter 的 exclude 配置需手动设置,否则会错误包含锁文件、构建产物等;推荐在 settings.json 中配置通配符排除规则,并右键项目根目录运行 project statistics;codemetrics 仅提供函数级指标,不统计总行数;真实日增量应使用 git diff 命令。

VS Code Counter 的 exclude 配置必须手动写全
它默认不自动识别 .gitignore,也不跳过锁文件或构建产物——如果你没在 settings.json 里显式配置 VSCodeCounter.exclude,统计结果会包含 yarn.lock、package-lock.json、dist/、.next/ 等,单个锁文件就可能虚高上万行。
推荐配置(直接复制进 settings.json):
{
"VSCodeCounter.exclude": [
"**/node_modules/**",
"**/.git/**",
"**/.vscode/**",
"**/dist/**",
"**/build/**",
"**/out/**",
"**/.next/**",
"**/*.lock",
"**/*.md",
"**/*.json",
"**/package.json",
"**/tsconfig.json"
]
}
-
**/*.lock比单独写yarn.lock和package-lock.json更稳妥,覆盖所有锁文件 - 排除
*.json是因为多数 JSON 不是源码(如tsconfig.json、webpack.config.json),但如果你项目里有data/*.json是业务数据,得用白名单替代黑名单 - 不建议依赖
"VSCodeCounter.usegitignore": true:它只读.gitignore顶层内容,对子目录里的.gitignore或语法错误(如空行、注释符号#后漏空格)兼容性差
Project Statistics 要右键根目录才能扫全项目
它不会自动扫描整个工作区;如果只是打开命令面板运行 Project Statistics: Show Project Stats,它只统计当前已加载的文件(比如你只打开了 src/ 里的几个文件,那 tests/ 和 scripts/ 就被漏掉了)。
正确做法:
- 在资源管理器中,右键点击你的项目最外层文件夹(即
package.json所在目录) - 选择
Project Statistics: Show Project Stats - 首次运行会后台扫描,面板可关闭,不影响计算
它的默认排除列表虽含 node_modules、.git,但自定义输出目录(如 out、.next)必须手动加到 projectStatistics.excludedFolders,否则照样计入。
CodeMetrics 不适合看总行数,但能准确定位函数级问题
它压根不提供项目汇总视图,只在状态栏显示光标所在函数的 lines of code(逻辑行)和 cyclomatic complexity。这不是缺陷,而是设计意图:它面向“正在写的这段代码是否太复杂”,不是“这个项目写了多少行”。
常见误判点:
- 光标不在函数体内(比如停在
import行或空行),状态栏显示N/A - JSX 中混写 HTML 标签时,解析器可能中断,导致复杂度算不出来
-
codemetrics.complexityThreshold设为10后,超阈值函数名会变红——但这是提示,不是报错,别误以为插件崩了
它不统计注释行或空行总数,也没法导出报告,纯编辑时轻量提示工具。
别信“每日代码量”,真实增量只能靠 Git
所有 VSCode 插件(包括 VS Code Counter、Line Count、WakaTime)都做不到准确统计“今天写了多少行”。它们要么数换行符,要么发心跳,都不感知 Git 状态。
真正可信的命令只有一个:
git diff -w --shortstat HEAD@{"yesterday"}
-
-w忽略空白符变更,避免格式化带来的干扰 - Windows 用户必须加英文双引号:
HEAD@{"yesterday"},PowerShell 会把花括号当语法解析 - 该命令统计的是工作区 + 暂存区所有未提交改动,不是“保存次数”或“编辑时长”
如果你发现某天统计出几千行,大概率是改了一个大 JSON 配置或重生成了某个模板文件——这种“行数”对评估开发量毫无意义。











