metrica
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

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

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

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

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

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

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


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

Вебинар: Трудности при интеграции SAST, как с ними справляться - 04.04

>
>
Баг месяца: эстафета от 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!

Популярные статьи по теме


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

Следующие комментарии next comments
close comment form