tutorial tools que demand code static-analysis fxcop metrics

static analysis - tools - ¿Cómo se implementa un análisis FxCop/static en una base de código existente?



sonarqube (4)

¡Reescribe tu código en un estilo de pase!

En serio, una antigua base de código tendrá cientos de errores, pero es por eso que tenemos programadores novatos / pasantes. La corrección de las infracciones de FxCop es una excelente forma de obtener una descripción general de la base de código y también aprender a escribir el código .NET conforme.

Así que solo muerde la bala, bebe mucha cafeína y ¡acaba de superarlo en un par de días!

¿Cuáles son algunas de las estrategias que se utilizan al implementar el análisis FxCop / static en bases de códigos existentes con violaciones existentes? ¿Cómo puede uno reducir de manera más efectiva las violaciones del análisis estático?


Haga uso liberal del atributo [SuppressMessage] para comenzar. Al menos al principio. Una vez que obtiene el recuento a 0 a través del atributo, a continuación, establece una regla que los nuevos checkins no pueden introducir violaciones FxCop.

Visual Studio 2008 tiene una buena función de análisis de código que le permite garantizar que el análisis de código se ejecute en cada compilación y que pueda tratar las advertencias como errores. Eso puede ralentizar un poco las cosas, así que recomiendo configurar un servidor de integración continua (como CruiseControl.NET) y hacer que se ejecute el análisis del código cada vez que se registre.

Una vez que lo tenga bajo control y no presente nuevas infracciones en cada checkin, comience a atacar clases enteras de violaciones de FxCop a la vez con el objetivo de eliminar los SuppressMessageAttributes que utilizó.

La forma de hacer un seguimiento de cuáles realmente desea conservar es agregar siempre un valor de Justificación a los que realmente desea suprimir.


NDepend parece que podría hacer lo que está buscando, pero no estoy seguro de si puede integrarse en una compilación automatizada de CruiseControl.Net, y fallar la compilación si el código no cumple con los requisitos (que es lo que yo '' me gustaría pasar).

¿Alguna otra idea?


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 bajo el número de falsos positivos, 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 .