首页 > 解决方案 > 如何为方法的所有参数提供修复 (Roslyn - FixProvider)

问题描述

我编写了代码分析器和修复提供程序来添加验证以确保参数不为空。它适用于多种方法,但我无法一次检查所有参数。分析仪将标记所有尚未检查的参数,但一次只能对一个参数进行修复。

详细信息: 这不是不可变节点的问题,如果需要,代码会添加 using 语句。

在分析仪中,我为每个参数注册诊断。

  Diagnostic diagnostic = Diagnostic.Create(
                    Rule,
                    parameter.GetLocation(),
                    null,
                    prop.ToImmutableDictionary(),
                    parameter.Identifier.Text);

在修复提供程序中,我首先从上下文中进行诊断并为此注册代码修复。

也许我做错了什么,因此没有在修复提供程序中获得多个诊断。

进行多次修复的正确方法是什么?诊断的密钥/ID应该相同吗?或者是否应该直接注册诊断以抱怨所有参数。

标签: roslynroslyn-code-analysiscodefixprovider

解决方案


我希望找到好的解决方案:

分析仪报告每个无效参数的诊断,因此您可以为特定参数生成验证。之后,分析仪报告所有无效参数的另一次诊断并将方法标识符设置为位置。

相同的代码修复提供程序用于解决这两种类型的诊断。特定参数一(发送单个参数数据)和所有参数一(发送参数数据的集合)。


推荐阅读