Подавить CA1062 с быстрой проверки - PullRequest
5 голосов
/ 23 ноября 2011

У меня есть свободный, расширяемый помощник проверки, например:

Assert.That(aParameter).IsNotNull();

Он расширяемый, потому что метод That на самом деле является универсальным (That ) и использует неявную типизацию для возврата универсального IAssertCondition объект.IsNotNull на самом деле является методом расширения.

В любом случае, проблема с использованием этого подхода для проверки параметров, передаваемых в метод, заключается в том, что я получаю предупреждения CA1062, инструктирующие меня проверять аргументы перед их использованием, что, конечно, яуже делаю.

Я прочитал пост Эрика Смита ( здесь ) об использовании ValidatedNotNullAttribute, чтобы сообщить FxCop, что аргумент проверяется, но я не вижу, как я могу сделать это, используя свободныйинтерфейс, который я описал.

Какие есть варианты, чтобы Code Analysis распознал, что приведенное выше утверждение удовлетворяет требованиям, и предупреждение не появится?

1 Ответ

4 голосов
/ 23 ноября 2011

Единственное место, где вы можете добавить атрибут в этом случае, это параметр метода That<T>.К сожалению, хотя это может помешать запуску CA1062, это может привести к ложным отрицаниям, так как вам нужно вызвать больше, чем просто That<T>, чтобы фактически реализовать «ненулевую» проверку.Если вы хотите использовать Code Analysis для правильной проверки валидации параметров способом, который распознает вашего помощника валидации, вам, скорее всего, придется написать собственное правило для замены CA1062.

...