HashQL诊断写作Skill writing-hashql-diagnostics

这个技能是关于使用hashql-diagnostics库编写HashQL代码中的诊断信息,包括错误消息、警告、标签、补丁和建议,以提高代码质量和可维护性。关键词包括HashQL、诊断、错误消息、代码提示、Rust、编译错误、代码改进。

测试 0 次安装 0 次浏览 更新于 3/11/2026

名称: 编写HashQL诊断 描述: 使用hashql-diagnostics crate编写HashQL诊断模式。当创建错误消息、警告、标签、消息、严重级别、补丁、建议或提高HashQL代码中诊断质量时使用。 许可证: AGPL-3.0 元数据: 触发器: 类型: 领域 强制执行: 建议 优先级: 高 关键词: - 诊断 - hashql-diagnostics - 标签 - 消息 - 严重性 - 补丁 - 建议 意图模式: - “\b(创建|编写|添加|改进)\b.?\b诊断\b" - "\b(错误|警告)\b.?\b消息\b”

HashQL诊断写作

提供使用hashql-diagnostics crate编写高质量诊断的HASH特定模式,确保消息有帮助、可操作并遵循一致的风格约定。

核心原则

诊断应该有帮助,不仅仅是正确:

做:

  • 以消息开头小写
  • 使用反引号表示代码元素:预期`bool`,但找到`String`
  • 使消息可操作且具体
  • 使用“无效”而非“非法”
  • 保持帮助消息为祈使句:“添加类型注释”

不做:

  • 以标点结尾(除非是多句)
  • 使用道歉语言(“抱歉”、“不幸”)
  • 写模糊消息(“出了点问题”)
  • 大写消息开头(除非是代码标识符)

快速参考

创建诊断

use hashql_diagnostics::{Diagnostic, Label, Message, Severity};

let mut diagnostic = Diagnostic::new(category, Severity::Error)
    .primary(Label::new(span, "预期`bool`,但找到`String`"));

diagnostic.add_label(Label::new(other_span, "因此预期"));
diagnostic.add_message(Message::help("尝试使用比较"));

严重性级别

严重性 何时使用
Bug 内部编译器错误
Fatal 不可恢复错误
Error 必须修复以编译
Warning 可疑代码需审查
Note 信息性上下文

消息风格

// ✅ 好
"在此作用域中找不到变量`count`"
"表达式后预期`;`"

// ❌ 坏
"错误:未找到变量。"  // 大写,标点
"抱歉,有类型不匹配"  // 道歉

添加建议

use hashql_diagnostics::{Message, Patch, Suggestions};

let suggestion = Suggestions::patch(Patch::new(span, "corrected_code"));
diagnostic.add_message(
    Message::help("修复拼写错误").with_suggestions(suggestion)
);

参考文献

  • 全面指南 - 完整消息风格指南、跨区选择、类别设计、标签使用、帮助与注释、建议质量、审查清单
  • HashQL测试技能 - 用于编译测试覆盖