Почему динамический анализ не может охватить все пути выполнения программы?

StackOverflow https://stackoverflow.com//questions/22059433

Вопрос

Я новый в области анализа программы и после прочтения некоторых материалов в этой области у меня есть несколько вопросов, которые я не могу найти соответствующие ответы ..

См., Если я реализую инструмент: символическое выполнение + бетонное исполнение Так же, как dart

Тогда я думаю, что он должен охватывать все пути выполнения, сохраняя функции динамического анализа ..

Мне сказали, что динамический анализ не может охватывать все пути выполнения, но в основном почему?Я думаю, что техники, как Dart, довольно зрелые сейчас ...

Другие, как проверка модели, теоретически гарантия 100% кода покрытие ... я прав?

Может ли кто-нибудь дать мне некоторую помощь?Спасибо!

Это было полезно?

Решение

Количество путей через кусок кода экспоненциальна в количестве утверждений «если».Например, если у вас есть такой кусок кода:

if (a) {
  // do something
}
if (b) {
  // do something
}
...
if (z) {
  // do something
}
.

Тогда существует 67108864 возможных кодовых путей, в зависимости от значений 26 логических переменных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top