19

En un proyecto en el que estoy trabajando FxCop me muestra muchos errores (y me refiero a más de 400) en los métodos InitializeComponent() generados por el diseñador de Windows Forms. La mayoría de esos errores son solo la asignación de la propiedad Text de las etiquetas.Excluyendo la regla de análisis de código en la fuente

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 copia 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 este mensaje?

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

Respuesta

18

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

+2

que tenían una solución con varios proyectos. El CODE_ANALYSIS se debe agregar para cada proyecto. – Diizzy

2

Los mensajes de supresión de nivel de módulo deben pegarse en el mismo archivo que el código que provoca el error FxCop antes de la declaración del espacio de nombres o en assemblyinfo.cs. Además, deberá tener CODE_ANALYSIS definido como un símbolo del compilador condicional (Proyecto> Propiedades> Construir). Una vez que esté en su lugar, hacer una reconstrucción completa del proyecto y la próxima vez que ejecute FxCop el error debe ser trasladado a la pestaña "Excluidos en la Fuente".

Además, un pequeño consejo, pero si se trata de una gran cantidad de exclusiones FxCop podría ser útil envolver una región alrededor de ellos para que pueda sacarlos del camino.

4

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

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

El otro problema con su atributo SuppressMessage es que está anotando un "Objetivo" de un nombre de método específico (en este caso, WindowsClient.MainForm.InitializeComponent(): System.Void) y enumerando un "Alcance" específico. Es posible que desee intentar eliminar estos; de lo contrario, debería agregar este SuppressMessage a cada instancia del método.

También debe actualizar al RTM version de FxCop 1.36, la versión beta no detectará automáticamente la versión más reciente.

Cuestiones relacionadas