.net - sinonimo - Cómo administrar los informes abrumadores de FxCop
abrumador sinonimo (7)
Cree una línea base ejecutando fxCop una vez y excluyendo todo lo que encuentre.
Guarde esto como un archivo .fxcop y úselo para ejecutar verificaciones futuras.
Luego, cuando realice cambios en su código, creará nuevas violaciones manejables. FxCop cambiará las cosas si cambias la firma de un método, por ejemplo.
Si tiene tiempo, puede abordar una categoría de infracciones, una a la vez, sin desbloquearlas.
Recientemente comencé a usarlo. Sin embargo, después de ejecutarlo contra uno de los proyectos más grandes de mi empresa. Resulta montañas de problemas.
La lista de problemas era tan abrumadora que tomaría días encontrar y corregir algunos, si no todos, los elementos.
Ahora, sé que no es muy práctico arreglar todo lo que FxCop te dice que arregles. Pero como soy nuevo en esta pequeña herramienta ...
¿Cuáles son algunos buenos consejos y trucos sobre el uso de FxCop de manera efectiva?
En un nuevo proyecto y en un proyecto existente?
Si también se proporciona a los programadores en mi empresa, generalmente escribe un buen código.
Definitivamente filtra los que no son importantes para tu organización. Por ejemplo, todo el bloque de internacionalización carecía de importancia para uno de nuestros proyectos, por lo que simplemente lo excluimos y eso fue suficiente para que la lista fuera manejable. (Hay algunas sugerencias geniales en ese bloque que queríamos implementar, pero no eran importantes para la aplicación en ese momento).
También puede crear algunos proyectos de FxCop que agrupen las excepciones hasta que consiga el número en algo manejable ("corrija esto ahora", "solucione esto pronto", "solucione esto siempre").
Estoy bastante seguro de que pasé una semana sólida de exclusión / inclusión de infracciones hasta que obtuvimos una lista adecuada para nuestras políticas. Luego otro 2-3 solo arreglando violaciones. :-(
Ordene la salida por el tipo de regla ... luego vaya a la lista de clasificación para ver qué subconjunto de los tipos de regla rotos son importantes y vale la pena arreglar IYO.
No todo lo que informa fxCop es un problema de "obligación imperiosa". Por ejemplo, insertar la entrada del usuario en un comando de la base de datos utilizando la concatenación de cadenas es mucho peor que los problemas de estilo como el húngaro o la captura de excepciones en lugar de una excepción más específica.
Lo bueno de FxCop es que es una excelente herramienta para el caso de uso específico para el que fue diseñada . Fue diseñado para ayudar a los desarrolladores de la biblioteca de la clase. Entonces, si usted es Developer Express o Infragistics y está creando una biblioteca de códigos para ser utilizada por desarrolladores de todo el mundo, necesita buenos nombres, buena globalización y muchas otras cosas más.
Por lo tanto, si nombra todos los formularios cosas como frmMain, FxCop se quejará porque se ve feo en una biblioteca de clases. Pero si solo está trabajando en una aplicación WinForms interna, no tiene que preocuparse. Del mismo modo, te volverás loco con todo lo relacionado con IFormatProvider, las sobrecargas de MessageBox que especifican la dirección del texto, y así sucesivamente. Pero a menos que esté creando código para una audiencia global, puede ignorarlos.
Lo importante es entender a la audiencia prevista de FxCop. Puede ignorar ciertas recomendaciones basadas en las formas en que difiere de esa audiencia.
Una alternativa a FxCop sería usar la herramienta NDepend . Esta herramienta permite escribir Reglas de código sobre C # LINQ Consultas (lo que llamamos CQLinq ). Descargo de responsabilidad: soy uno de los desarrolladores de la herramienta
Se proponen más de 200 reglas de código por defecto. Personalizar las reglas existentes o crear sus propias reglas es sencillo gracias a la bien conocida sintaxis C # LINQ.
Para mantener baja la cantidad de falsos positivos (es decir, para evitar informes abrumadores ), CQLinq ofrece las capacidades únicas para definir qué es el conjunto JustMyCode a través de consultas de códigos especiales con el prefijo notmycode . Más explicaciones sobre esta característica se pueden encontrar aquí . Aquí están, por ejemplo, dos consultas predeterminadas de notmycode :
Para mantener bajo el número de falsos positivos , con CQLinq también puede enfocar el resultado de las reglas solo en el código agregado o el código refactorizado, ya que una línea base definida en el pasado . Consulte la siguiente regla, que detecta métodos demasiado complejos agregados o refactorizados desde la línea base:
warnif count > 0
from m in Methods
where m.CyclomaticComplexity > 20 &&
m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }
Finalmente, observe que con NDepend las reglas de código se pueden verificar en vivo en Visual Studio y en el momento del proceso de compilación, en un informe HTML + javascript generado .
Al principio, puede comenzar con un pequeño conjunto de reglas al comienzo. Y luego aumente la cantidad de reglas que aplica.
Y también debes echar un vistazo a las respuestas de esta pregunta ...