gate: 占位符检测忽略代码围栏与反引号内文本——接口枚举值本身可能叫 TODO(团期芯片聚合态,#7204)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7Xpgcv9nncadAXQtWhg4P
这个提交包含在:
API Changelog Bot
2026-09-06 20:33:05 +08:00
共同撰写人 Claude Fable 5.1
父节点 e1b80226fc
当前提交 7f634e509d
+3 -1
查看文件
@@ -411,7 +411,9 @@ export function validateV2Document(file, text, { requireV2 = false } = {}) {
errors.push(ruleError('E_TYPE_MISMATCH', file, `change_type=${metadata.change_type} 与文件名=${filenameType} 不一致`)); errors.push(ruleError('E_TYPE_MISMATCH', file, `change_type=${metadata.change_type} 与文件名=${filenameType} 不一致`));
} }
// 单花括号是 REST 路径参数惯例({orderId}),只拦真正的模板残留:双花括号、TODO、待补充 // 单花括号是 REST 路径参数惯例({orderId}),只拦真正的模板残留:双花括号、TODO、待补充
if (/\{\{[^{}\n]+\}\}|\bTODO\b|待补充/i.test(body)) { // 代码围栏与反引号内文本不参与占位符检测:接口枚举值本身可能就叫 TODO(团期芯片聚合态 TODO/DOING/DONE,#7204),契约必须能原样写枚举值。
const proseBody = body.replace(/```[\s\S]*?```/g, '').replace(/`[^`\n]*`/g, '');
if (/\{\{[^{}\n]+\}\}|\bTODO\b|待补充/i.test(proseBody)) {
errors.push(ruleError('E_PLACEHOLDER', file, '正文仍有 TODO、待补充或模板占位符')); errors.push(ruleError('E_PLACEHOLDER', file, '正文仍有 TODO、待补充或模板占位符'));
} }
// 接口类条目必须逐项遵循根模板,保证前端不依赖 Swagger 或口头补充也能联调。 // 接口类条目必须逐项遵循根模板,保证前端不依赖 Swagger 或口头补充也能联调。