Pregunta

¿Qué regla de verificación de código estático definible desea que se agregue a FxCop y/o Gendarme?

¿Por qué desea que se agregue la regla, por ejemplo, cuáles son los beneficios, etc.?

¿Cómo se podría implementar su regla?

¿Fue útil?

Solución

En lo personal, yo preferiría ver a no utilizar implementaciones IDisposable en declaraciones using.

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

var fs = new FileStream(...);

// Other code.

fs.Dispose();

Sería decirle a usarlo en un comunicado using.

El beneficio sería que usted podría alertar a los casos que podrían no ser conscientes de que los objetos que deben ser eliminados no están siendo eliminados de una manera oportuna.

Sin embargo, hay suficientes veces en las que es una situación válida para no declara implementaciones IDisposable en una instrucción using de una regla como esto se convierta en un dolor muy rápidamente. Muy a menudo, este caso está tomando una implementación IDisposable como un parámetro a 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); los implemento IDisposable y siempre debería haber Dispose llamado en ellos, independientemente de la aplicación detalles, ya que siempre es mejor código con el contrato expuesta.

Otros consejos

Me gustaría definir e implementar mis propias reglas muy rápidamente.Probé esto una vez para FxCop, pero encontré que la API no era muy clara y no había demasiada documentación.Usé FxCop 1.36, tal vez la cosa cambió...

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

Las reglas que intenté implementar fueron:

  • DocumentoMétodos internos
  • Tipos internos de documento
  • ...

Básicamente quería imponer comentarios xml a miembros no públicos.

Me gusta mucho el análisis binario que ser lo suficientemente inteligente como para reconocer la posibilidad de una interfaz.

Si se pudiera determinar de acercarse a los tipos definidos y sus miembros, si hay bienes comunes que podrían ser extrapoladas a una interfaz.

Es evidente que esto no debería ser más que una advertencia, ya que a veces se whished de forma explícita no utilizar una interfaz.

Una vez pensando acerca de esto, yo también me gustaría ver el análisis binario a ser lo suficientemente inteligente como para comprobar una posible rebaja de modificadores de acceso.

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

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