tmh*_*tmh 5 java complexity-theory return cyclomatic-complexity
我有这个验证密码的方法:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
让我们关注圈复杂度数:它的价值是什么?
度量1.3.6表示它是7,但我找不到七条独立的路径:我只找到5条!和维基百科没有帮助了多少,怎么了,我想用这个公式? - s + 2?
我有2个if,1个for和3个退出点,但我卡住了:我是否必须计算入口点?if因为它有两个条件,我应该先计算两次吗?
编辑:
好的,现在我发现Cyclomatic Number是7.这意味着有7个独立的路径,所以如果我要覆盖100%的代码,我应该能够找到7个不同的测试用例,对吗?
好吧,我还是找不到最后一个!我找到了这些:
我认为诀窍在于逻辑运算符被计算在内。
基于McCabe 圈复杂度部分下的指标链接 ( http://metrics.sourceforge.net/ ):
1 初始流量
3 个决策点(if、for、if)
3 个条件逻辑运算符 (||,||,||)
总数:7
| 归档时间: |
|
| 查看次数: |
4734 次 |
| 最近记录: |