如何使 cppcheck 2.5 在调用构造函数中的虚函数时显示错误。旧版本显示此错误

How to make cppcheck 2.5 show error on calls to a virtual function in constructor. Older version shows this error

cppcheck 规则列表中有

<error id="virtualCallInConstructor" severity="style" msg="Virtual function 'f' is called from constructor '' at line

  1. Dynamic binding is not used." verbose="Virtual function 'f' is called from constructor '' at line 1. Dynamic binding is not used."/>

我已经在我的解决方案中的几个 类 中编写了对虚函数的调用,并 运行 cppcheck o 它们,但没有显示此错误。

我使用了 GUI 以及 运行 从命令行使用 --enable=style 和 --enable=all

cppcheck

如何使 cppcheck 显示此问题? 我正在使用最新的 cppcheck

另一个虚拟代码运行 cppcheck on

class A
{
public:
    A() { }
    virtual void fin() = 0;
};

class B : public A
{
public:
    B() { fin(); }
    void fin() { std::cout << "l"; }
};

class C : public B
{
public:
    C() {}
    void fin() { std::cout << "c"; }
};

更新:我检查了 cppcheck 1.8,它向我显示了这个错误。 2.5 发生了什么,尽管在 2.5 的规则集中声明它应该找到它们,但它没有显示它们?

我找到了这条评论https://sourceforge.net/p/cppcheck/discussion/general/thread/b18f7aaf/#d726

It will be fixed in the next release. For now I have disabled the check. But it can be enabled again if we write such warnings properly. The checker must ensure that the class is a base class!

post 对应 1.84

查看它仍然被禁用的代码: https://github.com/danmar/cppcheck/blob/6397e29f84de53655904326ef1ca892a509275c5/lib/checkclass.h

// FIXME: Only report warnings for inherited classes
// checkClass.checkVirtualFunctionCallInConstructor();