Предупреждения о подозрительно похожих именах
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.09.21 10:58
Оценка:
В каких-нибудь компиляторах реализованы предупреждения о возможных ошибках в написании похожих имен?

Классический пример — "#ifdef MyMacro". Если вместо "MyMacro" будет "myMacro" или "Mymacro" — оно будет тихо пропущено, как и при любых других ошибках в имени (определено MYMACRO, проверяется MYMACR), и замаешься искать такие ошибки. У себя я уже давно использую только #if, никаких #ifdef/#ifndef.

Такая же фигня с перегруженными функциями, шаблонной магией и подобными вещами.

Так же визуально трудно отличить, например, "l" от "1". Такой ляп, конечно, допустить нелегко, но таки можно.

А если компилятор поддерживает Unicode, то и вовсе открывается широчайший простор для косяков — многие буквы с разными кодами совершенно неотличимы визуально.

Сейчас прогнал с /Wall свежий VC++ 19.29 из последнего обновления VS 2019 — его такие сочетания совершенно не напрягают.
identifier similar case typo warning
Re: Предупреждения о подозрительно похожих именах
От: Zhendos  
Дата: 10.09.21 11:46
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В каких-нибудь компиляторах реализованы предупреждения о возможных ошибках в написании похожих имен?


ЕМ>Классический пример — "#ifdef MyMacro". Если вместо "MyMacro" будет "myMacro" или "Mymacro" — оно будет тихо пропущено, как и при любых других ошибках в имени (определено MYMACRO, проверяется MYMACR), и замаешься искать такие ошибки. У себя я уже давно использую только #if, никаких #ifdef/#ifndef.


clang-tidy проверять на заднный в конфиге стиль, то есть например может проверить что все
макросы заданны большими буквами. То есть останется только класс ошибок MYMACR(O).

Еще по крайней мере CLion умеет находить ошибки в правописании в идентификаторах.
То есть подчеркивать желтым все что не MY_MACROS.
Re: Предупреждения о подозрительно похожих именах
От: Alexander G Украина  
Дата: 10.09.21 18:00
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В каких-нибудь компиляторах реализованы предупреждения о возможных ошибках в написании похожих имен?


Ближайшее, что есть -- в сообщениях об ошибках с идентификаторами (не макро) есть подсказки о возможном похожем имени: https://godbolt.org/z/TGG1zY3xx

Для макро -- ну просто писать их всегда ALL_CAPS. Никто, кроме Windows SDK, вроде, не нарушает это правило.
Русский военный корабль идёт ко дну!
Re: Предупреждения о подозрительно похожих именах
От: _NN_ www.nemerleweb.com
Дата: 18.09.21 16:57
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

PVS_Studio V1040 Possible typo in the spelling of a pre-defined macro name.
Оно ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Предупреждения о подозрительно похожих именах
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 18.09.21 18:56
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Оно ?


В целом да, но PVS Studio — все таки специализированный инструмент. Я спрашивал прежде всего о предупреждениях, встроенных в компиляторы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.