try software programa para online metricas medir ejemplo complejidad ciclomatica catch calcular analisis java scala

java - software - programa para calcular la complejidad ciclomatica



Complejidad ciclomática de scala (3)

Puede ejecutar una tarea en la herramienta SBT para verificar problemas de estilo comunes. Entre otras cosas, generará una advertencia si la complejidad ciclomática supera los 10 en cualquier bloque. Para más detalles, consulte aquí: http://www.scala-sbt.org/

La tarea se llama styleCheck.

¿Existe una herramienta para generar la complejidad ciclomática del código scala?

Gracias


Que yo sepa, no existen tales herramientas. Creo que es importante tener en cuenta que la complejidad ciclomática es una métrica fundamentalmente de procedimiento y se cae completamente cuando tiene funciones de orden superior en su idioma. Si escribe código en "buen" estilo Scala, la complejidad ciclomática literalmente va a 1 para toda su base de código. La razón es que los marcos de orden superior tienen una tendencia a evitar ramas explícitas por completo. Todo está codificado en términos de funciones, y no está particularmente claro cómo medir la complejidad ciclomática de una función de orden superior (por lo tanto, todo va a 1).

Le aconsejaría que abandone la idea de medir la complejidad ciclomática en el contexto de Scala, o en realidad cualquier otro lenguaje funcional. Una métrica mejor, y en realidad más informativa, sería simplemente revisar el código para las declaraciones de match / case . Cuando los encuentres, considera hacerlos desaparecer. Estas afirmaciones no son malas de ninguna manera, pero hay muchos casos en los que se pueden reemplazar por una función de orden superior y línea recta. Este examen logrará el mismo objetivo que una métrica de complejidad ciclomática, pero mucho más útil para el paradigma funcional. Y, al final del día, es probable que su código sea mucho más "funcional" y mucho más compostable como resultado.

Para extender el comentario de Daniel, los mismos problemas surgen en realidad cada vez que puede codificar funciones de orden superior. Eso significa, en particular, que la complejidad ciclomática no se aplica bien a OO. Si un método llama a b.foo, entonces hay un punto de bifurcación invisible, una rama de cualquiera de los métodos foo que se podrían alcanzar de esa manera. Sin embargo, la mayoría de las medidas de complejidad ciclomática para Java o lo que sea no cuentan los mensajes de mensajes como puntos de ramificación. Es completamente posible (aunque no se practica comúnmente) eliminar todos los ifs, todos los fors y whiles, etc. a través de OO antiguo. La única diferencia entre OO y FP a lo largo de estas líneas es que la sustitución de bucles y condicionales con construcciones de nivel superior se considera una práctica de FP normal.