我们的解决方案中有几个代码分析违规未触发。这是一个例子:
using System;
namespace ClassLibrary1
{
public class Class1
{
private readonly int _factor = 1;
protected int Test1(object val)
{
if (val == null)
{
throw new ArgumentNullException(nameof(val));
}
return Blop(val.GetHashCode());
}
protected int Test2(object val)
{
return Blop(val.GetHashCode());
}
protected int Test3(object val)
{
if (val == null)
{
throw new ArgumentNullException(nameof(val));
}
return Blop(val.GetHashCode());
}
private int Blop(int value)
{
return value * _factor;
}
}
}
如果正在运行代码分析,则会报告:
Class1.cs(20): error CA1062: Microsoft.Design : In externally visible method 'Class1.Test2(object)', validate parameter 'val' before using it.
什么是绝对正确的。 但是如果你删除两个if / throw块中的一个或两个,代码分析没有报告任何现在的两个/三个违规行为。哪个没有意义恕我直言。
我们与CA1031(不捕获常规异常类型),CA1822(将成员标记为静态)和其他类似行为。
规则中是否存在这些错误(可能是因为有这么多错误)?或者它们只出现在大型解决方案上(我们有大约60个项目)?混合使用Roslyn和非Roslyn规则/支票会有问题吗?或者是我们使用干扰的StyleCop.Analyzers NuGet包吗?
任何想法如何解决这个或至少在哪里/谁解决这个问题将不胜感激。