Проверка обработки возвращаемого значения функции
В настоящее время я пытаюсь улучшить качество проекта 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