适配 @lint-md/core v2.1.5:executionErrors 全链路透传 + 退出码失败(阻断性)
core #185(已随 v2.1.5 发布,依赖范围 ^2.1.4 自动覆盖)把规则执行失败从隐式 console.error/原样抛出,改为结构化返回 LintMdResult.executionErrors: RuleExecutionError[]。
当前 CLI 全链路把 executionErrors 漏掉了,导致有规则执行错误时 CLI 仍 exit(0)、CI 不失败。需逐跳修复:
缺口(沿数据流)
src/utils/lint-worker.ts:11-22:lintMarkdown 返回含 executionErrors,worker 只回传 lintResult/fixedResult/fixable*,executionErrors 在此被丢弃。
src/types.ts:50 BatchLintItem 无 executionErrors 字段 —— 无处放。
src/utils/batch-lint.ts:91 keepLintItem 只按 lintResult.length 和 notAppliedFixes 保留 —— 只有 executionErrors、无任何 lint 报告的文件会被 filter 掉,错误消失。
src/lint-md.ts fix 模式只报 getUnappliedFixesWarnings 冲突警告,不报 executionErrors;lint 模式 getReportData 不输出。
- 退出码:
executionErrors 不计入 errorCount,有规则执行失败时 CLI 仍 exit(0)。
适配方案
types.ts:BatchLintItem 加 executionErrors?: RuleExecutionError[](从 @lint-md/core 导入类型)。
lint-worker.ts:回传 executionErrors: result.executionErrors。
batch-lint.ts:keepLintItem 加 || (item.executionErrors?.length ?? 0) > 0。
lint-md.ts:
- lint 模式:
getReportData 把 executionErrors 渲染成 stderr/表格行(ruleName + phase + message)。
- fix 模式:仿
getUnappliedFixesWarnings 输出 executionErrors。
- 退出码:有
executionErrors 时 exit(1)(匹配“lint 错误即 CI 失败”语义)。
- stdin 模式两处
lintMarkdown 调用后都要检查 result.executionErrors。
验证
- 造一个
fix()/selector 抛错的测试规则,断言 CLI 透传并在有错误时非 0 退出。
npm run build && npm test 全绿。
适配 @lint-md/core v2.1.5:
executionErrors全链路透传 + 退出码失败(阻断性)core #185(已随 v2.1.5 发布,依赖范围
^2.1.4自动覆盖)把规则执行失败从隐式console.error/原样抛出,改为结构化返回LintMdResult.executionErrors: RuleExecutionError[]。当前 CLI 全链路把
executionErrors漏掉了,导致有规则执行错误时 CLI 仍exit(0)、CI 不失败。需逐跳修复:缺口(沿数据流)
src/utils/lint-worker.ts:11-22:lintMarkdown返回含executionErrors,worker 只回传lintResult/fixedResult/fixable*,executionErrors在此被丢弃。src/types.ts:50BatchLintItem无executionErrors字段 —— 无处放。src/utils/batch-lint.ts:91keepLintItem只按lintResult.length和notAppliedFixes保留 —— 只有 executionErrors、无任何 lint 报告的文件会被 filter 掉,错误消失。src/lint-md.tsfix 模式只报getUnappliedFixesWarnings冲突警告,不报executionErrors;lint 模式getReportData不输出。executionErrors不计入errorCount,有规则执行失败时 CLI 仍 exit(0)。适配方案
types.ts:BatchLintItem加executionErrors?: RuleExecutionError[](从@lint-md/core导入类型)。lint-worker.ts:回传executionErrors: result.executionErrors。batch-lint.ts:keepLintItem加|| (item.executionErrors?.length ?? 0) > 0。lint-md.ts:getReportData把executionErrors渲染成 stderr/表格行(ruleName + phase + message)。getUnappliedFixesWarnings输出executionErrors。executionErrors时exit(1)(匹配“lint 错误即 CI 失败”语义)。lintMarkdown调用后都要检查result.executionErrors。验证
fix()/selector抛错的测试规则,断言 CLI 透传并在有错误时非 0 退出。npm run build && npm test全绿。