2008-12-09 10 views
21

¿Es posible excluir un espacio de nombre completo de todos los análisis de FxCop mientras se analiza el resto del ensamblado con el SuppressMessageAttribute?¿Excluye el espacio de nombres completo del análisis de código FxCop?

En mi caso actual, tengo un montón de clases generadas por LINQ to SQL que causan muchos problemas FxCop, y obviamente, no modificaré todas para que coincidan con los estándares FxCop, ya que muchas de esas modificaciones desaparecer si volví a generar las clases.

Sé que FxCop tiene una opción de proyecto para suprimir el análisis del código generado, pero no parece reconocer la entidad y las clases de contexto creadas por LINQ 2 SQL como código generado.

+0

Esto es un duplicado exacto porque la otra pregunta también pregunta por Linq-to-SQL; pero creo que las respuestas deben fusionarse y el resguardo debe mantenerse para la capacidad de búsqueda. –

Respuesta

17

Si etiqueta sus clases con el atributo [GeneratedCode], puede utilizar la bandera/ignoregeneratedcode con FxCop como se describe en este artículo de MSDN:

FAQ: How do I prevent FxCop from firing warnings against generated code

puede que tenga que añadir un nuevo archivo de código y poner en práctica nuevas clases parciales allí para añadir el atributo de las clases:

[GeneratedCode] 
public partial class MainDataContext { } 

Sólo asegúrese de agregar todo para el espacio de nombres correcta cuando se crea el nuevo archivo.

+0

Cómo esta dirección la ¿pregunta? la pregunta era sobre un espacio de nombres, esto solo lo arregla para una sola clase –

+1

@Juan - Lea la pregunta más. El OP realmente está preguntando cómo excluir "un grupo de clases generadas por LINQ to SQL". Esta es la solución para ese problema. Desafortunadamente, no existe una solución para un espacio de nombre completo. –

1

Use el Atributo de código generado, aquí está el blog post del equipo de Code Analysis sobre el tema.

Esta en la parte superior del espacio de nombres debe hacer el truco:

[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] 
+0

Desafortunadamente, uno no puede agregar esos atributos a los espacios de nombres, hasta donde yo sé. Eso significaría que tendría que agregarlo manualmente a cada clase generada, esa no puede ser la solución ideal. : D – hangy

+4

prácticamente. El verdadero problema es que si tiene que regenerar el código por alguna razón, debe volver a dejar el atributo. Si las clases Linq a Sql generan parciales, puede mantener los atributos lejos del código generado. Tengo un problema similar con EF classse. – Chane

1
<Assembly: SuppressMessage("Microsoft.Design", _ 
    "CA1020:AvoidNamespacesWithFewTypes", _ 
    Scope:="namespace", _ 
    Target:="Missico.IO")> 

instrucción Put en GlobalSuppressions.vb a raíz del proyecto.

Todo lo que tengo es ejemplo de VB.

+0

Esto no funciona para muchas de las advertencias de generación de código en VS 2010 Code Analysis: no parece ser suprimible en el nivel de espacio de nombres. Pero hay otra opción: http://stackoverflow.com/questions/2221881/code-analysis-on-a-code-generator-generated-file-how-to-suppress-warnings/2739791#2739791 – Richard

4

Agregue [GeneratedCode] attribute a las clases.
EDIT: Me refiero a las clases parciales con los mismos nombres, como se explica en la otra respuesta.

Cuestiones relacionadas