2012-04-25 12 views
10

En Sonar, para una clase particular de Java, veo:Diferencia entre "complejidad" métrico y "complejidad/método de la" métrica

Complexity:  830 

Complexity /method:  8,1 

¿Cómo podría explicar la diferencia entre esos dos métricas?

¿Es "Complejidad" la complejidad de la clase?

¿Cuál es la complejidad máxima que debe tener una clase? Sé que los métodos deberían ser menos de 10 para la complejidad del método, pero ¿cuál es el número máximo de complejidad de clase que una clase debería cumplir para que no se considere complejo?

Gracias.

EDITAR

también miro violaciónes regla Ciclomática-complejidad en el archivo.

Desde hace varios métodos, el sonar dice con diferentes números de complejidad (en francés):

"La complexité cyclomatique de la classe est de 28 alors Que le autorisé máxima est de 10."

en Inglés:

"La complejidad ciclomática clase es 28, pero el máximo permitido es de 10".

No entiendo por qué dice "complejidad ciclomática de clase" ya que parece ser un "método de complejidad ciclomática".

Además, la clase en cuestión no aparece en la parte superior de la clase más compleja ordenada por la complejidad/método promedio, ya que sonar dice que solo tiene una complejidad de método promedio de 8,1.

Respuesta

6

Puede consultar nuestra página Wiki "Definiciones métricas" (y más específicamente en "Complexity" section) para saber más sobre el significado de las métricas que se encuentran en Sonar.

  • "Complejidad" es la complejidad total de un recurso (para un archivo => suma de las complejidades de todas las clases definidas en el archivo)
  • "Complejidad/método" es la "complejidad" dividido por el número de métodos encontrados en el archivo
  • ... y así sucesivamente para las otras métricas.
+1

Gracias por la respuesta. Tal vez soy yo, pero no era tan obvio que "Complejidad" significa "suma de complejidad de métodos", pero ahora parece obvio. La página wiki no indica que es la suma de todas las complejidades de los métodos. –

+0

@ Jérôme: Oficialmente, la suma de las complejidades de McCabe para una clase se llama WMC (métodos ponderados por clase) como se describe [aquí] (https://sonarqube.sourcemeter.com/plugins/resource/491408?page=sm-help #Complejidad). –

+0

el enlace presentado no diferencia entre las métricas de complejidad que maneja el sonar: como CoreMetrics.FILE_COMPLEXITY y CoreMetrics.COMPLEXITY – XtianGIS

Cuestiones relacionadas