2009-03-01 7 views
5

Me han pedido recientemente que analice un proyecto e identifique 20 clases que son con mayor riesgo en función de las métricas de diseño.Analizar proyecto usando Sourcemonitor

Comencé a analizar el proyecto y decidí elegir las clases con la Complejidad máxima más alta. Debería estar mirando cualquier cosa además de la máxima complejidad. es decir, número de llamadas, declaraciones, clases, métodos/clases, profundidad máxima, etc. ¿Me dirijo en la dirección correcta? si no, ¿qué más debería estar mirando?

Gracias de antemano.

Respuesta

5

Miraría principalmente la complejidad máxima, la profundidad máxima y el número de instrucciones. Estas tres métricas detectarán métodos realmente mal escritos (largos, profundamente anidados y con muchas decisiones y dependencias).

Clasificar SourceMonitor informa sobre cada una de esas tres métricas y anota las 20-30 mejores clases, luego escoge las que están mejor clasificadas en las tres listas.

+0

Tal vez esto dependa del idioma del proyecto, pero en C++ veo que * Mostrar métricas de método ... * proporciona los mejores resultados para un punto de control determinado. Por cierto: ¿sugeriría sopesar estos tres criterios ('wc': peso de la complejidad,' wd': peso de la profundidad, 'ws': peso de los enunciados), y luego encontrar' max (wc * C + wd * D + ws * S) '¿o no es esto pragmático? – Wolf

+1

@ Wolf Creo que estás complicando las cosas. Esta herramienta solo le da métricas en una serie de criterios diferentes. Simplemente elija las métricas que mejor describa el estado de su código y luego actúe sobre los peores archivos fuente de acuerdo con esas métricas. No creo que haya una fórmula exacta para este problema. – zendar

1

Este es un buen lugar para comenzar, pero yo diría que el riesgo también se combina con la cantidad de código que contiene las pruebas unitarias.

Por ejemplo, una función con cyc. la complejidad de 20 que tiene una cobertura de código de prueba unitaria del 100% es más segura que una función con cyc. complejidad de 10 sin pruebas unitarias

+0

La función de cobertura del 100% es mucho más probable que sea "correcta" que la que no tiene pruebas; pero su mayor complejidad significa que es probable que requiera más trabajo (esfuerzo) para modificarlo o ampliarlo. – Schollii

+0

Es cierto, pero Source Monitor no es compatible con la cobertura de prueba de medición. Tal vez no sea la mejor herramienta para resolver la tarea de manera óptima * "identifique 20 clases que están en mayor riesgo en función de las métricas de diseño" * ... – Wolf

Cuestiones relacionadas