Aquí hay algunas métricas de complejidad de stan4j .
Una herramienta de análisis de estructura de clases de eclipse.
Me gusta esta herramienta y las métricas. Trato las métricas como estadísticas, indicadores, mensajes de advertencia. En algún momento debido a algunos métodos o algunas clases realmente tiene alguna lógica complicada que los ha hecho complejos, lo que se debe hacer es vigilarlos, revisarlos para ver si es necesario refactorizarlos o revisarlos cuidadosamente, debido a que normalmente son propensos a errores. También lo utilizo como herramienta de análisis para aprender código fuente, ya que me gusta aprender de lo complejo a lo simple, de hecho incluye algunas otras métricas como Robert C. Martin Metrics, Chidamber & Kemerer Metrics, Count Metrics Pero esta me gusta más.
Métricas de complejidad
Métricas de complejidad ciclomática
Complejidad ciclomática (CC)
La complejidad ciclomática de un método es el número de puntos de decisión en el diagrama de flujo de control del método incrementado en uno. Los puntos de decisión ocurren en declaraciones if / for / while, cláusulas case / catch y elementos de código fuente similares, donde el flujo de control no es simplemente lineal. El número de puntos de decisión (código de bytes) introducidos por una sola declaración (código fuente) puede variar, dependiendo, por ejemplo, de la complejidad de las expresiones booleanas. Cuanto mayor sea el valor de complejidad ciclomática de un método, se requieren más casos de prueba para probar todas las ramas del diagrama de flujo de control del método.
Complejidad ciclomática
promedio Valor promedio de la métrica Complejidad ciclomática sobre todos los métodos de una aplicación, biblioteca, árbol de paquetes o paquete.
Métricas Fat
La métrica Fat de un artefacto es el número de aristas en un gráfico de dependencia apropiado del artefacto. El tipo de gráfico de dependencia depende de la variante métrica y del artefacto elegido:
Fat
La métrica Fat de una aplicación, biblioteca o árbol de paquetes es el recuento de bordes de su gráfico de dependencia de subárbol. Este gráfico contiene todos los elementos secundarios del artefacto en la jerarquía del árbol de paquetes, por lo que también incluye paquetes hoja. (Para ver el gráfico apropiado en la Vista de composición, el conmutador de paquetes planos del Explorador de estructuras debe estar deshabilitado. El conmutador Mostrar bibliotecas debe estar habilitado si el artefacto elegido es una biblioteca; de lo contrario, debe deshabilitarse).
La métrica Fat de un paquete es el recuento de bordes de su gráfico de dependencia de unidades. Este gráfico contiene todas las clases de nivel superior del paquete.
La métrica Fat de una clase es el recuento de bordes de su gráfico de miembros. Este gráfico contiene todos los campos, métodos y clases de miembros de la clase. (Este gráfico y el valor de Fat solo están disponibles si el análisis de código se realizó con el miembro de nivel de detalle, no con la clase).
Grasa para dependencias de bibliotecas (Fat - Bibliotecas)
La métrica Fat para dependencias de bibliotecas de una aplicación es el recuento de bordes de su gráfico de dependencia de bibliotecas. Este gráfico contiene todas las bibliotecas de la aplicación. (Para ver el gráfico apropiado en la Vista de composición, se debe habilitar la opción Mostrar bibliotecas del Explorador de estructuras).
Grasa para dependencias de paquetes planos (Fat - Paquetes)
La métrica Grasa para dependencias de paquetes planos de una aplicación es el recuento de bordes de su gráfico de dependencia de paquetes planos. Este gráfico contiene todos los paquetes de la aplicación. (Para ver el gráfico apropiado en la Vista de composición, la palanca de paquetes planos del Explorador de estructuras debe estar habilitada y la opción Mostrar bibliotecas debe estar deshabilitada).
La métrica Fat for Flat Package Dependencies de una biblioteca es el recuento de bordes de su gráfico de dependencia de paquetes planos. Este gráfico contiene todos los paquetes de la biblioteca. (Para ver el gráfico apropiado en la Vista de composición, los conmutadores de paquetes planos y Mostrar bibliotecas del Explorador de estructuras deben estar habilitados).
Grasa para dependencias de clase de nivel superior (Fat - Unidades)
La métrica Fat para dependencias de clase de nivel superior de una aplicación o biblioteca es el recuento de bordes de su gráfico de dependencia de unidades. Este gráfico contiene todas las clases de nivel superior de la aplicación o biblioteca. (Para aplicaciones razonables, es demasiado grande para visualizarse y, por lo tanto, no se puede mostrar en la Vista de composición. Los gráficos de dependencia de unidades solo se pueden mostrar para paquetes).
the number of StyleCop warnings + 10 * the number of FxCop warnings + 2 to the power of the number of disabled warning types
. Solo después de que el valor de esa métrica sea lo más pequeño posible, vale la pena que un humano comience a revisar el código (en mi opinión). En resumen: las herramientas sofisticadas en lugar de las fórmulas simplistas pueden ayudar a mejorar la calidad del código. Sin embargo, esto probablemente esté fuera de tema.