2009-06-27 13 views
13

Quería preguntar si conoce algunas librerías de C# (dlls) que calculan las métricas de CK (principalmente la complejidad de Cyclomatic).Libre biblioteca de cálculos de métricas de C# (DLL)

Lo necesitaría para un proyecto que planeo hacer. Sé que ya hay algunas soluciones terminadas que calculan las métricas de CK y se las muestran en varias formas, pero lo que necesitaría es una que pueda usar desde mi aplicación. Así que antes de comenzar y escribir uno yo primero quería preguntarte.

Gracias

+0

¿Alguna vez ha encontrado una biblioteca? ¿O cómo has resuelto este problema? – RoflcoptrException

+0

No, esto fue parte de una idea de programa que tenía, pero desafortunadamente mi tiempo actual no me permite continuar y crear la aplicación. Por lo tanto, tampoco investigué ninguna búsqueda adicional de una biblioteca apropiada – Juri

+0

ok gracias. entonces tengo que buscar más;) – RoflcoptrException

Respuesta

15

DrivenMetrics es una herramienta de línea de comandos de código abierto C#. Las funcionalidades principales están aisladas del cliente de consola de la línea de comandos como una biblioteca (el proyecto principal está disponible here).

Incluso si es bastante simple, puede ajustarse a su necesidad: es gratis, cuenta el número de líneas y calcula la complejidad ciclomática (cantidad de posibles rutas de código) de los métodos.

Esto se realiza a través del análisis directo de la IL gracias a Mono.Cecil (la misma biblioteca de la que depende NDepend). Esto permite que el análisis que se realiza en montajes construidos a partir de código escrito en C#, VB.Net, ...

  • El proyecto ha sido anunciado here.
  • El código fuente es disponible en github.
  • Una versión en paquete también es available.
  • Funciona tanto en Windows como en Mono.

ACTUALIZACIÓN:

Otra opción sería la increíble Gendarme, una herramienta de análisis estático del proyecto Mono .

Como muestra de uso, el siguiente código muestra la complejidad ciclomática de cada método en un ensamblaje.

ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly); 

foreach (var type in module.Types) 
{ 
    foreach (var me in type.Methods) 
    { 
     if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled) 
      continue; 
     var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me); 

     Console.WriteLine("{0}: {1}", me.ToString(), r); 
    } 
}
  • El proyecto se describe here
  • El código fuente está disponible en github
  • versiones empaquetadas son también available
  • Funciona tanto en Windows y Mono
+0

. ¡Esto se ve realmente genial! Pero, ¿dónde puedes ejecutarlo? Revisé la fuente central, la compilé y luego obtuve 3 ddls. Luego hice referencia a estos 3 DDL en mi proyecto. Pero, ¿qué hacer? No puedo ver ninguna documentación sobre esto. – RoflcoptrException

+0

@Roflcoptr: Eche un vistazo a la clase Driven.Metrics.Tests.Core.Metrics.ILCyclomicComplexityTests en los proyectos DrivenMetrics.Tests. Esta clase de prueba le mostrará cómo cargar un ensamblaje (en el método de Configuración()), cómo seleccionar un método para analizar y cómo aplicarle un ILCyclomicComplextityCalculator para calcular el CC del método (vea el método ShouldDetermineCyclomicComplexityForFooSecond() para ejemplo). – nulltoken

+0

lo siento, informé mal mi pregunta, pienso: D me preguntaba cómo puedo usar esto. Incluí el archivo DrivenMetrics.dll en las referencias de mi proyecto. Esto debería hacer el trikc ¿verdad? – RoflcoptrException

3

estoy usando SourceMonitor, que es una aplicación de software gratuito bonita que mide la complejidad del código y otras métricas para una variedad de idiomas incluyendo C#. Lo llevamos desde la línea de comandos para producir resultados XML, luego usamos LINQ to XML para extraer y ordenar los datos que nos interesan. Luego utilizamos NVelocity para crear informes HTML.

Sé que no es una biblioteca administrada, pero puede encontrar que puede hacer lo que necesita.

+0

thx para la información. Pero el problema es que mi aplicación no solo se considera para uso personal, sino potencialmente para otros, por lo que es un poco incómodo si tienen que instalarla para usar mi aplicación. Pero lo tomaré en consideración, gracias – Juri

-1

Con 82 code metrics compatible NDepend es el código de las herramientas Roll's Royce de las métricas para los desarrolladores .NET (sin embargo, es una herramienta comercial).

0

ISN 't libre pero he tenido buenas experiencias con NCover para este tipo de la cosa También se integran bastante bien con muchas herramientas de CI.

Cuestiones relacionadas