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

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

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

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

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

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

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


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

>
>
>
Как 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 в свой процесс разработки.

Популярные статьи по теме
Как различить C и C++ разработчиков по их коду

Дата: 12 Май 2022

Автор: Гость

Так уж случилось, что я пишу код для разных IoT-железок, связанных с электричеством, типа зарядных станций автомобилей. Поскольку аппаратных ресурсов, как правило, вполне достаточно, то основным фоку…
Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой

Дата: 06 Май 2022

Автор: Гость

Здравствуйте! Меня зовут Александр, и я работаю программистом микроконтроллеров.
Нереальный baselining или доработки PVS-Studio для Unreal Engine проектов

Дата: 26 Апр 2022

Автор: Валерий Комаров

Статический анализатор PVS-Studio постоянно развивается: улучшаются различные механизмы, происходит интеграция с игровыми движками, IDE, CI/CD и другими системами и сервисами. Благодаря этому несколь…
Разбор некоторых вредных советов для С++ программиста

Дата: 21 Апр 2022

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

Юмор юмором, но осторожность не повредит. Вдруг кому-то не до конца понятно, почему какой-то из советов является вредным. Здесь можно найти соответствующие пояснения.
Четыре причины проверять, что вернула функция malloc

Дата: 20 Апр 2022

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

Некоторые разработчики пренебрежительно относятся к проверкам: удалось ли выделить память с помощью функции malloc или нет. Их логика проста – памяти всегда должно хватить. А если не хватит, всё равн…

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

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