CA1062 未在 .Net Standard 2.0 class 库上进行评估

CA1062 not evaluating on .Net Standard 2.0 class library

我无法获取 CA1062(验证 public 方法的参数)进行评估。

我已经创建了一个 .Net Standard 2.0 C# class 库并安装了 Microsoft.CodeQuality.Analyzers 和其他几个 nuget 包,按照这个截图:

我还在项目的规则集中启用了 CA1062,如图所示:

我创建了这个 class 来测试 CA1062(验证 public 方法的参数)是否评估:

public class Person
{
    public String Name { get; }
    public Person(String name)
    {
        this.Name = name;
    }
    public void DeclareWarOn(Person enemy)
    {
        String enemyName = enemy.Name;
        Console.WriteLine($"{this.Name} declared war on {enemyName}");
    }
}

DeclareWarOn 方法中,参数 enemy 从不检查 null 值,但在行 String enemyName = enemy.Name;

中使用

本应触发 CA1062,但并未触发。

其他规则会评估。例如,我创建了一个 internal Exception class 这样的:

internal class MyException : Exception 
{ 
    ... 
}

而这确实触发了相关的代码分析警告(CA1064)。 但是我无法让 CA1062 进行评估。

我最近删除了所有分析器并在此项目上安装了更高版本的 FxCop 包,它解决了问题。

(我添加了这个以防任何开发人员发现这个 post 并且仍在寻找解决方案)