﻿# 15000 ошибок в открытых проектах

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

![0948_15000_errors_ru/image1.png](https://import.viva64.com/docx/blog/0948_15000_errors_ru/image1.png)

С самого начала существования анализатора кода PVS\-Studio наша команда пишет [статьи](https://pvs-studio.ru/ru/blog/inspections/) о проверке различных открытых проектов\. Это очень удачный способ продвижения\. Никакой пустой маркетинговой болтовни\. Программисты это не любят\. Только чёткая демонстрация конкретных ошибок в реальных проектах\.

Из лучших найденных примеров мы ещё и каждый год делаем вот такие подборки:

1. [Топ\-10 ошибок в C\+\+ проектах за 2021 год](https://pvs-studio.ru/ru/blog/posts/cpp/0901/)
1. [Топ\-10 ошибок в C\# проектах за 2021 год](https://pvs-studio.ru/ru/blog/posts/csharp/0904/)

Статьи о найденных ошибках полезны всем\. Мы популяризируем методологию статического анализа кода, а разработчики проверенных проектов имеют возможность исправить ошибки в своём коде\. Кстати, у авторов открытых проектов есть ряд вариантов [бесплатного использования PVS\-Studio](https://pvs-studio.ru/ru/blog/posts/0614/)\.

Мы считаем, что за прошедшие годы наша команда внесла большой вклад в развитие открытых проектов\. К настоящему моменту нами выявлено уже более 15000 ошибок\. А сколько ещё было исправлено самими авторами проектов благодаря бесплатным лицензиям PVS\-Studio, даже затруднительно представить\. Приятно осознавать, что благодаря анализатору PVS\-Studio код многих проектов становится надёжнее и безопаснее\.

Все найденные ошибки мы аккуратно складируем в базу, с которой вы можете познакомиться [здесь](https://pvs-studio.ru/ru/blog/examples/)\.

Эта коллекция багов может служить материалом для различных исследований\. Поэтому предлагаю авторам статей и книг на тему качества написания кода обратить на неё внимание\. Например, мы сами уже заметили и описали следующие закономерности:

1. [Ноль, один, два, Фредди заберёт тебя](https://pvs-studio.ru/ru/blog/posts/cpp/0713/)
1. [Эффект последней строки](https://pvs-studio.ru/ru/blog/posts/cpp/0260/)
1. [Самая опасная функция в мире С/С\+\+](https://pvs-studio.ru/ru/blog/posts/cpp/0360/)
1. [Зло живёт в функциях сравнения](https://pvs-studio.ru/ru/blog/posts/cpp/0509/)

Недавно мы придумали ещё один способ использования коллекции\. На её основании мы разработали игру для программистов, смысл которой — быстро найти ошибку в фрагменте кода\.

![0948_15000_errors_ru/image2.png](https://import.viva64.com/docx/blog/0948_15000_errors_ru/image2.png)

Предлагаем челлендж: [проверь свою внимательность при поиске бага](https://quiz.pvs-studio.com/ru/cpp/)\!

Вам будет предложено несколько фрагментов кода, в которых наш анализатор нашёл ошибки\. Если вы успеваете найти ошибку за 60 секунд, вам начисляется один балл\. Фрагменты кода короткие, поэтому 60 секунд — это честное ограничение\. Наслаждайтесь и делитесь ссылочкой с коллегами :\)

**P\.S\.** Начали задавать вопросы, а где собственно ошибка в коде, показанном на картинке\. Проблема в том, что работоспособность кода зависит от порядка вычисления аргументов функции\. Указатель _context_ может оказаться нулевым, так как функция _CreateSnapshotFile_ принимает аргументы по значению\. Это тема достаточно тонкая и сложная\. Если хотите лучше разобраться, почему указатель может оказаться нулевым, предлагаем познакомиться со статьёй "[Анализатор кода не прав, да здравствует анализатор](https://pvs-studio.ru/ru/blog/posts/cpp/0779/)"\. Там как раз разбирается похожий случай и показывается, что компиляторы GCC и Clang генерируют разный код\.

**Дополнительные ссылки**

1. [Как не стоит преподносить результаты работы статического анализатора](https://habr.com/ru/company/pvs-studio/blog/273411/)
1. [Бесплатные варианты лицензирования PVS\-Studio](https://pvs-studio.ru/ru/blog/posts/0614/)
1. [1000 глаз, которые не хотят проверять код открытых проектов](https://pvs-studio.ru/ru/blog/posts/cpp/0900/)
1. [Как внедрить статический анализатор кода в legacy проект и не демотивировать команду](https://pvs-studio.ru/ru/blog/posts/0743/)