Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

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

Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Баг месяца: эстафета от PC-Lint к PVS-S…

Баг месяца: эстафета от PC-Lint к PVS-Studio

23 Мар 2017

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

0490_The_bug_of_the_month_ru/image1.png

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

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

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

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

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

0490_The_bug_of_the_month_ru/image2.png

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

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

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

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

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

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

Популярные статьи по теме
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Как PVS-Studio оказался внимательнее, чем три с половиной программиста

Дата: 22 Окт 2018

Автор: Андрей Карпов

PVS-Studio, как и другие статические анализаторы кода, часто выдаёт ложные срабатывания. Но не стоит спешить считать странные срабатывания ложными. Это короткая история о том, как PVS-Studio вновь ок…
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

Автор: Андрей Карпов

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

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Эффект последней строки

Дата: 31 Май 2014

Автор: Андрей Карпов

Я изучил множество ошибок, возникающих в результате копирования кода. И утверждаю, что чаще всего ошибки допускают в последнем фрагменте однотипного кода. Ранее я не встречал в книгах описания этого …

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

Следующие комментарии
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять