Skip to content

feat: 透传 core executionErrors 并在有规则执行错误时 exit(1) (#185 适配) #96

Description

@luojiyin1987

适配 @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 不失败。需逐跳修复:

缺口(沿数据流)

  1. src/utils/lint-worker.ts:11-22lintMarkdown 返回含 executionErrors,worker 只回传 lintResult/fixedResult/fixable*executionErrors 在此被丢弃
  2. src/types.ts:50 BatchLintItemexecutionErrors 字段 —— 无处放。
  3. src/utils/batch-lint.ts:91 keepLintItem 只按 lintResult.lengthnotAppliedFixes 保留 —— 只有 executionErrors、无任何 lint 报告的文件会被 filter 掉,错误消失
  4. src/lint-md.ts fix 模式只报 getUnappliedFixesWarnings 冲突警告,不报 executionErrors;lint 模式 getReportData 不输出。
  5. 退出码:executionErrors 不计入 errorCount有规则执行失败时 CLI 仍 exit(0)

适配方案

  • types.tsBatchLintItemexecutionErrors?: RuleExecutionError[](从 @lint-md/core 导入类型)。
  • lint-worker.ts:回传 executionErrors: result.executionErrors
  • batch-lint.tskeepLintItem|| (item.executionErrors?.length ?? 0) > 0
  • lint-md.ts
    • lint 模式:getReportDataexecutionErrors 渲染成 stderr/表格行(ruleName + phase + message)。
    • fix 模式:仿 getUnappliedFixesWarnings 输出 executionErrors
    • 退出码:有 executionErrorsexit(1)(匹配“lint 错误即 CI 失败”语义)。
    • stdin 模式两处 lintMarkdown 调用后都要检查 result.executionErrors

验证

  • 造一个 fix()/selector 抛错的测试规则,断言 CLI 透传并在有错误时非 0 退出。
  • npm run build && npm test 全绿。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions