Zyklomatische Komplexität in Codeteilen mit mehreren Austrittspunkten

Ich habe diese Methode, die ein Passwort überprüft:

/**
 * Checks if the given password is valid.
 * 
 * @param password The password to validate.
 * @return {@code true} if the password is valid, {@code false} otherwise.
 */
public static boolean validatePassword(String password) {
    int len = password.length();
    if (len < 8 || len > 20)
        return false;
    boolean hasLetters = false;
    boolean hasDigits = false;
    for (int i=0; i<len; i++) {
        if (!Character.isLetterOrDigit(password.charAt(i)))
            return false;
        hasDigits = hasDigits || Character.isDigit(password.charAt(i));
        hasLetters = hasLetters || Character.isLetter(password.charAt(i));
    }
    return hasDigits && hasLetters;
}

Konzentrieren wir uns auf die zyklomatische Komplexitätszahl: Was ist ihr Wert?

Metriken 1.3.6 sagt, es ist 7, aber ich kann nicht wirklich sieben unabhängige Pfade finden: Ich finde nur 5! UndWikipedia hat nicht viel geholfen - wie soll ich diese Formel verwenden?π - s + 2?

ich habe 2if's, 1for und 3 Ausstiegspunkte, aber ich stecke fest: Muss ich den Einstiegspunkt zählen? Soll ich das erste mal zählen?if da hat es zwei bedingungen?

BEARBEITEN:

Ok, jetzt habe ich herausgefunden, dass die zyklomatische Zahl 7 ist. Dies bedeutet, dass es 7 unabhängige Pfade gibt und ich in der Lage sein sollte, 7 verschiedene Testfälle zu finden, wenn ich 100% des Codes abdecken würde.

Nun, ich kann immer noch nicht den letzten finden! Ich fand diese:

Gültig: asdf1234Zu kurz: asdf123Zu lang: asdfsgihzasweruihioruldhgobaihgfuiosbhrbgtadfhsdrhuorhguozrUngültiges Zeichen: asdf * 123Alle Ziffern: 12345678Keine Ziffern: asdfghjkwtf ???

Antworten auf die Frage(3)

Ihre Antwort auf die Frage