2011-11-23 12 views
5

mam biegle rozsuwane pomocnik walidacja jak:zwalczaniu CA1062 z płynną walidacji

Assert.That(aParameter).IsNotNull(); 

Jest rozszerzalny, ponieważ Metoda ta jest rzeczywiście generycznych (To <T>) i wykorzystuje niejawny wpisywanie powrotu rodzajowe IAssertCondition Obiekt <T>. IsNotNull jest w rzeczywistości metodą rozszerzenia.

W każdym razie, problemem przy użyciu tego podejścia do sprawdzania poprawności parametrów przekazywanych do metody jest to, że otrzymuję ostrzeżenia CA1062 nakazujące mi zatwierdzić argumenty przed ich użyciem, które oczywiście już robię.

Przeczytałem post Eric Smith (here) o użyciu ValidatedNotNullAttribute do poinformowania FxCop, że argument jest sprawdzany, ale nie widzę, jak mogę to zrobić za pomocą płynnego interfejsu, który opisałem.

Jakie są moje opcje, aby analiza kodu rozpoznała, że ​​powyższe stwierdzenie spełnia wymagania i ostrzeżenie nie pojawi się?

Odpowiedz

4

Jedynym miejscem, w którym można dodać atrybut w tym przypadku, jest parametr metody That<T>. Niestety, chociaż uniemożliwiłoby to wystrzelenie CA1062, może to prowadzić do fałszywych negatywów, ponieważ trzeba zadzwonić po więcej niż That<T>, aby faktycznie zaimplementować weryfikację "nie zerową". Jeśli chcesz użyć Analizy kodu, aby prawidłowo sprawdzić walidację parametrów w sposób, który rozpoznaje pomocnika walidacyjnego, będziesz musiał napisać własną regułę, aby zastąpić CA1062.

+0

Czy możesz wskazać mi jakieś zasoby wyjaśniające, jak napisać własną regułę, aby zobaczyć, co się dzieje? Dzięki! – SonOfPirate

+0

Nie ma oficjalnych reguł tworzenia SDK. Najbardziej kompletnym zasobem jest http://binarycoder.net/fxcop/index.html. –

+0

Dobrze, dam ci przeczytać. – SonOfPirate

Powiązane problemy