Я бегу commad (Ubuntu 12.04)Почему инструмент cppcheck не находит неинициализированную переменную?
cppcheck test.cpp
Я ожидал неинициализированное переменное предупреждение от cppcheck инструмента. Почему инструмент cppcheck не печатает его в командной строке?
Пример кода каст:
#include <iostream>
class Foo
{
private:
int m_nValue;
public:
Foo();
int GetValue() { return m_nValue; }
};
Foo::Foo()
{
// Oops, we forget to initialize m_nValue
}
int main()
{
Foo cFoo;
if (cFoo.GetValue() > 0)
{//...
}
else
{//...
}
}
'm_nValue' фактически _default initialized_ в соответствии с действующим стандартом. Связано: http://stackoverflow.com/questions/9299101/what-c-idioms-are-deprecated-in-c11/9338032#9338032 –
Вы получите лучшие результаты, используя 'clang -analyze'. –
@ πάνταῥεῖ: И что инициализация по умолчанию делает с 'int'? Правильно ... ничего. –