[英]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' 是從構造函數 '' 在行調用
- 未使用動態綁定。" 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.