2010-02-16 6 views
7

¿Qué regla de control de código estático definible desea ver agregada a FxCop y/o Gendarme?¿Qué regla desea que tenga FxCop/Gendarme?

¿Por qué desea ver la regla agregada, por ejemplo, cuáles son los beneficios, etc.?

¿Cómo podría implementarse su regla?

+0

FXCop no realiza la comprobación de código estático, comprueba el ensamblado compilado (IL). El análisis de código estático se realiza a través de StyleCop. –

+0

@BeowulfOF, yo diría que FXCop hizo la verificación de código estático, simplemente no verifica el número de espacios que tiene a cada lado de un "=", etc. StyleCop hace más control de estilo, p. id no rastrea el flujo de control entre métodos, etc. –

+0

Microsoft afirma que FXCop analiza solo los ensamblados, no el código fuente. http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx –

Respuesta

1

Personalmente, preferiría ver que no se usan las implementaciones IDisposable en las declaraciones using.

Así que si había un código como éste:

var fs = new FileStream(...); 

// Other code. 

fs.Dispose(); 

Sería decirle a usarlo en un comunicado using.

El beneficio sería que lo alertaría sobre casos en los que podría no estar enterado de dónde se están desechando los objetos que deberían desecharse de manera oportuna.

Sin embargo, hay suficientes ocasiones en las que es una situación válida NO declarar implementaciones IDisposable en una instrucción de uso para que una regla como esta se convierta en un problema muy rápidamente. La mayoría de las veces, este caso toma una implementación de IDisposable como parámetro de un método.

Lo que hago no es decir usos de clases donde los detalles de implementación eliminan la necesidad de llamar a Dispose, (por ejemplo MemoryStream o DataContext); Aquellos implementan IDisposable y siempre deben tener Dispose, independientemente de los implementación detalles, ya que siempre es mejor codificar contra el contrato expuesto.

+0

@Ian Ringrose: actualicé mi respuesta para aclarar. – casperOne

+0

VS2010 Code Analysis tiene una regla de no interrupción para esto: http://msdn.microsoft.com/en-us/library/ms182289%28VS.100%29.aspx –

2

Me gustaría definir e implementar mis propias reglas muy rápidamente. Intenté esto una vez para FxCop, pero encontré que la API no era muy clara, y no había demasiada documentación. Solía ​​FxCop 1.36, tal vez las cosas cambiaron ...

Así que me gustaría ver FxCop tener una clara y fácil de usar interfaz ... eso sería genial :)

Las reglas que he intentado poner en práctica fueron:

  • DocumentInternalMethods
  • DocumentInternalTypes
  • ...

Bas icalmente, quería hacer cumplir xml-comments en miembros no públicos.

+1

Use StyleCop para esto, tiene una regla para ese built-up. Los comentarios XML no se compilan de todos modos para el ensamblaje, por lo que FXCop no puede ver si están definidos o no, ya que solo analiza los ensamblajes compilados. –

+1

Conozco StyleCop, pero en este momento quería implementarlo en FxCop, y lo hice. Tienes razón, tienes que cargar los archivos xml por separado. – tanascius

1

Realmente me gustaría que el análisis binario sea lo suficientemente inteligente como para reconocer la posibilidad de una interfaz.

Si pudiera determinar acercarse a los tipos definidos y sus miembros, si hay recursos comunes que podrían extrapolarse en una interfaz.

Claramente, esto no debería ser más que una advertencia, ya que a veces se desea explícitamente no utilizar una interfaz.

1

Al pensar en esto, también me gustaría ver que el análisis binario sea lo suficientemente inteligente como para verificar la posible degradación de los modificadores de acceso.

No debería ser difícil determinar si una clase, propiedad o método podría ser más restringido.

Cuestiones relacionadas