Pregunta

En un proyecto en el que estoy trabajando, FxCop me muestra muchos (y me refiero a más de 400) errores en los métodos InitializeComponent() generados por el diseñador de Windows Forms.La mayoría de esos errores son simplemente la asignación de la propiedad Texto de las etiquetas.

Me gustaría suprimir esos métodos en el código fuente, así que copié el código de supresión generado por FxCop en AssemblyInfo.cs, pero no funciona.

Este es el atributo que FxCop copió en el portapapeles.

[module: SuppressMessage("Microsoft.Globalization",
    "CA1303:DoNotPassLiteralsAsLocalizedParameters",
    Scope = "member",
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]

¿Alguien sabe el atributo correcto para suprimir estos mensajes?

PD:Estoy usando Visual Studio 2005, C#, FxCop 1.36 beta.

¿Fue útil?

Solución

Probablemente tenga el código correcto, pero también necesita agregar CODE_ANALYSIS como símbolo definido por el precompilador en las propiedades del proyecto.Creo que esos atributos SuppressMessage solo se dejan en los archivos binarios compilados si se define CODE_ANALYSIS.

Otros consejos

En FxCop 1.36 hay en realidad una opción de proyecto en la pestaña "Ortografía y análisis" que suprimirá el análisis de cualquier código generado.

Si no desea desactivar el análisis de todo el código generado, debe asegurarse de agregar un símbolo CODE_ANALYSIS a la lista de símbolos de compilación condicional (propiedades del proyecto, pestaña Generar).Sin este símbolo definido, los atributos de SupressMessage se eliminarán del código compilado para que FxCop no los vea.

El otro problema con su atributo SuppressMessage es que está enumerando un "Destino" de un nombre de método específico (en este caso WindowsClient.MainForm.InitializeComponent():System.Void) y enumerando un "Alcance" específico.Quizás quieras intentar eliminarlos;de lo contrario, deberías agregar este SuppressMessage a cada instancia del método.

También deberías actualizar a la versión RTM de FxCop 1.36, la versión beta no detectará automáticamente la versión más nueva.

Los mensajes de supresión a nivel de módulo deben pegarse en el mismo archivo que el código que genera el error FxCop antes de la declaración del espacio de nombres o en ensambladorinfo.cs.Además, necesitará tener CODE_ANALYSIS definido como símbolos del compilador condicional (Proyecto > Propiedades > Compilación).Una vez que esté implementado, realice una reconstrucción completa del proyecto y la próxima vez que ejecute FxCop, el error debería moverse a la pestaña "Excluido en la fuente".

Además, un pequeño consejo, pero si se trata de muchas exclusiones de FxCop, podría ser útil envolverlas en una región para poder eliminarlas.

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