Почему динамический анализ не может охватить все пути выполнения программы?
-
23-12-2019 - |
Вопрос
Я новый в области анализа программы и после прочтения некоторых материалов в этой области у меня есть несколько вопросов, которые я не могу найти соответствующие ответы ..
См., Если я реализую инструмент: символическое выполнение + бетонное исполнение Так же, как dart
Тогда я думаю, что он должен охватывать все пути выполнения, сохраняя функции динамического анализа ..
Мне сказали, что динамический анализ не может охватывать все пути выполнения, но в основном почему?Я думаю, что техники, как Dart, довольно зрелые сейчас ...
Другие, как проверка модели, теоретически гарантия 100% кода покрытие ... я прав?
Может ли кто-нибудь дать мне некоторую помощь?Спасибо!
Решение
Количество путей через кусок кода экспоненциальна в количестве утверждений «если».Например, если у вас есть такой кусок кода:
if (a) {
// do something
}
if (b) {
// do something
}
...
if (z) {
// do something
}
.
Тогда существует 67108864 возможных кодовых путей, в зависимости от значений 26 логических переменных.