用途:SonarJS 规则测试的编写与维护指南,帮助理解测试结构、修复误报和调试规则。
文件位置:规则的测试文件与规则实现同目录,如 unit.test.ts;测试夹具位于 packages/analysis/src/jsts/rules/{RULE_ID}/fixtures/。
主要能力与结构:采用 ESLint 规则测试器模式,在 describe/it(node:test)中使用 DefaultParserRuleTester,通过 valid 与 invalid 数组区分合规与非合规代码;invalid 条目可用 errors 指定预期问题数量或 ESLint 错误对象(可断言 messageId 与 suggestions),必要时通过 options 传入规则配置。
误报处理:修复误报时把用例加入 valid 数组;把 FP reproducer 从 invalid 移到 valid 时,需移除 errors 与 output/suggestions 等自动修复期望,保留 filename、options 等设置;用例从 invalid 变为 valid 应移动而非删除。
调试:可通过备份测试文件、仅保留单个用例、记录通过/失败再还原的方式隔离失败用例。
装饰器规则:当 meta.ts 含 implementation = 'decorated' 时,需在主 describe 前添加上游哨兵 describe,读取 decorator.ts、meta.ts、index.ts 确定导入与 eslintId,使用 external/ 垫片而非直接导入 eslint-plugin-* 或 eslint/use-at-your-own-risk,且不修改被装饰规则的测试。
限制:文档明确不要直接运行单元测试,由编排工具在每步后运行;rulling 集成测试位于独立的 SonarJS-Ruling 仓库。