Найдено 10 000 Ошибок — Веха для Статического анализа


Устранение ошибок в программном обеспечении требует внимания к деталям — или хорошего набора инструментов. Для продвижения методологии статического анализа в целом и собственного статического анализатора в частности PVS-Studio проводит бесплатный анализ кода с открытым исходным кодом. Проверив 262 проекта, он зарегистрировал 10 000 ошибок.

По словам Андрея Карпова, соучредителя и технического директора Систем верификации программ:

Найденные нами ошибки демонстрируют, что никто не застрахован от опечаток, невнимательности или других ошибок. Абсолютно никто, и мы находим подтверждения этому в таких проектах, как Microsoft Code Contracts, Qt, ядро Linux, CryEngine, VirtualBox, LibreOffice, Firefox, Boost, Tor и так далее.

База данных ошибок проекта с открытым исходным кодом, организованная более чем 250 кодами ошибок PVS-Studio, с примерами для каждого, доступна для вашего осмотра и назидания.

Итак, 10000 проблем в 262 проектах — это не так уж много — в среднем получается 38 проблем на проект, — но их может быть гораздо больше. Карпов указывает:

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

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

Одна вещь, которую обнаружила PVS-Studio, заключается в том, что база кода и качество могут варьироваться от проекта к проекту. Некоторые проекты содержат сотни проблем, но на прошлой неделе аналитик PVS-Studio Илья Иванов написал отчет о проекте, который дал только одну проблему!

Проект был NUnit, сам тестирующий фреймворк для .NET — проектов, перенесенных с Java на C#, и было бы неловко, если бы он был пронизан ошибками-так что даже одного достаточно, и PVS-Studio ликовала.:

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

Полный отчет вы можете прочитать здесь. Другие интересные анализы включают Поиск Ошибок В Первом компиляторе C++ с ответом Бьярне Страуструпа и Обнаружение Ошибок В ChakraCore.

Андрей Карпов собрал большую коллекцию советов для программистов в результате проверки проектов с открытым исходным кодом и представил небольшую подборку по I Programmer, см. Четыре Совета для программистов на C++


Добавить комментарий