>
>
Почему статический анализ кода необходи…

Евгений Рыжков
Статей: 125

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

Разрабатывая и помогая людям применять инструменты статического анализа кода, мы регулярно сталкиваемся с неэффективным подходом в использовании таких инструментов. Разработчики запускают инструмент, находят и исправляют интересные программные ошибки, после чего запускают инструмент лишь время от времени. Например, когда подходит срок выпуска очередной версии. Это подход обречен на неудачу. И я расскажу почему.

Вообще в применении инструментов статического анализа кода самый сложный и "труднопроходимый" этап – это его внедрение. Дело в том, что любой подобный инструмент всегда выдает довольно много сообщений (включая ложные срабатывания) и при первых запусках таких сообщений будет много в любом случае. Сквозь них надо как-то "продраться" – либо исправить в коде, либо пометить как ложные срабатывания. В любом случае, надо сделать так, чтобы анализатор больше не выдавал эти сообщения. Сделав это, пользователи нередко откладывают инструмент в сторону до "следующего раза", например до подготовки следующей версии своего продукта.

Это неправильно, поскольку тогда вновь накопится очень много сообщений от анализатора, и разбираться с ними будет просто лень. Корректный вариант использования статического анализатора кода – это регулярный запуск инструмента и исправление обнаруженных проблем сразу же. Например, запускать статический анализ можно вместе с ночными сборками ежедневно.

Есть ещё одна более важная причина, почему запуск статического анализатора от случая к случаю крайне неэффективное действие. Большинство ошибок, которые могли бы быть моментально выявлены статическим анализом кода, выявляются вместо этого с помощью других методов тестирования. Цена и время исправления ошибки возрастает в несколько раз.

В PVS-Studio есть механизм, позволяющий запускать проверку кода из командной строки. Этот вызов очень удобно вставить в процедуру ночных сборок. В этом случае будет полностью проверяться все файлы проекта и на утро можно будет посмотреть отчет с обнаруженными новыми ошибками.

Если проверка всех файлов выполняется очень долго (что характерно для больших проектов), то в PVS-Studio возможно настроить проверку только некоторых файлов. Здесь описано как это можно сделать. Если коротко, то можно либо проверять файлы, модифицированные за последний день (или несколько дней), а можно проверять только указанные в списке файлы (сам список – это файл, заданный в командной строке). В этом случае вы получите, во-первых, каждое утро список новых обнаруженных проблем в коде, а, во-вторых, на это потребуется совсем мало времени. Настройка "Check only Files Modified In (проверять файлы за последний день) может быть полезна и при ручном запуске PVS-Studio в процессе написания кода. Например, закончив правку большого фрагмента программы и добившись, что код компилируется, можно запустить PVS-Studio. Анализатор быстро проверит только те файлы, которые правились сегодня.