用途:在 Biome 中设计或实现面向用户的诊断呈现或诊断 API 时使用,包括消息、建议、标记、详情、代码框等。以 crates/biome_diagnostics/CONTRIBUTING.md 作为权威 API 与设计指南;选择 advice 类型或 derive 形态前,先检查同一子系统的现有诊断。
主要能力:区分诊断 API 选型——lint 与 assist 规则用 RuleDiagnostic;解析器、服务、CLI、配置或基础设施边界需要独立结构化诊断时,使用派生 Diagnostic 的独立类型。完整诊断应分别回答:发现什么条件、为何重要、用户能做什么,即主消息指出条件,note 或 detail 说明后果或理由,action、diff、command 或最终 advice 给出下一步。消息与标记方面:命名实际问题而非仅语法结构,高亮最小源范围,直接在 markup 中插值,避免先用 format! 分配,主消息保持简短。Advice 选择按用户所需信息决定:note/log 用于解释或下一步,detail 或 code-frame 用于指向相关源范围,diff 或 code action 用于精确文本变更,command 用于展示要运行的命令,verbose 用于额外可选上下文。
使用方式:独立诊断按 #[derive(Diagnostic)] 处理,关注 severity、category、主消息与纯文本描述、位置路径与跨度、advice 与 verbose advice、标签如 fixable、unnecessary、deprecated、internal。类别不要手工编辑生成的注册表,应使用对应脚手架或生成器并核对条目与文档 URL。严重级别须匹配既有子系统策略,表示操作影响而非情绪强度。
验证与限制:添加能渲染该诊断的最窄测试或 fixture,检查快照中的消息、建议顺序、标记、路径和高亮范围,覆盖条件建议的每个分支;手工计算偏移时用带周边琐碎内容与多字节文本测试。lint 诊断需按 lint-rule-development 与 testing-codegen 处理规则专属 fixture。检查清单包含主消息、建议、最小正确范围、结构化标记、API 匹配、类别生成、快照覆盖。官方资料未给出具体命令、安装步骤、收费或平台信息。