if (a1 || a2 || ... || an) {
...
}
聲納顯示0/2*n
分支由測試所覆蓋。 (例如: - 0/6
爲n=3
)
讓我們功能:
f:{a1,...,an}->{true,false}
的函數(=所有可能的組合)的數量等於|{true,false}|^|{a1,...,an}| = 2^n
比2*n
(爲n=3
)明顯不同。它也可以用一些組合來演示。
如果我們想寫,如果以下列方式:
if (a1) {
...
} else if (a2) {
...
} else if (a3) {
...
}
...
,我們可以使用下面的n
序列覆蓋所有分支 - 例如用於n=3
:
- T **
- FT *
- FFT
其中T = TRUE,F =假,* =不在乎
問:那麼,爲什麼會出現2*n
?
實施例2
if (a != null && a.length > 0) {
...
}
聲納顯示0/4
分支由測試所覆蓋。
問:我該如何實現4/4
?我只看到3種可能的情況下(輸入):!
- 一個= NULL,則爲a.length> 0
- 一個= NULL,則爲a.length < = 0
- 一個== NULL(第二條件不能調整)
我知道SonarQube使用另一種工具,如Cobertura或JaCoCo覆蓋,這個工具是負責上述問題,但我沒有指定它,因爲我不知道它。根據這些features,似乎覆蓋工具可能是Cobertura或JaCoCo,因爲它們具有行和分支度量標準。
我想知道原理(他們如何決定使用這些指標)。