28.11.2021

Cppcheck 2.5

Вышла новая версия статического анализатора для С и С++.

В новой версии:

В парсере:

  • Различные исправления

  • Теперь поддерживаются все возможности c++11, c++14, c++17

  • Частичная поддержка с++20

Также анализатор теперь:

  • знает больше об API

  • показывает меньше ненужных предупреждений

  • находит больше багов

  • Исправлены вылеты и ложные срабатывания в Misra

Добавлены новые проверки:

  • Подозрительное присваивание контейнера/итератора в условии
  • Повторное пробрасывание текущего исключения с помощью throw;

Примеры кода, на котором проявляются новые проверки:

void f(std::string s) { if (s = "123") { }
}
Assignment in condition should probably be comparison
void func1(const bool flag) { try{ if(!flag) throw; } catch (int&) { ; } }
Rethrowing current exception with 'throw;', it seems there is no current exception to rethrow.
If there is no current exception this calls std::terminate(). More: https://isocpp.org/wiki/faq/exceptions#throw-without-an-object

>>> Подробности

Источник.