我有这个验证密码的方法:
/**
* 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;
}
让我们关注圈复杂度数:它的价值是什么?
Metrics 1.3.6说是 7,但我真的找不到 7 条独立路径:我只找到 5 条!维基百科也帮不上什么忙——我想怎么用这个公式π - s + 2
?
我有 2 个if
、1 个for
和 3 个出口点,但我被卡住了:我必须计算入口点吗?我应该先计算两次,if
因为它有两个条件吗?
编辑:
好的,现在我发现圈数是 7。这意味着有 7 个独立的路径,所以如果我想覆盖 100% 的代码,我应该能够找到 7 个不同的测试用例,对吗?
好吧,我仍然找不到最后一个!我发现了这些:
- 有效:asdf1234
- 太短:asdf123
- 太长:asdfsgihzasweruihioruldhgobaihgfuiosbhrbgtadfhsdrhuorhguozr
- 无效字符:asdf*123
- 全数字:12345678
- 无数字:asdfghjk
- 呜呜呜???