2011-11-23 14 views
5

Tengo una fluidez, ayudante de validación extensible como:reprimir CA1062 con la validación de fluidez

Assert.That(aParameter).IsNotNull(); 

Es extensible porque la Ese método es en realidad genérica (Eso <T>) y utiliza tipos implícitos para devolver un IAssertCondition genérica <T> objeto. IsNotNull es en realidad un método de extensión.

De todos modos, el problema al usar este enfoque para validar los parámetros pasados ​​a un método es que recibo advertencias CA1062 que me instruyen a validar los argumentos antes de usarlos que, por supuesto, ya estoy haciendo.

leí el post de Eric Smith (here) sobre el uso de un ValidatedNotNullAttribute FxCop para informar que el argumento está siendo validada, pero no veo cómo puedo lograr esto usando la interfaz fluida que he descrito.

¿Cuáles son mis opciones para que Code Analysis reconozca que la declaración anterior cumple los requisitos y la advertencia no aparecerá?

Respuesta

4

El único lugar donde podría agregar el atributo en este caso es en el parámetro del método That<T>. Desafortunadamente, si bien eso evitaría que CA1062 se activara, podría generar falsos negativos ya que debe llamar a más que solo That<T> para implementar realmente una verificación "no nula". Si desea utilizar Code Analysis para verificar adecuadamente la validación de parámetros de manera que reconozca su helper de validación, tendrá que escribir su propia regla para reemplazar CA1062.

+0

¿Puede indicarme cualquier recurso que explique cómo escribir mi propia regla para que pueda ver lo que implica? ¡Gracias! – SonOfPirate

+0

No hay SDK de creación de reglas oficiales. El recurso más completo es http://binarycoder.net/fxcop/index.html. –

+0

Excelente, lo leeré. – SonOfPirate

Cuestiones relacionadas