用途:在新增或修改 Roslyn 分析器、代码修复、源生成器、测试、依赖或包布局时使用。先检查仓库的目标框架、集中包管理、测试框架、分析器与生成器约定、诊断 ID 分配、本地化和打包方式,并保留既有约定。
主要能力与设计规则:优先使用基于 IOperation 的分析,注册最窄的 OperationKind 并检查类型化操作;仅对本质语法规则使用语法分析,且语法回调中已有 SemanticModel,不应再调用 Compilation.GetSemanticModel。每个分析器必须支持 C#,VB.NET 支持可选。分析器与代码修复提供程序须位于不同程序集,分析器项目不得引用 Roslyn Workspaces 包。回调须无状态或并发安全,调用 EnableConcurrentExecution(),并用 ConfigureGeneratedCodeAnalysis(...) 明确生成代码策略。尊重取消令牌,不得在静态状态中保留编译、操作、语法树、符号或语义模型。避免 InternalsVisibleTo,通过公共 API 和 Roslyn 测试框架测试。集中管理元数据名称,禁止用 ToDisplayString() 与字符串字面量比较来识别符号,应使用 SymbolEqualityComparer.Default.Equals,必要时用 OriginalDefinition 归一化。每个诊断 ID 都需文档化,分析器程序集版本需精确到每次提交唯一。源生成器必须实现 IIncrementalGenerator,使用 SourceWriter 保证确定性输出。
使用方式:先写出必须报告与不得报告的示例,确定诊断范围与消息参数;判断规则是否语义化,按操作、操作块、符号、编译启动、语法动作的顺序选择;在编译启动动作中用 Compilation.GetTypeByMetadataName 解析已知类型,缺失则不注册内部动作;定义稳定诊断 ID 与描述符,添加文档页并连接 HelpLinkUri;在独立代码修复程序集中实现修复;在同一测试类中添加正例、反例、边界与代码修复测试;先运行窄测试类,再运行测试项目与仓库常规构建。源生成器则定义生成 API 示例与无效输入诊断,建模独立输入,构建增量提供程序图,用 SourceWriter 渲染,并测试输出、诊断、确定性与增量缓存。
适用场景:Roslyn 分析器与代码修复开发、增量源生成器开发、诊断文档与帮助链接维护、生成器测试与增量行为验证。
限制:资料未提供具体安装命令、收费或价格信息;VB 支持需明确承诺并单独测试;不得用显示字符串替代符号身份;生成器异常会表现为编译器失败,应以诊断报告无效输入。