Skip to content

feat: 消费 fix convergence 状态并对未完全收敛给出警告 (#182 适配) #98

Description

@luojiyin1987

适配 @lint-md/core v2.1.5:消费 fix convergence 状态(#182 增强)

core #182(已随 v2.1.5 发布)给 FixedResult 增加了 fix 收敛可观测字段:

  • convergence?: 'stable' | 'cycle' | 'max'
  • rounds?: number
  • metrics?: { rounds, wallTime, perRound }

这些字段可选且历史构造仍可用,CLI 当前只碰 fixedResult.result / notAppliedFixes,对未知字段天然兼容、不会报错。本 issue 是功能增强,不是兼容性必需。

现状

--fix 模式下 CLI 只 safeWriteFile(path, fixedResult.result)lint-md.ts:193),不对收敛质量做任何判断。若 core 因 MAX_ROUNDS 截断(convergence==='max')或检测到振荡(convergence==='cycle'),CLI 会让用户误以为“已完全修复”。

适配方案(建议)

  • convergence==='max' / 'cycle':stderr 警告(仿 getUnappliedFixesWarnings),提示“fix 未完全收敛”,默认不 exit(1)(属质量警告,非硬错误)。
  • 可选 --fail-on-incomplete-fix 开关:把上述情况升级为 exit(1)
  • rounds / metrics:仅在 --dev 下日志输出,便于诊断收敛轮数/耗时。

验证

  • 造一个会触发 cycle / max 的测试用例(如自替换规则振荡),断言 CLI 输出收敛警告。
  • 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