Вышла новая версия статического анализатора для С и С++.
В новой версии:
В парсере:
- различные исправления;
- теперь поддерживаются все возможности 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
>>> Подробности