2010-02-08 26 views
5

Ejecutamos Code Analysis en todos nuestros archivos fuente. Uno de nuestros archivos fuente es un archivo generado Linq-To-SQL, que no tenemos control sobre el resultado generado. El código generado produce advertencias de análisis de código que me gustaría suprimir. ¿Hay alguna forma de que pueda suprimir las advertencias de CA en un archivo generado por código que no implique la creación de atributos y/o pragma en el código en sí (que se sobrescribirá cada vez que se genere el archivo)?Análisis de código en un archivo generado generador de código - ¿Cómo suprimir advertencias?

Respuesta

5

¿Sus clases tienen el atributo [GeneratedCode]? Si es así usted puede conseguir FxCop hacer caso omiso de ellas:

Usando un proyecto FxCop:

  1. Abra su proyecto FxCop en FxCop
  2. Seleccione Proyecto -> Opciones -> Ortografía & Análisis
  3. Comprobar Suprima los resultados del análisis con el código generado
  4. Haga clic en Aceptar

A través de la línea de comandos:

  1. pasar el parámetro/ignoregeneratedcode, por ejemplo:
 FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode 

http://blogs.msdn.com/fxcop/archive/2008/02/28/faq-how-do-i-prevent-fxcop-1-36-from-firing-warnings-against-generated-code.aspx

+0

qué SuppressMessage funciona si llamo a fxcopcmd.exe usando la línea de comandos? – Kiquenet

+0

Sí debería – Paolo

0

Si está utilizando la interfaz gráfica de usuario FxCop simplemente podría excluir estos problemas dentro del proyecto FxCop. Simplemente haga clic derecho en el problema y seleccione Excluir donde pueda además de agregar un comentario.
Pero si ejecuta FxCop en la ventana de salida, no tengo ni idea. Tal vez podría verificar si es posible crear un SuppressMessage a nivel de módulo y pegarlo en AssemblyInfo.cs. Pero no lo creo

+0

hay otra respuesta en una pregunta relacionada aquí en SO que indica que puede agregar la supresión de nivel de módulo a assemblyinfo.cs, pero lo intenté y no pude hacerlo funcionar. Podría agregar SuppressMessage a cada método individual, pero eso es un dolor en el cuello cuando quiero ignorar el error para todo en un ensamble en particular. ¡Con suerte, alguien responderá con una solución a esto! – Dave

2

Puede solucionar la falta del atributo GeneratedCode utilizando su propia rama de las clases parciales para aplicar ese atributo. Esto significará que se excluirá cualquier código personalizado que agregue (incluidos los métodos parciales de implementación). Ejemplo:

namespace MyApp.DB { 
    [GeneratedCode("LINQ To SQL", "4.0")] 
    internal partial class MyAppDataContext { 
    } 

    // Repeat for each entity 
} 
0

El PLINQO (Linq-to-SQL) CodeSmith templates también genera este atributo automáticamente. La mayoría de los complementos también comienzan a ignorar las clases parciales que se generan con ".generated" en el nombre del archivo.

[System.CodeDom.Compiler.GeneratedCode ("CodeSmith", "5.0.0.0")]

Cuestiones relacionadas