2012-04-25 11 views
10

In Sonar, für eine bestimmte Java-Klasse, ich sehe:Unterschied zwischen „Komplexität“ Metrik und „Komplexität/Verfahren“ metric

Complexity:  830 

Complexity /method:  8,1 

Wie könnte man den Unterschied zwischen diesen beiden Metriken erklären?

Ist "Komplexität" die Klassenkomplexität?

Worin liegt die maximale Komplexität einer Klasse? Ich weiß, dass Methoden für die Komplexität der Methode weniger als 10 sein sollten, aber was ist die maximale Klassenkomplexitätszahl, der eine Klasse entsprechen sollte, um als nicht komplex betrachtet zu werden?

Danke.

EDIT

ich auch einen Blick auf Zyklomatische-Komplexität Regelverletzungen in der Datei.

Für eine Reihe von Methoden, sagt Sonar mit unterschiedlicher Komplexität Zahlen (auf Französisch):

"La complexité cyclomatique de la classe est de 28 alors que le maximal autorisé est de 10."

in Englisch:

"Die Klasse zyklomatische Komplexität 28 ist aber das Maximum ist erlaubt 10".

Ich verstehe nicht, warum es sagt "Klasse zyklomatische Komplexität", wie es scheint, als eine "Methode zyklomatische Komplexität".

Auch die fragliche Klasse erscheint nicht über der komplexesten Klasse, sortiert nach durchschnittlicher Komplexität/Methode, da das Sonar nur eine durchschnittliche Methodenkomplexität von 8,1 hat.

Antwort

6

Sie können sich unsere Wiki-Seite "Metric Definitions" (und genauer unter "Complexity" section) ansehen, um mehr über die Bedeutung von Metriken in Sonar zu erfahren.

  • „Komplexität“ ist die gesamte Komplexität einer Ressource (für eine Datei => Summe der Komplexität aller Klassen in der Datei definiert)
  • „Complexity/Methode“ ist die „Complexity“ durch die geteilten Anzahl der Methoden gefunden in der Datei
  • ... und so weiter für die anderen Metriken.
+1

Danke für Ihre Antwort. Vielleicht bin ich es, aber es war nicht so offensichtlich, dass "Komplexität" soviel bedeutet wie "Komplexität der Methoden", aber jetzt scheint es offensichtlich. Die Wiki-Seite besagt nicht, dass es sich um die Summe aller Methodenkomplexitäten handelt. –

+0

@ Jérôme: Offiziell heißt die Summe von McCabes Komplexitäten für eine Klasse WMC (Weighted Methods pro Class) wie beschrieben [hier] (https://sonarqube.sourcemeter.com/plugins/resource/491408?page=sm-help #Komplexität). –

+0

Der dargestellte Link unterscheidet nicht zwischen den Komplexitätsmetriken, die Sonar behandelt: wie CoreMetrics.FILE_COMPLEXITY und CoreMetrics.COMPLEXITY – XtianGIS