Skip to content
This repository was archived by the owner on Nov 15, 2025. It is now read-only.
This repository was archived by the owner on Nov 15, 2025. It is now read-only.

合并 L004 的多建议字段为单一 suggestion 以提升复用与一致性 #2

@BegoniaHe

Description

@BegoniaHe

Issue: 合并 L004 的多建议字段为单一 suggestion 以提升复用与一致性

背景

当前 [lexer.L004] 同时定义了多条建议字段:suggestion_hexsuggestion_binsuggestion_octsuggestion_expsuggestion_default,造成配置分散、国际化成本高、与其他错误项的结构不一致。
在错误呈现层,这些建议本质上都属于同一错误码 L004 的子情形,适合通过单一 suggestion 模板或运行时分派来提升复用性。

目标

  • 将多条 suggestion_* 合并为单一 suggestion,减少重复定义并统一结构。
  • 为运行时或渲染层提供明确的扩展点,以便根据检测到的数字字面量类别输出更精确的建议文案。

提案 A:内联多分支模板

在 TOML 中保留单个 suggestion 字段,并内联分类型指引,保持配置层可独立输出完整提示,无需代码分派即可工作。[1][2][3]

[lexer.L004]
code = "L004"
title = "无效的数字字面量: '{value}'"
description = """
'{value}' 不是有效的数字格式。
支持的数字格式:
  - 十进制: 123, 45.67, 1.2e10
  - 十六进制: 0xFF, 0x1A
  - 二进制: 0b1010, 0b11
  - 八进制: 0o755, 0o17
"""
suggestion = """
根据数字类型提供修复建议:
  - 十六进制: 十六进制数字后必须跟随至少一个十六进制数字 (0-9, A-F)
  - 二进制: 二进制数字后必须跟随至少一个二进制数字 (0-1)
  - 八进制: 八进制数字后必须跟随至少一个八进制数字 (0-7)
  - 科学计数法: 指数部分必须是有效的整数
  - 默认: 检查数字格式是否正确
"""
category = "lexer"

上述做法可直接替代所有 suggestion_* 字段,且在 i18n 时仅需翻译一个字段。[2][3][1]

提案 B:最小提示 + 运行时附加

配置层仅保留通用建议,具体分支由实现层根据解析到的数字类别动态拼接,从而让渲染逻辑可复用同一模式并在 UI 中按需展开细节。

[lexer.L004]
code = "L004"
title = "无效的数字字面量: '{value}'"
description = """
'{value}' 不是有效的数字格式。
支持的数字格式:
  - 十进制: 123, 45.67, 1.2e10
  - 十六进制: 0xFF, 0x1A
  - 二进制: 0b1010, 0b11
  - 八进制: 0o755, 0o17
"""
suggestion = "检查数字格式是否正确"
category = "lexer"

在错误构建处按类别追加更精准的说明,例如当类别为 hex 时拼接“十六进制数字后必须跟随至少一个十六进制数字 (0-9, A-F)”。

参考 diff

便于代码评审,这里给出从多字段到单字段的最小化 diff 参考(逻辑等价,删除多字段并引入整合模板)。[2][3][1]

 [lexer.L004]
 code = "L004"
 title = "无效的数字字面量: '{value}'"
 description = """
 '{value}' 不是有效的数字格式。
 支持的数字格式:
   - 十进制: 123, 45.67, 1.2e10
   - 十六进制: 0xFF, 0x1A
   - 二进制: 0b1010, 0b11
   - 八进制: 0o755, 0o17
 """
-suggestion_hex = "十六进制数字后必须跟随至少一个十六进制数字 (0-9, A-F)"
-suggestion_bin = "二进制数字后必须跟随至少一个二进制数字 (0-1)"
-suggestion_oct = "八进制数字后必须跟随至少一个八进制数字 (0-7)"
-suggestion_exp = "科学计数法的指数部分必须是有效的整数"
-suggestion_default = "检查数字格式是否正确"
+suggestion = """
+根据数字类型提供修复建议:
+  - 十六进制: 十六进制数字后必须跟随至少一个十六进制数字 (0-9, A-F)
+  - 二进制: 二进制数字后必须跟随至少一个二进制数字 (0-1)
+  - 八进制: 八进制数字后必须跟随至少一个八进制数字 (0-7)
+  - 科学计数法: 指数部分必须是有效的整数
+  - 默认: 检查数字格式是否正确
+"""
 category = "lexer"

验收标准

  • 删除 suggestion_* 后,所有现有用例在 UI/CLI 下仍能显示完整且可读的建议文案。
  • i18n 构建流程对单一 suggestion 字段工作正常,且翻译覆盖率统计无回退。

如需,我可以再补充一版“实现层动态拼接”的伪代码片段,展示如何在错误构建时根据具体子类型追加建议内容。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions