2009-03-27 16 views
9

¿Alguien tiene alguna experiencia en la introducción de FxCop en el código heredado? Nos gustaría que fallara nuestra compilación si alguien introduce código que viola las reglas. Pero por el momento, esto es imposible, ya que el código heredado tiene más de 9000 violaciones.¿Cómo comienzas con FxCop en el código heredado?

La única forma de suprimir los errores que conozco es a través del atributo SuppressMessage, pero que solo funciona en métodos, y GeneratedCodeAttribute. Este último podría usarse para clases y espacios de nombres (si no recuerdo mal), pero no debería usarse para código no generado (ver here).

En este momento, nos tomamos un tiempo cada día para eliminar las infracciones, pero las nuevas se siguen presentando, porque nuestra compilación no fallará.

¿Alguna idea?

Respuesta

6

He estado en una situación similar. Comencé a usar FxCop en un proyecto existente hace algún tiempo, y tuve algunos errores al principio. Lo que hice fue desactivar todas las reglas, luego activar un grupo a la vez, resolviendo los errores a medida que avanzaba.

El Rendimiento de grupos de seguridad y son un buen punto de partida - me ayudaron a encontrar problemas que no estaba al tanto de antes. Algunas de las reglas son subjetivas y es posible que no se apliquen por completo a su proyecto, si es que lo hacen. Por ejemplo, si la internacionalización no es un problema, entonces deje ese grupo apagado. Si hay reglas específicas que no se aplican a usted, como las reglas de denominación, desactívelas.

Si administra para limpiar un conjunto de errores para una regla determinada, puede establecer la acumulación de fallar si eso reglas es violado en el futuro. Por lo tanto, no se generarán nuevos errores.

Si se trata de un proyecto de algún tamaño, simplemente vaya una regla a la vez, revise la relevancia/importancia de la regla y corrija los errores o desactive la regla si no se aplica .

2

Comience preguntándose esto: ¿Está dispuesto y puede cambiar el código heredado para cumplir con las reglas de FxCop? O para decirlo de otra manera: ¿es esta la mejor manera de pasar su tiempo?

Si está dispuesto a dedicar tiempo y esfuerzo, comience eligiendo las pocas reglas que considere más importantes para la calidad general e impleméntelas. Si esto es útil, puede agregar algunas reglas, corregir el código, etc.

En mi experiencia, no hay un enfoque de big bang para implementar las reglas de FxCop y cosas por el estilo. La única forma viable es tomar pequeños trozos a la vez.

+0

+1 Mordisco acordado, importante a la vez. –

2

Puede agregar excepciones para violaciones anteriores en un proyecto FxCop. De esta forma, no necesitará agregar ningún atributo a su código existente, y recibirá advertencias sobre todas las nuevas violaciones.

Para hacerlo, cree un proyecto en la GUI de FxCop, ejecute el análisis con sus reglas, luego en la vista de resultados seleccione la violación que desea ignorar por el momento. Haga clic con el botón derecho y elija "Excluir". Las advertencias seleccionadas se moverán a la pestaña "excluido en el proyecto". Cuando esté listo para regresar y solucionarlos, seleccione y haga clic en "marcar como activo".

Estas exclusiones se almacenan en el archivo .FxCop.

Aún así, recomiendo introducir reglas gradualmente, para suavizar la curva de aprendizaje para todos.

+0

¿Cómo se hace esto exactamente? ¿Es esta la opción 'No disparar mensajes contra el código heredado para el cual la solución es un cambio radical'? Parece que se fue en FxCop 1.36 beta (que estamos usando). ¿Y cómo sabe FxCop qué violaciones son nuevas y cuáles son antiguas? – Peter

+0

No veo la opción de la que está hablando en mi versión de FxCop (1.36 creo). Se agregó una aclaración sobre "Excluir en proyecto" para publicar. –

0

¿Y el siguiente enfoque:

  1. Run FXCop con todas las reglas en que son relevantes para su proyecto
  2. Guardar los resultados como una línea de base
  3. Desarrollar nuevo código
  4. Run FxCop
  5. Eliminar todos los resultados de la línea base

esto dará como resultado verificaciones fxcop en su nuevo código ...

Cuestiones relacionadas