应通过覆盖率工具配置路径排除规则而非测试代码中手动跳过;Jest用coveragePathIgnorePatterns支持正则,nyc用exclude支持glob,Vitest用coverage.exclude支持glob,SonarQube用sonar.exclusions单独控制。

过滤不需要统计覆盖率的文件,关键是在覆盖率收集阶段配置路径排除规则,而不是在测试代码里手动跳过或注释。主流工具都支持通过正则或 glob 模式指定忽略路径,且这些配置只影响覆盖率扫描范围,不影响测试本身运行。
Jest:用 coveragePathIgnorePatterns
在 jest.config.js 或 package.json#jest 中设置:
coveragePathIgnorePatterns: ['<rootdir>/node_modules/', '<rootdir>/dist/', '.*\.d\.ts$']- 数组中每个字符串会被自动转为 RegExp,
<rootdir>会被替换成项目根路径 - 常见添加项:
'/test-utils/'、'/mocks/'、'/e2e/'等非业务逻辑目录
nyc / Istanbul:用 exclude 配置
在 .nycrc 或 package.json#nyc 中写:
"exclude": ["node_modules/**", "dist/**", "**/*.test.js", "**/*.spec.js"]- 支持 glob 语法,
**表示任意层级子目录 - 注意不要漏掉类型声明文件:
"**/*.d.ts"也建议加入
Vitest:用 coverage.exclude
在 vitest.config.ts 的 coverage 选项中配置:
立即学习“Java免费学习笔记(深入)”;
exclude: ['node_modules', 'dist', 'tests', '**/*.test.*', '**/types/**']- 值为字符串数组,接受 glob 模式(不是正则)
- 推荐显式排除测试文件本身,避免把测试逻辑误计入被测源码覆盖率
SonarQube:从覆盖率维度单独排除
如果使用 SonarQube 做质量门禁,可在项目配置中精准控制:
- 在 sonar-project.properties 或 UI 设置中启用「从覆盖率中排除文件」
- 例如:
sonar.exclusions=src/**/legacy/*,src/polyfills.ts - 这种排除只影响覆盖率计算,不影响代码问题检测或重复率分析


















