代码之家  ›  专栏  ›  技术社区  ›  William Thomas Waller

如何对方法的所有调用方禁用代码分析规则

  •  1
  • William Thomas Waller  · 技术社区  · 6 年前

    考虑到这两类:

    public class Abc
    {
       public static void Method(string propertyName) { }
    }
    
    public class Def
    {
       public int Prop { get; }
    
       public void Method2() { Abc.Method("Prop"); }
    }
    

    如前所述,Roslyn规则CA1507(use nameof)将触发 Method2 . 我不希望这样,因为该字符串用于长期自定义序列化,并且永远不会更改(如果我们决定更改 Prop 我们不会改变那个字符串)。我不想在程序集级别甚至类级别上禁用规则。还有上百个来电者 Def 所以我想要一些不需要我对呼叫者做任何事情的东西。

    是否有某种类型的[excludeParameterFromCodeAnalysis]我可以在 propertyName 要从所有或某些代码分析中排除的参数?

    以下是我希望存在的概念,或者是它的一些变体:

    public class Abc
    {
       public static void Method([SuppressMessageForCallers("CA1507")]string propertyName) { }
    }
    
    public class Def
    {
       public int Prop { get; }
    
       public void Method2() { Abc.Method("Prop"); }
    }
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Damien_The_Unbeliever    6 年前

    triggers paramName propertyName

    public class Abc
    {
       public static void Method(string propertySerializationName) { }
    }
    

    roslyn-analyzers CA1507

    parameterName

        2
  •  0
  •   Paulo Morgado    6 年前

    Abc.Method

    public class Abc
    {
       public static void Method(string propertyName) { }
    }
    
    public class Def
    {
       public int Prop { get; }
    
       public void Method2()
       {
    #pragma warning disable CA1507 - use nameof
           Abc.Method("Prop");
    #pragma warning restore CA1507 - use nameof
       }
    }