2009-04-07 51 views
5

Sé que puedo acceder a la complejidad ciclomática de mi código en Visual Studio 2008 Team Explorer haciendo clic con el botón derecho y seleccionando "Calcular métricas de código". Me gustaría exponer estos datos para una aplicación web para mostrarlos. ¿Alguien sabe de alguna forma de acceder a estos datos a través de una API?Derivación de Complejidad ciclomática en .NET

Gracias por su ayuda!

Respuesta

2

Uso NDepend para cosas como esas. Puede crear consultas CQL en NDepender y ejecutarlas.
Ejemplo:

SELECT METHODS WHERE CC > 8 

devuelve los métodos con una complejidad mayor que ciclomática 8.

-1

yo no - tiene Visual Studio cualquier API de ese tipo? - pero la complejidad ciclomática es bastante fácil. Gendarme podría ser tu respuesta.

+0

Es Gendarme sea buen reemplazo para FxCop? – Paco

1

No hay API. Pero puede leer un archivo XML generado por el Code Metrics Power Tool. Por lo que sería generar el archivo de métricas de código XML mediante la línea de comandos como:

metrics /f:MyAssembly.dll /o:MetricsResults.xml 

Luego agarra los datos que desea salir de MetricsResults.xml.

Más información sobre la herramienta eléctrica here.

Si desea ejecutar métricas de código en su compilación TFS, vea here y here para ver las opciones.

2

Como se describe en este answer, se puede aprovechar la API de la herramienta de código abiertoGendarme para calcular la complejidad ciclomática de un método

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); 
    } 
}
Cuestiones relacionadas