Недавно мы опубликовали 2 статьи про ТОП 10 ошибок в открытых проектах C++ и C# за предыдущий 2016 год. Статьи понравились читателям и это натолкнуло на мысль: почему бы не сделать такой ТОП для каждого месяца? Ведь на нашем сайте огромная база ошибок, которая хорошо структурирована и из которой можно выбрать самые интересные баги, найденные в определенный промежуток времени. В этой заметке будет рассказано о новой рубрике «Баг месяца» и о том, из чего мы исходили, когда готовили список ошибок для нее.

Picture 1

Кто-то может сказать, что у Gimpel Software уже была такая рубрика и мы позаимствовали идею. Это не так. Общее у нас только название и то, что на каждый месяц приходится по какому-то определенному багу.

Начнем с того, что хотя номер диагностики бага месяца Gimpel Software реально существует, код, который представлен под ним, искусственно создан в виде задачки с забавным описанием, например: «Санта и его эльфы автоматизируют свою систему доставки Рождества, но один из эльфов сделал критическую ошибку, которая вызвала то, что в некоторых фрагментах кода действие происходит в непредсказуемом порядке», или: «Шон О'Флаэрти, возможно, был немного подвыпившим, когда писал программу ежегодного празднования Дня Святого Патрика в его пабе. Хотя он ее и не закончил, тут все-же есть небольшая проблема». Тут же предлагается найти этот баг самостоятельно, а ниже можно проверить себя и посмотреть в чем была проблема.

Мы же брали реальные ошибки, которые содержат проверенные нами Open Source проекты за несколько лет. Причем старались выбирать явные баги, которые будут понятны не только самому подготовленному читателю. Например, всеми любимый copy-paste, который встречается почти в каждом проекте, или различного рода опечатки. Помимо куска кода с ошибкой также приведена диагностика, с помощью которой PVS-Studio ее нашел и разъяснение, в чем собственно проблема. Ниже добавлена ссылка на статью о проверке данного проекта, где можно посмотреть, какие еще баги в нем содержались.

Как написано на официальном сайте Gimpel Software, их первый «баг месяца» был найден в марте 1991 года и список продолжал пополняться в течение 21 года. В свое время они были очень популярны и хорошо рекламировали PC-Lint. С 2012 года обновление этого раздела прекратилось, но разработчики надеются, что «баг месяца» может быть воскрешен в будущем.

Ну а пока этого не произошло, мы решили, так сказать, взять эстафету у PC-Lint и создать свой «баг месяца» с блэкдж.. Open Source проектами и найденными ошибками в них.

Picture 3



Итак, было просмотрено большое количество проектов, которые мы проверяли с января 2014 по март 2017 года и выбрано 54 интересных ошибки: 39 для C/C++ языка и 15 для C#, так как поддержка C# началась только с 2016 года. С обновляемой таблицей багов можно ознакомиться по этой ссылке https://hownot2code.com/bug-of-the-month/.

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

Объяснить распространенность большинства подобных ошибок (особенно их присутствие в крупных проектах) можно тем, что на практике не всегда удается быть внимательным и держать под контролем каждую строчку кода, особенно когда их сотни тысяч. Отсюда и появляются ошибки Copy-Paste, неопределенное поведение, разыменовывание нулевого указателя, опечатки и разные другие баги, с которыми поможет справиться статический анализ кода.

Для того, чтобы таких ошибок становилось меньше, а качество кода лучше, предлагаем скачать и воспользоваться PVS-Studio на своем проекте. Возможно вам удастся найти свой интересный баг месяца, о котором вы впоследствии сможете рассказать сообществу разработчиков и уберечь их от подобной ошибки. А пока можно потренироваться и попробовать самостоятельно найти ошибки в известных Open Source проектах — http://q.viva64.com/.

Примечание. В недавно выпущенной версии PVS-Studio 6.14 появилась поддержка Visual Studio 2017, Roslyn 2.0 / C# 7.0 для C# анализатора (см. историю версий).

Итак, добро пожаловать: Bug of the month!



Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Ekaterina Milovidova. Bug of the month: taking the baton from PC-Lint to PVS-Studio
Поделиться с друзьями
-->

Комментарии (6)


  1. viiri
    24.03.2017 09:10
    +1

    Отличная инициатива, спасибо!

    ЗЫ: Самый волнующий вопрос: где взять такой календарик, либо макет для самостоятельной распечатки? Безумно порадовал декабрь! Вот как, оказывается, Дед Мороз за ночь успевает всех подарками одарить!


    1. Kate_Milovidova
      24.03.2017 09:43
      +2

      напишите почту в личку и я вышлю вам макет :)


      1. BloodUnit
        24.03.2017 14:09
        +3

        У вас политика компании такая? Не выкладивать в паблик цены и календарики?


        1. Kate_Milovidova
          24.03.2017 14:35
          +5

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


  1. 32bit_me
    24.03.2017 18:16
    +1

    Я только сейчас понял, кого мне напоминает ваш единорог. Это же Lady Rainicorn из Adventure Time.


  1. Kate_Milovidova
    26.03.2017 22:18
    +3

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

    Прикрепляю ссылку на гугл диск