code-statistics插件不读.gitignore,必须手动配置codeStatistics.exclude数组,仅在工作区.vscode/settings.json中生效,格式为字符串glob模式(如"/node_modules/"),files.exclude对其无效。

code-statistics 插件不读 .gitignore,必须配 codeStatistics.exclude
VSCode 的 code-statistics 插件(如 popular 的 “Code Statistics” 或 “Project Statistics”)默认不会读取 .gitignore,也不会继承 files.exclude 或 search.exclude。它只认自己专属的 codeStatistics.exclude 数组配置——漏配或写错格式,统计结果就会包含 node_modules、dist、测试文件等干扰项。
- 该配置只在工作区
.vscode/settings.json中生效(用户级设置无效),需手动添加 - 值必须是字符串数组,每项为 glob 模式,例如
"**/node_modules/**"、"**/*.test.js" - 常见错误:写成对象形式(如
{"**/dist": true})、漏掉引号、用正则语法(如^dist/) - 路径匹配基于工作区根目录,
dist/和**/dist/**效果不同:前者只匹配根下的dist/,后者递归匹配所有层级
为什么 files.exclude 对代码行数统计没用
files.exclude 只控制资源管理器是否显示文件,不影响插件底层遍历逻辑。code-statistics 是直接调用 VSCode 的文件系统 API 扫描所有 *.js、*.ts 等后缀文件,绕过 UI 层过滤。所以即使你在侧边栏看不到 node_modules,它仍会被计入总行数和文件数。
- 验证方式:打开一个被
files.exclude隐藏的node_modules/react/index.js,看插件状态栏是否显示该文件的行数 - 真正起效的只有
codeStatistics.exclude—— 它在扫描前就过滤路径,不是“隐藏后不计”,而是“根本不去读” - 若插件未提供该配置项(老版本或小众 fork),说明它不支持排除,应换用支持该字段的替代插件(如 “CodeMetrics”)
codeStatistics.exclude 的典型写法与易错点
正确配置需同时覆盖常见干扰源,且注意 glob 语义细节。以下模式经实测有效:
-
"**/node_modules/**"—— 必加,匹配所有层级的node_modules目录(结尾/**确保子目录也被跳过) -
"**/dist/**"、"**/build/**"—— 构建产物,避免把打包后代码混入源码统计 -
"**/__pycache__/**"、"**/*.pyc"—— Python 项目中必须排除编译缓存 -
"**/test/**"、"**/*.spec.js"—— 若只想统计生产代码,测试文件单独排除 - 错误示例:
"node_modules"(不带**/前缀,只匹配同名文件而非目录)、"./src"(.前缀不识别)、"**/vendor"(缺结尾斜杠,可能误匹配vendor.js)
统计结果不准?先确认插件是否已重载配置
修改 codeStatistics.exclude 后,部分版本需完全重启 VSCode 窗口(Developer: Reload Window 不够),否则旧扫描缓存仍在运行。更隐蔽的问题是:某些插件会缓存首次启动时的文件列表,不响应后续 exclude 变更。
- 重启后,打开命令面板(
Ctrl+Shift+P),执行Code Statistics: Refresh Stats(如有该命令)强制重算 - 检查插件输出面板(
View → Output → 选择 Code Statistics),看是否有Excluded 12 files by pattern类提示 - 如果仍统计了不该出现的目录,用
Ctrl+P搜索一个明确被排除的文件(如node_modules/react/index.js),再运行统计——若它出现在搜索结果里,说明search.exclude也没配,可能影响插件底层发现逻辑
exclude 也白搭——得看它有没有真正 hook 到文件遍历入口。


















