Issue: 合并 L004 的多建议字段为单一 suggestion 以提升复用与一致性
背景
当前 [lexer.L004] 同时定义了多条建议字段:suggestion_hex、suggestion_bin、suggestion_oct、suggestion_exp、suggestion_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 字段工作正常,且翻译覆盖率统计无回退。
如需,我可以再补充一版“实现层动态拼接”的伪代码片段,展示如何在错误构建时根据具体子类型追加建议内容。
Issue: 合并 L004 的多建议字段为单一 suggestion 以提升复用与一致性
背景
当前
[lexer.L004]同时定义了多条建议字段:suggestion_hex、suggestion_bin、suggestion_oct、suggestion_exp、suggestion_default,造成配置分散、国际化成本高、与其他错误项的结构不一致。在错误呈现层,这些建议本质上都属于同一错误码 L004 的子情形,适合通过单一
suggestion模板或运行时分派来提升复用性。目标
suggestion_*合并为单一suggestion,减少重复定义并统一结构。提案 A:内联多分支模板
在 TOML 中保留单个
suggestion字段,并内联分类型指引,保持配置层可独立输出完整提示,无需代码分派即可工作。[1][2][3]上述做法可直接替代所有
suggestion_*字段,且在 i18n 时仅需翻译一个字段。[2][3][1]提案 B:最小提示 + 运行时附加
配置层仅保留通用建议,具体分支由实现层根据解析到的数字类别动态拼接,从而让渲染逻辑可复用同一模式并在 UI 中按需展开细节。
在错误构建处按类别追加更精准的说明,例如当类别为 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 下仍能显示完整且可读的建议文案。suggestion字段工作正常,且翻译覆盖率统计无回退。如需,我可以再补充一版“实现层动态拼接”的伪代码片段,展示如何在错误构建时根据具体子类型追加建议内容。