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

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

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

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

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

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

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


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

>
>
Цена ошибки на примере одной из проблем…

Цена ошибки на примере одной из проблем в PVS-Studio

30 Дек 2019

Мы часто пишем статьи про программные ошибки, которые обнаруживаем с помощью нашего статического анализатора кода PVS-Studio. Эти ошибки бывают разные: простые и сложные, очевидные и труднонаходимые, понятные и такие, про которые приходится объяснять отдельно, да еще и несколько минут. Все эти ошибки объединяет то, что у них есть цена. Но вот какая она, эта цена ошибки – наши читатели часто не соглашаются с нашим мнением. Некоторые говорят так: ну и что, что это ошибка. Найдем – исправим. А не найдем – значит и не страшно. Или по-другому немножко. Ну упадет приложение из-за этой ошибки, ничего страшного. Перезапустим и все.

0703_PVS_Studio_site_bug_ru/image1.png

Я хочу рассказать историю из жизни нашей компании. Хотя она и не относится к статическому анализу, но она очень хорошо иллюстрирует понятие "цена ошибки".

У нас на сайте есть запрос триальной лицензии. Заинтересовавшийся анализатором человек оставляет запрос через форму на сайте. Из формы сразу генерируется письмо, которое попадает ко мне с указанной информацией. Если в письме есть какие-то уточняющие вопросы, то я на них отвечаю, а если их нет, то используется шаблонный ответ с автоматически сгенерированным триальным ключом на неделю. Ответ отправляется по почте как правило в течение часа с момента запроса.

Схема простая и работающая. Обработчик формы запросов на сайте, проверка и отправка почты по cron, да что здесь может сломаться? Однако 19 декабря на сервере отвалился cron. Уже не важно почему конкретно, да и тем более фрагмент кода здесь привести не удастся. Допускаю даже, что там нет ошибки, а это что-то не настроено было просто как надо. Но он отвалился. И письма с ключами перестали отправляться. Совсем...

Но я также, как и раньше видел входящие вопросы, на некоторые отвечал... Какие-то общения в поддержке продолжались, хоть и сильно меньше, чем обычно. Ну так ведь новый год, рождество... Проблему я заметил только 24 декабря, спустя полнедели. Два пользователя написали, что мы не отвечаем на запросы ключей. Стали проверять и ужаснулись.

Цена ошибки для меня в этом инциденте составила около 50 запросов ключа, на которые мы не ответили вовремя. 50 пользователей с помощью усилий в маркетинге и рекламе мы привели на сайт и не смогли обработать.

Вы скажете: "Ну что же вы не тестируете отправку почты с сайта? Это же важная часть процесса!" Да, важная. Поэтому мы ее тестируем. "Наверное вы отправляете e-mail в случае ошибки, а тут он не отправился?" Нет, мы знаем, что в обработчиках ошибок часто тоже содержатся ошибки. Поэтому мы сделали умно. Письмо о том, что почта работает приходит каждый день в одно и тоже время. Последнее такое письмо было как раз 18 декабря. К сожалению, я не заметил, что оно перестало приходить.

К чему вся эта заметка? Ошибки (в программах, в их настройке, да и просто человеческий фактор) приводят к потерям. Если вы можете что-то сделать для того, чтобы уменьшить эти риски, то обязательно сделайте. Например, внедрите статический анализатор кода.

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

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

Дата: 04 Май 2022

Автор: Сергей Хренов

Приветствую всех программистов, а также сочувствующих. Кто из нас хотя бы раз в жизни не оставлял комментарии в коде? Был ли это ваш код, а может, чужой? Что за комментарии вы написали: полезные или …
Visual Studio 2022 стильно и свежо. История о её поддержке в PVS-Studio

Дата: 15 Фев 2022

Автор: Николай Миронов

Кажется, анонс Visual Studio 2022 был только недавно, и вот она уже вышла. Это означало ровно одно – поддержать данную IDE нужно в ближайшем релизе PVS-Studio. О том, с какими сложностями пришлось ст…
Лучшие срабатывания статического анализатора

Дата: 29 Окт 2021

Автор: Максим Звягинцев

У всех, кто запускал статический анализатор в первый раз на большом проекте, был небольшой шок по поводу сотен, тысяч или даже десятков тысяч предупреждений. Как-то грустно становится после такого. Т…
Зачем нужна техническая поддержка и как в ней не выгореть?

Дата: 01 Сен 2021

Автор: Николай Миронов

Не всем нравится работать в поддержке. Огромное количество людей выгорает на ней. Так может не стоит вообще её иметь? Какую выгоду она несёт? Можно ли как-то не выгорать от поддержки? Попробуем найти…
Как делался новый дизайн сайта PVS-Studio

Дата: 04 Июн 2021

Автор: Инна Пристягина

Сайту PVS-Studio в этом году исполнится 15 лет. Это солидный возраст для любого интернет-ресурса. Далёкий 2006-й в России был признан годом гуманитарных наук. В июне появилась никому не знакомая тогд…

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

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