В настоящее время я использую Microsoft.CodeQuality.Analyzers 2.9.8 для анализа моего консольного проекта. net -core-3.1. В настоящее время я работаю над тем, чтобы удовлетворить анализатор, и мне было интересно.
Если у меня есть код типа
public static int DoStuff(object something)
{
var i = something.GetHashCode();
~~~~~~~~~
return i;
}
, анализатор справедливо жалуется, что something
может быть нулевым и что он не проверен , Поскольку я уверен, что никто не передает null
в функцию, которую я добавил [DisallowNull]
, вот так
public static int DoStuff([DisallowNull] object something)
{
var i = something.GetHashCode();
return i;
}
, но анализаторы все еще жалуются. Только если я добавлю реальную нулевую проверку или контракт, например
public static int DoStuff(object something)
{
Contract.Requires(something != null);
var i = something.GetHashCode();
return i;
}
, он больше не будет жаловаться.
Разве Microsoft.CodeQuality.Analyzers не распознает атрибут DisallowNull или мне нужно настроить его для этого?