如何为方法的所有参数提供修复(Roslyn - FixProvider)

How to provide fix for all parameters of the method (Roslyn - FixProvider)

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

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

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

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

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

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

进行多次修复的正确方法是什么?诊断的 key/id 应该是一样的吗?还是应该直接注册诊断来抱怨所有的参数。

我找到了很好的解决方案:

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

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