базируется, по-сути дела на абстрактной интерпретации всей программы, как целого. Второй - эвристики вроде PVS-studio, где учитываются даже комментарии, а правила нечётки. Ко второму случаю примыкают всякие ML-решения.
Как называются эти две разновидности?
Я бы сказал, что первый вид называется "верификация", по крайней мере, если это sound анализ, а второй — просто "статический анализ". Потому что Lint — тоже ведь статический анализатор. 😊
Ну да. Spellcheck по комментариям — это тоже стат анализ
Symbolic execution — только один из дюжины вариантов. Tree pattern matching — тоже только один простейший вариант, там может быть и dataflow, и тот же symbolic execution, и что угодно другое, что авторы решили сделать.
Обсуждают сегодня