簡體   English   中英

如何使 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="虛擬函數 'f' 是從構造函數 '' 在行調用

  1. 未使用動態綁定。" verbose="從第 1 行的構造函數 '' 調用虛擬函數 'f'。未使用動態綁定。"/>

我已經在我的解決方案中的幾個類中編寫了對虛擬函數的調用並運行 cppcheck o 它們,但它沒有顯示此錯誤。

我使用過 GUI 並使用 --enable=style 和 --enable=all 從命令行運行 cppcheck

我怎樣才能讓 cppcheck 顯示這個問題? 我正在使用最新的 cppcheck

我運行 cppcheck 的另一個虛擬代碼

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

它將在下一個版本中修復。 現在我已經禁用了檢查。 但是如果我們正確編寫此類警告,它可以再次啟用。 檢查器必須確保該類是基類!

該帖子涉及 1.84

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM