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
>>> Подробности