Проверка обработки возвращаемого значения функции

В настоящее время я пытаюсь улучшить качество проекта C++ (под Linux) с несколькими разработчиками. Почти все функции нашего проекта возвращают определенный код ошибки. Я хочу принудительно обработать (не забывать) коды ошибок, возвращаемые функциями, и поэтому я ищу инструмент с открытым исходным кодом / скрипт bash, который анализирует мой код и определяет, используется ли функция без назначения и выдает предупреждение если так. Например

setMyVar(uint32_t bla); // Naughty

вместо

ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that

Также необходимо, чтобы эта процедура работала для использования пространств имен, таких как

ErrorCode currentError = PM::initialize();

и в идеале такие вещи, как

if( PM::initialize() == PM::Init_Error)

будет также рассматриваться как правильное использование. Любые предложения, как решить эту проблему без необходимости реализовывать сложный анализатор кода?

РЕДАКТИРОВАТЬ: Я также хочу избежать изменений в моем исходном коде или, соответственно, я хочу иметь сценарий только для чтения, который идентифицирует проблемы.

1 ответ

Решение

GCC и Clang поддерживают предупреждения для неиспользуемых возвращаемых значений.

static __attribute__((warn_unused_result)) int test() { /* code goes here */ }

Любой вызов приводит теперь к предупреждению, когда возвращаемое значение не учитывается.

test(); // WARNING: Ignoring return value of function declared with warn_unused_result attribute
Другие вопросы по тегам