如何为方法的所有参数提供修复(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 应该是一样的吗?还是应该直接注册诊断来抱怨所有的参数。
我找到了很好的解决方案:
分析器报告每个无效参数的诊断信息,因此您可以为特定参数生成验证。之后,分析器报告所有无效参数的另一个诊断并将方法标识符设置为位置。
同一代码修复提供程序用于解决两种类型的诊断。具体参数一(发送单个参数数据)和所有参数一(发送参数集合数据)。
我编写了代码分析器和修复提供程序来添加验证以确保参数不为空。它适用于多种方法,但我无法一次检查所有参数。分析器会标记所有未检查的参数,但一次只能对一个参数进行修复。
详情: 这不是不可变节点问题,如果需要,代码会添加 using 语句。
在分析器中,我为每个参数注册诊断。
Diagnostic diagnostic = Diagnostic.Create(
Rule,
parameter.GetLocation(),
null,
prop.ToImmutableDictionary(),
parameter.Identifier.Text);
在修复提供程序中,我首先从上下文中进行诊断并为此注册代码修复。
也许我做错了什么,因此没有在修复提供程序中获得多个诊断。
进行多次修复的正确方法是什么?诊断的 key/id 应该是一样的吗?还是应该直接注册诊断来抱怨所有的参数。
我找到了很好的解决方案:
分析器报告每个无效参数的诊断信息,因此您可以为特定参数生成验证。之后,分析器报告所有无效参数的另一个诊断并将方法标识符设置为位置。
同一代码修复提供程序用于解决两种类型的诊断。具体参数一(发送单个参数数据)和所有参数一(发送参数集合数据)。