Pregunta

Me pregunto si las personas (es decir, la empresa / desarrolladores) realmente se preocupan por tener atributos [SuppressMessage] en los ensamblajes de envío.

Crear configuraciones separadas en los archivos del Proyecto que incluyen CODE_ANALYSIS en modo Release y luego quitarlo en la compilación final me parece una sobrecarga evitable.

¿Cuál será la mejor estrategia, si uno no quiere que estos permanezcan en el ensamblaje final pero aún quiere usarlos en el código? y ¿Hay alguna ventaja / desventaja de almacenarlos en los archivos del Proyecto FxCop?

[Vengo de un VS2008 Pro + FxCop 1.36, en lugar de VS2008 Team System]

¿Fue útil?

Solución

En el gran esquema de las cosas, no creo que realmente importe. Dado que este es un atributo (efectivamente metadatos), no afecta el rendimiento del código. Dicho esto, recuerde que la información en el atributo está disponible para cualquiera que use un desensamblador como Reflector.

El problema con almacenarlos en el archivo de proyecto FxCop es que debe asegurarse de que todos usen el mismo archivo de proyecto y que el archivo de proyecto siempre viaje con el proyecto (está registrado en el control de origen, lo que significa que debe verificarlo cada vez que quiera ejecutar FxCop).

Si no desea los atributos SuppressMessage en su código de producción, solo necesitaría definir el símbolo CODE_ANALYSIS en la compilación en la que está ejecutando FxCop. Esto significa definirlo en su configuración de depuración o agregar configuraciones adicionales. Los atributos solo se compilarán en el código cuando se defina el símbolo.

Desde un punto de vista de construcción automático / nocturno, puede construir usando una configuración que tiene el símbolo definido y luego construir la versión de producción sin el símbolo o hacer dos compilaciones: una con el símbolo definido, ejecute FxCop para obtener sus violaciones, y luego otra compilación sin el símbolo definido.

Otros consejos

El atributo SuppressMessage solo se agregará a su código si la definición del preprocesador CODE_ANALYSIS está presente durante una compilación. Puede verificar esto mirando la definición del atributo en Reflector.exe. Por defecto, esto no está definido en la versión, por lo que no afectará el código de producción.

Normalmente, solo ejecuto FxCop en las compilaciones DEBUG de mi ensamblado donde se define CODE_ANALYSIS.

Tenemos una tonelada dispersa alrededor del código de producción, y no nos importa particularmente. No afecta el rendimiento, y tener algún atributo de aspecto descuidado en una clase a menudo motiva a eliminarlo si es posible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top