2014-07-10 14 views
6

In dieser Zeile:nPath Komplexität

public Map getAll(BusinessTargetPK pkBusinessTargetId) throws Exception 

Ich erhalte diese Fehlermeldung:

NPath Complexity is 32,768 (max allowed is 200)

Und in dieser Zeile:

public Map getAll(Long RLE_ROLE_ID ) throws Exception { 

ich diesen Fehler:

The method getAll() has an NPath complexity of 2048

Mir ist völlig unbekannt, was ist NPath Komplexität und was es bedeutet.

Kann jemand einen Rat geben, wie man diese Art des Fehlers vermeidet?

+0

"Die NPath-Komplexität einer Methode ist die Anzahl der azyklischen Ausführungspfade durch diese Methode." –

+0

http://codingswag.ghost.io/cyclomatic-and-npath-complexity-explained/ – Mirco

+0

@ Wolverine789 Sie haben auch eine andere Frage über eine Nachricht von Sonar geschrieben. Es sollte eine Dokumentation geben, in der diese Fehlermeldungen erklärt werden - holen Sie sie von der Person, die für die Einrichtung Ihrer Entwicklungsumgebung verantwortlich ist! – laune

Antwort

12

dieser Link: https://modess.io/npath-complexity-cyclomatic-complexity-explained/

erklärt es sehr gut als:

The NPath complexity of a method is the number of acyclic execution paths through that method.

Dies bedeutet, sollen Sie lange Funktionen mit vielen (verschachtelten) if/else-Anweisungen vermeiden.

So mein Rat wäre:

  1. Teilen Sie Ihre Funktionen in kleinere
  2. nutzlos beseitigen if/else-Anweisungen, wo möglich
+4

Die NPath-Komplexität einer Methode ist die Anzahl der azyklischen Ausführungspfade durch diese Methode oder Die einfache Erklärung ist, dass wie viele "Pfade" es im Fluss Ihres Codes in der Funktion gibt. – Wolverine789

1

Dies ist ein alter Thread und Wolverine789 hat wahrscheinlich gedacht, habe die Antwort inzwischen raus aber für die, die diesen Thread noch in den Google Suchergebnissen finden, fand ich die folgende Fehlerbeschreibung von Niklas Modess hilfreich:

https://modess.io/npath-complexity-cyclomatic-complexity-explained/

+2

Links können nicht mehr verfügbar sein. Bitte beschreiben Sie, was auf dem Link steht – sqlab