С целью популяризации методологии статического анализа в целом и анализатора PVS-Studio в частности мы регулярно проверяем различные открытые проекты. Найденные в них баги отлично демонстрируют, что никто не застрахован от опечаток, невнимательности и других ошибок. Именно никто, и подтверждения тому мы находим в таких проектах, как Microsoft Code Contracts, Qt, ядро Linux, CryEngine, VirtualBox, LibreOffice, Firefox, Boost, Tor и так далее. На данный момент нами проверено 262 проекта. И вот свершилось, мы нашли и выписали в базу 10000 багов.
Как правило, когда мы находим в проекте достаточное количество ошибок, мы пишем про это статью. Со списком этих статей можно познакомиться здесь. Если же находится всего несколько ошибок, мы просто сообщаем про них разработчикам проекта и продолжаем заниматься другими делами.
Конечно, 10000 ошибок на 262 проекта – это не много. Получается, что в среднем мы нашли 38 ошибок в проекте. Стоит отметить, что на самом деле это число ничего не значит. Размер и качество проектов бывает очень разным. Например, где-то мы находим только одну ошибку, а где-то их сотни.
Ещё важно отметить, что для популяризации статического анализа и PVS-Studio нам не нужно найти как можно больше ошибок. Нам нужно найти количество ошибок, достаточное для написания статьи. Поэтому мы всегда предлагаем авторам проектов проверить их код более тщательно. Да и вообще, разовые проверки проекта хорошо использовать для демонстрации возможностей анализатора, но пользы от них мало. Весь смысл статического анализа в его регулярном использовании. Тогда многие ошибки можно обнаруживать ещё на этапе написания кода, а не через 50 часов отладки или после жалоб пользователей.
Пришло время дать ссылку на собранные ошибки:
База ошибок, обнаруженных в Open Source проектах
Эта база может послужить уникальным материалом для размышлений о разработке стандартов кодирования, написания статей о правилах программирования, и помочь в других исследованиях, связанных с повышением надежности программного обеспечения. Пример: "The Last Line Effect". Желаем интересных исследований.