Вебинар: Трудности при интеграции SAST, как с ними справляться - 04.04
Предупреждения компилятора (Compiler warnings) – это сообщения компилятора о подозрительных местах в программе, которые могут содержать ошибки. В отличие от ошибок компиляции, предупреждения не прерывают процесс компиляции программы. Они не являются ошибками с точки зрения языка программирования, но могут быть программными ошибками. Впрочем, многие компиляторы можно настроить так, чтобы предупреждения останавливали процесс компиляции.
Предупреждения не стоит игнорировать. Лучше исправить возможные ошибки еще до начала тестирования программы. Можно долго и упорно искать ошибку в отладчике, хотя про нее явно сообщает компилятор в одном из предупреждений. Следует стараться, чтобы при работе с проектом все предупреждения были устранены или их было минимальное количество. Чем меньше предупреждений, тем легче заметить ошибку в новом коде.
Различные компиляторы выдают свои предупреждения, основываясь на статическом анализе кода, выполняемом на этапе компиляции. Поэтому предупреждения, выдаваемые MSVC и GCC или Clang, могут различаться. К сожалению, компилятор не в силах провести полноценный анализ, поскольку компиляция должна выполняться быстро. Поэтому для поиска более сложных ошибок в программе лучше воспользоваться специализированными инструментами статического анализа кода.
В MSVC можно управлять выдачей предупреждений, используя директиву '#pragma warning'. Так если компилятор выдает предупреждение на вполне корректный код или такой код находится в библиотеке, то можно подавить вывод предупреждения, используя директиву '#pragma warning (disable : X)', где 'X' – номер предупреждения. Что бы отключить вывод предупреждения в конкретном месте программы, можно сделать так:
#pragma warning(push)
#pragma warning(disable : X)
....корректный код, выдающий предупреждение X....
#pragma warnin(pop)
0