Недавно я решил вновь проверить физический движок Newton Game Dynamics. Код проекта качественный. Поэтому почти не было предупреждений, выявивших ошибки. Зато было несколько десятков ложных срабатываний. Вроде бы писать статью не о чем. Но мне пришла в голову мысль, что можно написать о том, как работать с ложными срабатываниями, и как сделать, чтобы их не было. Проект Newton Game Dynamics показался мне подходящим для этого кандидатом.
Читать полностью »
Метка «static code analysis»
Работа с ложными срабатываниями в PVS-Studio и CppCat
2014-06-20 в 18:00, admin, рубрики: c++, code review, cppcat, pvs-studio, static code analysis, Блог компании PVS-Studio, обзор кода, разработка, статический анализ кода, метки: c++, code review, cppcat, pvs-studio, static code analysis, обзор кода, Си, статический анализ кодаЛегко и просто проверяем Firefox с помощью PVS-Studio Standalone
2014-06-15 в 9:39, admin, рубрики: bugs, c++, code review, Firefox, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, обзор кода, ошибки в программе, статический анализ кода, метки: bugs, c++, code review, firefox, pvs-studio, static code analysis, обзор кода, ошибки в программе, Си, статический анализ кода
Три года назад мы уже проверяли Mozilla Firefox с помощью анализатора PVS-Studio. Тогда это было неудобно и затруднительно. Для Firefox отсутствует проектный файл для Visual Studio. Сборка осуществляется с помощью make-файлов. Поэтому просто взять и проверить проект нельзя. Требовалось интегрировать PVS-Studio в систему сборки, что оказалось трудной задачей. В результате, как мне помнится, была проанализирована только часть проекта. Но всё поменялось, когда появился PVS-Studio Standalone. Теперь можно отследить все запуски компиляторов и легко проверить проект.
Читать полностью »
CppCat провереяет OpenMW: во вселенной Morrowind не всё гладко
2014-05-28 в 5:38, admin, рубрики: bugs, c++, code review, cppcat, game development, static code analysis, Блог компании PVS-Studio, разработка игр, статический анализ кода, метки: bugs, c++, code review, cppcat, static code analysis, разработка игр, Си, статический анализ кода
Я проверил проект OpenMW с помощью CppCat и написал эту крошечную статью. Нашлось слишком мало ошибок. Но меня просили написать про это проверку этого проекта статью, и вот она.
Читать полностью »
Open-source проекты, которые мы проверили с помощью PVS-Studio
2014-02-15 в 17:37, admin, рубрики: c++, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, открытый исходный код, си плюс плюс, статический анализ кода, метки: c++, open source, pvs-studio, static code analysis, открытый исходный код, Си, си плюс плюс, статический анализ кода
Подобная статья уже публиковалась на нашем сайте. Однако, количество проектов увеличивается, и, думаю, будет рационально раз в год обновлять список. Этим и займёмся.
Мы хорошо относимся к бесплатным open-source проектам. Мы стараемся уведомить авторов проектов о найденных недочётах и при необходимости предоставляем им на время лицензию.
Читать полностью »
Пример использования статического анализатора
2013-10-24 в 9:09, admin, рубрики: pvs-studio, static code analysis, Программирование, Совершенный код, метки: c++, pvs-studio, static code analysisКогда PVS-Studio сообщили о том, что они наконец-то выпустили standalone версию, не требующую для своей работы Visual Studio, я, конечно же, не мог пройти мимо :) До этого я уже игрался с пробной версией на коде одного из старых проектов. Сейчас же появилась возможность посмотреть на код нашего последнего проекта, собирающегося в среде разработки AVR Studio (которая eclipse-based).
Для работы требуются файлы сразу после препроцессора. Среда AVR Studio это умеет, с одним маленьким исключением — после включения флага «Только препроцессор» на выходе действительно появляются файлы после препроцессора — но по-прежнему с расширением.о вместо ожидаемого .i. Ну что ж, 5-минутный скрипт на Питоне решает это недоразумение, и анализатор отлично запускается!
На удивление, сообщений мало — около двух десятков. Большинство — незначащие замечания или ложные срабатывания (в embedded запись в регистр одного и того же значения два раза подряд встречается, анализатор же видит в этом потенциальную проблему (и я в общем-то с ним согласен — лучше перестраховаться и проверить такие места)).
В паре мест обнаруживаются реальные опечатки и ошибки копи-паст. Например, переменная типа одного enum-a сравнивается со значением из другого enum-a. Или же одной переменной присваивается два разных значения подряд (хотя, как указано выше, в большинстве случаев это было ложным срабатыванием для записей последовательности в регистр).
Но самой интересной, из-за чего я и пишу этот пост, была одна-единственная строчка «Possible NULL pointer dereferencing»…
Читать полностью »
Статический анализ PHP-кода с помощью HipHop
2012-06-12 в 15:28, admin, рубрики: hiphop, php, static code analysis, Веб-разработка, метки: hiphop, PHP, static code analysisНеожиданно не нашёл информации на русском языке о такой замечательной возможности HipHop, как статический анализ кода для PHP, а потому встречайте обзор, на идею которого меня натолкнула презентация Расмуса на DevConf.
А как это вообще?
Статический анализ кода — вещь весьма полезная, ведь иначе ошибку мы не увидим, пока функция, её содержащая, не будет вызвана. Как же это делает HipHop? Он транслирует PHP в C++!
Таким образом мы получаем возможность статически проанализировать C++ код, что, в общем, давно никого не удивляет, а потом применить полученную информацию к PHP (естественно автоматически).
Итак, начнём.
Читать полностью »