О пользе статического анализатора кода при написании программ
7К открытий7К показов
Многие программисты при написании кода совершают ошибки, и каким бы по размеру ни был проект, от незнания особенностей той или иной функции и невнимательности не застрахован никто. Для таких случаев и были созданы статические анализаторы кода. Существует много различных анализаторов, но сегодня будет рассмотрен PVS-Studio.
PVS-Studio — это инструмент для выявления ошибок в исходном коде программ, написанных на языках С, C++ и C#. Анализатор доступен программистам, которые привыкли работать как в ОС Windows в среде Visual Studio, так и в Linux, где его можно встраивать в любую среду разработки за счет формата вывода, аналогичного оному у компилятора.
В целях повышения качества своего продукта и разработки диагностик, при помощи которых можно находить всё больше ошибок, разработчики неустанно проверяют Open Source проекты и выкладывают статьи о результатах работы в свой блог.
Команда PVS-Studio нашла уже более 10 000 ошибок в различных по величине проектах, среди которых есть много известных, например: Unreal Engine, React OS, Unity 3D, CryEngine 5, Open JDK, Serious Engine, GCC, Mono и многие другие.
Некоторые баги были незначительны и жили в проверенных проектах годами. А другие — очень грубые, от них волосы встают дыбом и невольно думаешь, как программисты могли допустить такое?!
Ошибка в компиляторе GCC:
Предупреждение PVS-Studio: V501 There are identical sub-expressions ‘!strcmp(a->v.val_vms_delta.lbl1, b->v.val_vms_delta.lbl1)’ to the left and to the right of the ‘&&’ operator. dwarf2out.c 1428
Ошибка из проекта Mono:
Предупреждение PVS-Studio: V3001 There are identical sub-expressions ‘value1.ClassName’ to the left and to the right of the ‘==’ operator. ThemeVisualStyles.cs 2141
В обоих приведённых фрагментах кода серьезные ошибки возникают из-за обыкновенных опечаток. В результате, в GCC два раза выполняется одинаковая проверка строки lbl1, а про строку lbl2 забыли. А в Mono имя класса сравнивается само с собой.
Анализатор PVS-Studio с легкостью справляется с такими проблемами. Причем, если раньше пользоваться им можно было только в среде Visual Studio под Windows, то теперь разработчики выпустили новую версию продукта PVS-Studio for Linux.
В новой версии для операционных систем GNU/Linux PVS-Studio, помимо непосредственно нативной версии самого анализатора, предлагает удобные варианты интеграции в проекты, использующие для сборки CMake и QMake, и отображение результатов анализа в средах разработки QtCreator и CLion. Продукт доступен в виде .deb, .rpm или .tgz пакетов. В скором времени разработчики планируют запустить собственные репозитории для удобного автообновления инструмента.
В Visual Studio анализатор интегрируется в виде плагина и в фоновом режиме может выполнять анализ измененных файлов после их компиляции. PVS-Studio диагностирует потенциальные ошибки в трёх основных группах: общего назначения, оптимизации и 64-битные ошибки. Набор правил общего назначения позволяет обнаружить логические ошибки, опечатки, фрагменты кода, приводящие к access violation, некорректное использование алгоритмов из библиотеки STL и многое другое.
Самый лучший способ увидеть пользу от использования анализатора — проверить с его помощью собственные проекты. Скачать обе версии продукта можно с официального сайта.
7К открытий7К показов