为什么cppcheck工具找不到未初始化的变量?

use*_*638 3 c++ warnings initialization cppcheck

我运行commad(Ubuntu 12.04)

cppcheck test.cpp
Run Code Online (Sandbox Code Playgroud)

我期待来自cppcheck工具的未初始化变量警告.为什么cppcheck工具不能在命令行上打印它?

示例cpp代码:

#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
    {//...
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*äki 8

有关信息..如果使用--enable = warning,cppcheck会写入此消息:

[test.cpp:13] :(警告)成员变量'Foo :: m_nValue'未在构造函数中初始化.


Lig*_*ica 6

因为这些东西很难,而cppcheck不是全能的上帝和万物的创造者?

在一般情况下,某些问题实际上是不可行的;我不确定这是否是其中之一。但是,如果cppcheck一次仅检查一个翻译单位,那么,如果Foo::Foo在其他翻译单位中定义了该怎么办?