C# CA1062未在.Net标准2.0类库上评估

C# CA1062未在.Net标准2.0类库上评估,c#,visual-studio-2017,code-analysis,ca1062,C#,Visual Studio 2017,Code Analysis,Ca1062,我无法获得CA1062(验证公共方法的参数)进行评估 我已经创建了一个.Net标准2.0 C#类库,并根据此屏幕截图安装了Microsoft.CodeQuality.Analyzers和其他几个nuget软件包: 我还在项目的规则集中启用了CA1062,如图所示: 我创建这个类是为了测试CA1062(验证公共方法的参数)是否计算: public class Person { public String Name { get; } public Person(String na

我无法获得CA1062(验证公共方法的参数)进行评估

我已经创建了一个.Net标准2.0 C#类库,并根据此屏幕截图安装了
Microsoft.CodeQuality.Analyzers
和其他几个nuget软件包:

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

我创建这个类是为了测试CA1062(验证公共方法的参数)是否计算:

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
方法中,参数
敌方
从不检查
null
值,而是用于行
字符串enemyName=敌方.Name

假设这会触发CA1062,但不会触发

其他规则也会进行评估。例如,我创建了一个
内部
异常类:

internal class MyException : Exception 
{ 
    ... 
}
这确实触发了相关的代码分析警告(CA1064)。
但是,我无法让CA1062进行评估。

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


(我添加了这一点,以防任何开发人员发现这篇文章并仍在寻找解决方案)

起初,我认为“它是否足够聪明,可以检测到没有默认构造函数,并且
Person
的任何实例都不能在没有名称的情况下构造”,但您仍然可以调用
DeclareWarOn(null)所以这可能是分析仪的一个错误。找到解决方案了吗?这里也有同样的问题。CA1031和CA1047也是如此。但其他如CA1063、CA1716、CA1816等被正确检测到。我不明白为什么有些规则行得通,而有些则不行。不幸的是,不行。我还有很多其他CA规则没有正确计算,即使将每个规则设置为计算错误也是如此。对于带有.NET Core 2.0的CA1063,我也看到了同样的情况,尽管奇怪的是它不一致
foreach(listpram中的变量e)
计算但不计算
foreach(listpram中的变量e)。选择(x=>x)
@Jonathan请参见下面我的答案。