Cyclomatic Сложность в куске кода с несколькими точками выхода

У меня есть этот метод, который проверяет пароль:

/**
 * 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;
}

Давайте сосредоточимся на цикломатическом числе сложности: какова его ценность?

Метрики 1.3.6 говорит, что это 7, но я не могу найти семь независимых путей: я нахожу только 5! А такжеВикипедия не очень помогли - как я могу использовать эту формулуπ - s + 2?

у меня есть 2ifх, 1for и 3 точки выхода, но я застрял: нужно ли считать точку входа? Должен ли я считать дважды первыйif sinc, у него есть два условия?

РЕДАКТИРОВАТЬ:

Хорошо, теперь я обнаружил, что Cyclomatic Number равно 7. Это означает, что существует 7 независимых путей, и поэтому я должен быть в состоянии найти 7 различных тестовых случаев, если бы я покрыл 100% кода, я прав?

Ну, я до сих пор не могу найти последний! Я нашел это:

Действительно: asdf1234Слишком коротко: asdf123Слишком долго: asdfsgihzasweruihioruldhgobaihgfuiosbhrbgtadfhsdrhuorhguozrНеверный символ: asdf * 123Все цифры: 12345678Без цифр: asdfghjkWTF ???

Ответы на вопрос(3)

Ваш ответ на вопрос