Конференция: C++ Russia 2017.
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с «проблемой айсберга». Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода.
Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт.
На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах.
В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Во-первых, нам нужно не просто разобрать код, но ещё и сделать дополнительную работу во время парсинга (например, мы собираем данные для некоторых диагностик). Во-вторых, нам важно полностью контролировать то, как построено AST. Оно адаптировано под наши специфические нужды. В-третьих, нам нужно уметь разбирать не только C++, но ещё и его диалекты, такие как C++/CLI или расширения компиляторов для встроенных систем. Проще сделать своё, чем пытаться настроить BIZON универсально под все случаи. Забавное совпадение – ни один взрослый компилятор C++ не использует BIZON, у всех парсеры написаны руками.
English
Français
47