【问题标题】:How to provide fix for all parameters of the method (Roslyn - FixProvider)如何为方法的所有参数提供修复 (Roslyn - FixProvider)
【发布时间】:2020-01-03 14:32:20
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 您可以为同一个诊断注册多个修复程序。
  • @PauloMorgado 非常感谢,我认为这也会有所帮助,但在我的情况下,额外的诊断就足够了。我最初认为批处理修复程序与它有关。
  • 你可以同时拥有。分析器报告的多个诊断和/或每个诊断的多个修复。

标签: roslyn roslyn-code-analysis codefixprovider


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2019-04-04
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    相关资源
    最近更新 更多