Andrey2008
@Andrey2008
DevRel в PVS-Studio

Си++, поиск явных приведений типов: a = (int)b;?

Вопрос по пользе диагностики.

Один человек предложил реализовать в анализаторе PVS-Studio поиск всех явных приведений типов в стиле Си. Т.е. выявлять конструкции вида:


int *x = (int *)y;
float a = float(b);
float c = (float)(d);


Цель — заменить ве эти приведения на более безопасные варианты — reinterpret_cast/static_cast/const_cast. В процессе подобного рефакторинга вполне могут быть выявлены некоторые дефекты.


Конечно, это не выявление настоящих ошибок. И если эта диагностика будет реализоана, то будет находится в разделе [Customer's Specific Requests] и по умолчанию отключена.

Однако даже в пользе такого варианта, я не уверен. Решил задать вопрос. Нужно кому-то еще искать все явные приведения типов в стиле Си? Захочет кто-то заняться подобным рефакторингом своего кода?
  • Вопрос задан
  • 2872 просмотра
Пригласить эксперта
Ответы на вопрос 8
Vass
@Vass
C++/Qt Developer
Однозначно, нужно. C-style приведения типов — это зло с которым нужно бороться.
Ответ написан
Andrey2008
@Andrey2008 Автор вопроса
DevRel в PVS-Studio
Ясно. Интерес есть. Значит будет. Спасибо.
Ответ написан
@CaptainTrunky
Весьма полезная возможность. Неоднократно и свой код переписывал, и унаследованный, с целью перевести все на с++ вариант.
Ответ написан
Riateche
@Riateche
Вы писали, что не хотите дублировать проверки компилятора. У g++ есть ключ -Wold-style-cast, который включает предупреждения о таких приведениях типа. Из этого можно заключить, что поддержку этой опции реализовывать не следует. Я думаю, вам вместо этого следует заняться поиском более трудноотлавливаемых ошибок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы