2008-12-03 6 views
7

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

Crear configuraciones separadas en los archivos de Proyecto que incluyen CODE_ANALYSIS en modo Release y luego tirarlo en la compilación final me parece una tarea indirecta evitable.

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

[vengo de una VS2008 Pro + FxCop 1,36, en lugar de VS2008 Team System]

Respuesta

2

En el gran esquema de las cosas, no creo que realmente importe. Como se trata de un atributo (metadatos efectivamente), no afecta el rendimiento del código. Una vez dicho esto, recuerde que la información en el atributo está disponible para cualquiera que use un desagregador como Reflector.

El problema al 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 se traslade con el proyecto (está registrado en el control de origen, lo que significa que debe verificar cada vez que desee ejecutar FxCop).

Si no desea los atributos SuppressMessage en su código de producción, solo necesita definir el símbolo CODE_ANALYSIS en la compilación con la que ejecuta 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 automatizado/de construcción nocturna, puede construir usando una configuración que tenga el símbolo definido y luego generar la versión de producción sin el símbolo o hacer dos compilaciones, una con el símbolo definido, ejecutar FxCop para obtener sus violaciones, y luego otra compilación sin el símbolo definido.

1

Tenemos una tonelada repartidos por el código de producción, y no me importa mucho. No afecta el rendimiento, y tener algún atributo de aspecto agresivo en una clase a menudo da la motivación para eliminarlo si es posible.

7

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 Release, por lo que no afectará el código de producción.

Normalmente, solo ejecuto FxCop en compilaciones DEBUG de mi ensamblado donde está definido CODE_ANALYSIS.

Cuestiones relacionadas