Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
Как PVS-Studio защищает от поспешных пр…

Как PVS-Studio защищает от поспешных правок кода, пример N2

18 Янв 2022

Большое количество ошибок программистами допускается просто по невнимательности или из-за спешки. Хорошо это видно на небольших неправильных изменениях, вносимых в код. Рассмотрим как раз такой случай, когда, исправляя одну ошибку, программист добавляет новую.

0910_Blender_V595_ru/image1.png

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

Ещё в том году я начал мониторить с помощью анализатора PVS-Studio открытый проект Blender. Но как выяснилось, я оказался достаточно ленив в этом деле. Проект активно развивается, и мне на почту постоянно приходят уведомления про предупреждения, относящиеся к новому коду. А у меня то совещание, то написание какой-то статьи, то ещё что-то. Получалось, что обычно я вообще пропускал эти уведомления :(. Как результат, за тот год я написал всего пару заметок про свежие ошибки, хотя можно было бы написать намного больше.

Вчера смотрю, пришло письмо с двумя предупреждениями. Ну ладно, думаю, дай посмотрю, пока минутка есть. Одно предупреждение не очень интересное, зато второе – прямо конфетка. Ну что же, надо побороть лень и описать, как PVS-Studio может помогать выявлять ошибки при регулярном использовании :).

Итак, @Antonioya сделал коммит из двух строчек, чтобы исправить баг: Fix T94903: GPencil: Copying keys doesn't preserve Keyframe Type.

Он поспешил и не заметил, что указатель может быть нулевым. Об этом свидетельствует проверка указателя на равенство nullptr:

gpf->key_type = gpfs->key_type;
if (gpf) {

В свою очередь анализатор PVS-Studio заметил аномалию и выдал предупреждение: V595 [CWE-476]: The 'gpf' pointer was utilized before it was verified against nullptr. Check lines: 458, 459. editaction_gpencil.c

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

P.S. Хотел вначале назвать статью просто "Как PVS-Studio защищает от поспешных правок кода", но оказывается, такая статья уже есть и пришлось приписать "пример N2". Думаю, со временем количество таких статей будет увеличиваться. Спасибо за внимание, и попробуйте внедрить PVS-Studio в свой процесс разработки.

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


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

Следующие комментарии next comments
close comment form
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
Ваше сообщение отправлено.

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


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам