Анонс самой большой и интересной рекламной статьи (70 листов) про статический анализ кода


    Из всех видов рекламы довольно небольшое ее количество приходится на инструменты для программистов. Медийная реклама (телевидение, радио, популярные печатные издания) – очень дорого (так как оплата идет за потенциально большую аудиторию) и сильно мимо (так как программистов из них очень мало). Реклама на специализированных сайтах часто тоже не столь эффективна, так как, во-первых, глаз у программистов «отметает» рекламу автоматически, а, во-вторых, программисты знают про AdBlock. Делать видео по работе с программой – не все программы выглядят красочно и ярко, чтобы можно было их интересно снять. Таким образом, чуть ли не единственный способ сообщить о своем продукте миру – это честно и объективно показывать, чем он хорош на реальных примерах.



    Продвигая статический анализатор кода PVS-Studio для C/C++/C++11, мы занимаемся тем, что находим программные ошибки в известных open source проектах и описываем их в своих статьях. За время нашей работы у нас набралось огромное количество программных ошибок, которые мы находили в самых крутых программных проектах. Мы находили ошибки в Apache, Chromium, Clang, Miranda IM, Qt, TortoiseSVN, WinMerge и многих-многих других. Мы собрали наиболее интересные ошибки в одном месте для того, чтобы получилась самая большая рекламная статья в мире.

    Вся статья состоит из 70 страниц, но только 10 из них посвящены описанию технологии статического анализа кода и собственно нашему инструменту PVS-Studio. Остальные 60 страниц – это примеры ошибок (то есть программный код) с нашими комментариями. Любой программист, который осилит хотя бы пролистать всю статью, будет абсолютно уверен в пользе инструмента и захочет посмотреть на него более внимательно. Потому что в статье не восторги маркетологов, а всего лишь найденные программные ошибки, которых, как считают некоторое, настоящие программисты не могут допустить.

    Мы понимаем, что делать рекламную статью на 70 листов, 85% из которых занимает код и его обсуждение не принято. Именно поэтому мы сделали САМУЮ НЕСТАНДАРТНУЮ РЕКЛАМУ ИНСТРУМЕНТА ДЛЯ ПРОГРАММИСТОВ. Читайте статью про ошибки, найденные с помощью PVS-Studio. И ужаснитесь тому, какие ошибки бывают в самых крутых программных проектах.

    Читать самую большую статью.

    P.S. Не опубликовали всю статью (исходную) на Хабре, так как эпический опус на 70 листов все-таки не формат, и может многих смутить.
    Поделиться публикацией

    Похожие публикации

    Комментарии 33
      +3
      Предлагаю перенести в какой-нибудь не закрытый блог, чтобы статью увидело большее число человек.
      Весьма увлекательно читать про ошибки, понимая, что их смогла найти программа, а не человек.
        +48
        Я изначально поместил статью в блог «Разработка» именно по этой причине. Но администрация Хабра видимо озабочена другими вопросами и сама перенесла статью в закрытый блог. Если кто-то считает, что статье место в «Разработке», то голосуйте за мой комментарий — может разрешат перенести.
          +1
          Всем спасибо за поддержку, администрация разрешила перенести в «Разработку»!
        +5
        Положу распечатку Вашей статьи, в сортир в офисе, в нём постоянно лежат бесплатные газеты и журналы со 100% рекламы всякого шлака, пускай будет лежать теперь IT реклама. (ЗЫ. Офис как раз программерский...)
          +10
          Очень прошу, так и сделайте!!! Тогда ее прочитают еще больше. Заранее спасибо.
            +1
            Дык и я о том же… Кодеры они ведь ленивые, и РЕКЛАМУ, да же в в виде технической и полезной инфы, читать будут только по привычки — где нить в сортире…
        • НЛО прилетело и опубликовало эту надпись здесь
            +2
            Скиньте потом в почту ссылку.
              0
              проверь сначала CppCheck
              +1
              Было бы не плохо, если б статья в epub или pdf была, а то сейчас читать времени нет, а в транспорте на читалке самое оно :)
                +3
                Открываете версию для печати (на сайте) и печатаете на виртуальный принтер в pdf. Мы сами pdf не выкладываем для того, чтобы оперативно править ошибки на сайте.
                • НЛО прилетело и опубликовало эту надпись здесь
                    +4
                    Вы делаете медвежью услугу нам. Распространение материала в pdf на сторонних сайтах плохо тем, что он не обновляется. Мы только за пару часов исправили уже несколько ошибок в статье. Поэтому всегда лучше зайти на сайт и сделать себе самому pdf (если уж так хочется именно его).

                    Удалите, пожалуйста, этот pdf.
                    • НЛО прилетело и опубликовало эту надпись здесь
                        +5
                        Должен. Но не осознает :-).

                        Спасибо.
                    +3
                    ох, совершенно из головы вылетело что хром умеет в пдф сохранять.
                    0
                    А у вас есть переводы этой (или других подобных статей) ни английский?
                      +2
                      Конечно!

                      www.viva64.com/en/a/0077/

                      Открываете на нашем сайте русскую статью и кликаете вверху на «English» — открывается она же на английском. Обратно — на русском. Ну или в URL меняете en на ru и наоборот.
                        0
                        Спасибо! Не обратил внимания :-)
                      0
                      У меня есть вполне хорошие циферки по рекламе продуктов для разработчиков на stackoverflow (медийка). Очень много сайтов, где сидят англоязычные программисты, подключены к Google Adsense (Content Display Network в помощь). Неплохой roi выходит при продуманных коммуникациях внутри сообществ. Еще есть тематические группы в LinkedIn, обширные рекламные возможности в Geeknet и так далее.
                        0
                        Здесь в примере 7 ошибка. Ваше ПО нашло ее в коде, а вы снова допустили ее в тексте :)

                        В этом фрагменте:
                        By mistake, IDC_KEYWORD3_BOLD_CHECK is used instead of IDC_KEYWORD3_BOLD_CHECK.
                          0
                          Спасибо! Сейчас поправим.

                          P.S. Лучше писать почтой про ляпы.
                          +3
                          Я только что наконец-то скачал триал PVS-STUDIO дабы таки посмотреть, будет ли это полезно. Вот небольшой experience report:

                          • Сначала меня смутило то, что инсталлятор упомянул только 2005 и 2008 студии, в то время как на сайте пишется что поддерживается 2010я. Ладно, наверное просто забыли написать, или я невнимателен.
                          • В процессе установки появилась пара error box’ов о невозможности что-то зарегистрировать.
                          • После установки, запустил в меню процесс анализа. Получил ошибку. Ошибку отправил в support.
                          • Понял в чем дело. Вы, оказывается, не поддерживаете Intel C++. В связи с чем следуещее:

                          RANT
                          Уважаемое комьюнити! Не все кто пишет на C++ используют компилятор от Microsoft. Если вы поддерживаете C++, поддержите пожалуйста проекты Intel C++ (Intel Parallel Studio).

                          /RANT
                          • Ладно, переключил проект в режим Microsoft C++, благо Intel позаботилась о том чтобы это было легко. PVS заработал.
                          • С досадой заметил что в триале нельзя перепрыгнуть на линию, которая сгенерировала ошибку.
                          • Ошибки долго не анализировал, но нашел примерно вот такое:
                            float n = (float)_wtof(markup.c_str());
                            if (n != 0.0f)
                            {
                              element.Size = n;
                              return;
                            }

                            Не смотря на то, что спека явно декларирует что The return value is 0.0 if the input cannot be converted to a value of that type, PVS Studio выдала мне

                            An odd precise comparison: n != 0.0f. It’s probably better to use a comparison with defined precision: fabs(A – B) > Epsilon.


                          Заметил, что можно получить массу ошибок если включить анализ 64-битности. Тут уже стало интересней: например правильные подсказки относительно memsize_t порадовали. С другой стороны, непонятно почему именно тут появились жалобы на «dangerous magic number».
                          В целом, заметил очень много «мешающих» анализов которые захотелось отключить. Удивился механизму отключения: в property grid добавлены коды ошибок, а не их описание. Что впочем в каком-то смысле удобно.
                          Как всегда, раздражает «слабый» английский в документации.
                            0
                            Спасибо за подробное сообщение. На Ваш баг-репорт в почте уже ответили. Теперь здесь прокомментирую.

                            >> Сначала меня смутило то, что инсталлятор упомянул только 2005 и 2008 студии, в то время как на сайте пишется что поддерживается 2010я. Ладно, наверное просто забыли написать, или я невнимателен.

                            Интеграция в VS2005/2008 выполнятся инсталлятором довольно долго и это можно заметить. Интеграция в VS2010 выполняется почти мгновенно, поэтому Вы не заметили сообщения об этом.

                            >> В процессе установки появилась пара error box’ов о невозможности что-то зарегистрировать.

                            Такое иногда бывает из-за сложных вариантов конфигурации студии. Иногда несмотря на сообщения об ошибках все-таки работает как надо.

                            >>После установки, запустил в меню процесс анализа. Получил ошибку. Ошибку отправил в support.

                            Ответили, спасибо.

                            >> поддержите пожалуйста проекты Intel C++

                            Это очень сложно технически, так как Intel C++ подменяет API студии и с ним не работает то, что нужно. А экономически это не очень обоснованно.

                            >> С досадой заметил что в триале нельзя перепрыгнуть на линию, которая сгенерировала ошибку.

                            Не так. Часть сообщений скрыта, а часть — доступна. Но видимо эта концепция для триала не очень удачная.

                            >> С другой стороны, непонятно почему именно тут появились жалобы на «dangerous magic number».

                            Некоторые закладываются на размер указателя в 4 байта или 32 бита…

                            >> В целом, заметил очень много «мешающих» анализов которые захотелось отключить. Удивился механизму отключения: в property grid добавлены коды ошибок, а не их описание. Что впочем в каком-то смысле удобно.

                            Можно в меню правой кнопки мыши кликнуть «Hide all by code» — это альтернативный вариант скрытия.

                            >> Как всегда, раздражает «слабый» английский в документации.

                            Есть документация на русском.

                            Если есть еще вопросы, спрашивайте.
                              0
                              Отправили пробный ключик. Можно будет более просто изучить диагностики. Приведенный пример с float, это предупреждение третьего уровня. Там редко бывает что-то вкусное. Но с другой стороны, для некоторых такие ошибки действительно головная боль при работе со старыми большими проектами. Мы добавляли её по просьбе пользователей.
                              0
                              вам бы еще ссылки на код повставлять, который инспектируете.
                                0
                                Поясните, о чем речь?
                                0
                                Заранее извиняюсь за возможно наивный вопрос, но беглый просмотр ответа не дал, поэтому:
                                а анализирует ли PVS код шаблонных классов, хотя бы на основе их конкретного использования?
                                  0
                                  Пытается по возможности.
                                  0
                                  Я просто пробовал поставить триал версию какое-то время назад, и во всем проекте нашло очень мало ошибок, и все они были не в шаблонах. Поэтому и решил уточнить:-)
                                  0
                                  Сразу видно серьезные мужики — это вам не формочки в django раскладывать :)
                                    +1
                                    А ведь большую часть этих ошибок хотя бы раз я совершал сам…

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

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое