Perché l'analisi dinamica non può coprire tutto il percorso di esecuzione di un programma?
-
23-12-2019 - |
Domanda
Sono nuovo nell'area di analisi del programma e dopo aver letto alcuni materiali in questo settore, ho alcune domande che non riesco a trovare le risposte corrispondenti ..
Vedi, se implemendo uno strumento: esecuzione simbolica + esecuzione concreta Proprio come DART
Allora penso che dovrebbe coprire tutto il percorso di esecuzione mantenendo le funzionalità di analisi dinamica.
Mi viene detto che l'analisi dinamica non può coprire tutto il percorso di esecuzione, ma in pratica perché?Penso che tecniche come DART siano abbastanza mature ora ...
altri, come il controllo del modello, garantiscono teoricamente una copertura del codice del 100% ... Sono giusto?
Qualcuno potrebbe darmi qualche aiuto?Grazie!
Soluzione
Il numero di percorsi attraverso un pezzo di codice è esponenziale nel numero di dichiarazioni "IF".Ad esempio, se hai un pezzo di codice come questo:
if (a) {
// do something
}
if (b) {
// do something
}
...
if (z) {
// do something
}
.
Poi ci sono 67108864 possibili percorsi di codice, a seconda dei valori delle 26 variabili booleane.