From e64c368daafd04ab9522e7aedd30e13f195875dc Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 21 Mar 2024 16:57:43 +0100 Subject: [PATCH] Fix #12529 false negative: unusedVariable with library type (#6157) --- cfg/qt.cfg | 6 +++--- lib/checkunusedvar.cpp | 4 +++- test/cfg/qt.cpp | 22 +++++++++++----------- test/cfg/wxwidgets.cpp | 24 ++++++++++++------------ 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/cfg/qt.cfg b/cfg/qt.cfg index 69bc205a316..8c2d34073b0 100644 --- a/cfg/qt.cfg +++ b/cfg/qt.cfg @@ -5236,12 +5236,12 @@ QApplication QMutexLocker - QRectF - QSizeF - QPointF QRect + QRectF QSize + QSizeF QPoint + QPointF QRegion diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 5982f3fa0d2..7ab85367eb5 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -713,10 +713,12 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const type = Variables::pointer; else if (mTokenizer->isC() || i->typeEndToken()->isStandardType() || + i->isStlType() || isRecordTypeWithoutSideEffects(i->type()) || mSettings->library.detectContainer(i->typeStartToken()) || - i->isStlType()) + mSettings->library.getTypeCheck("unusedvar", i->typeStartToken()->str()) == Library::TypeCheck::check) type = Variables::standard; + if (type == Variables::none || isPartOfClassStructUnion(i->typeStartToken())) continue; const Token* defValTok = i->nameToken()->next(); diff --git a/test/cfg/qt.cpp b/test/cfg/qt.cpp index 5fcb803e372..b6cbff9fe96 100644 --- a/test/cfg/qt.cpp +++ b/test/cfg/qt.cpp @@ -23,19 +23,19 @@ #include #include #include -#include -#include -#include -#include #include +#include #include +#include #include +#include +#include #include void unreadVariable_QRegion(const int x, const QRegion::RegionType type, const QPolygon &polygon, const QBitmap &bm, const QRegion ®ion, const Qt::FillRule fillRule) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QRegion a; // cppcheck-suppress unreadVariable QRegion b{}; @@ -53,7 +53,7 @@ void unreadVariable_QRegion(const int x, const QRegion::RegionType type, const Q void unreadVariable_QPoint(const QPoint &s) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QPoint a; // cppcheck-suppress unreadVariable QPoint b{}; @@ -67,7 +67,7 @@ void unreadVariable_QPoint(const QPoint &s) void unreadVariable_QPointF(const QPointF &s) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QPointF a; // cppcheck-suppress unreadVariable QPointF b{}; @@ -81,7 +81,7 @@ void unreadVariable_QPointF(const QPointF &s) void unreadVariable_QSizeF(const QSize &s) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QSizeF a; // cppcheck-suppress unreadVariable QSizeF b{}; @@ -95,7 +95,7 @@ void unreadVariable_QSizeF(const QSize &s) void unreadVariable_QSize(const QSize &s) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QSize a; // cppcheck-suppress unreadVariable QSize b{}; @@ -108,7 +108,7 @@ void unreadVariable_QSize(const QSize &s) } void unreadVariable_QRect(const QPoint &topLeft, const QSize &size, const QPoint &bottomRight, const int x) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QRect a; // cppcheck-suppress unreadVariable QRect b{}; @@ -123,7 +123,7 @@ void unreadVariable_QRect(const QPoint &topLeft, const QSize &size, const QPoint } void unreadVariable_QRectF(const QPointF &topLeft, const QSizeF &size, const QPointF &bottomRight, const QRectF &rect, const qreal x) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable QRectF a; // cppcheck-suppress unreadVariable QRectF b{}; diff --git a/test/cfg/wxwidgets.cpp b/test/cfg/wxwidgets.cpp index 85e233cdf9a..95b240fd688 100644 --- a/test/cfg/wxwidgets.cpp +++ b/test/cfg/wxwidgets.cpp @@ -36,15 +36,15 @@ #include #include -void unreadVariable_wxAcceleratorEntry() +void unusedVariable_wxAcceleratorEntry() { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxAcceleratorEntry a; } void unreadVariable_wxDateSpan(const int x) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxDateSpan a; // cppcheck-suppress unreadVariable wxDateSpan b{x}; @@ -58,7 +58,7 @@ void unreadVariable_wxDateSpan(const int x) void unreadVariable_wxTimeSpan(const long x, const wxLongLong y) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxTimeSpan a; // cppcheck-suppress unreadVariable wxTimeSpan b{}; @@ -80,7 +80,7 @@ void unreadVariable_wxFileType(const wxFileTypeInfo &info) void unreadVariable_wxPosition(const int x) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxPosition a; // cppcheck-suppress unreadVariable wxPosition b{}; @@ -90,7 +90,7 @@ void unreadVariable_wxPosition(const int x) void unreadVariable_wxRegEx(const wxString &expr, const int flags) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxRegEx a; // cppcheck-suppress unreadVariable wxRegEx b{expr}; @@ -100,7 +100,7 @@ void unreadVariable_wxRegEx(const wxString &expr, const int flags) void unreadVariable_wxRegion(const wxCoord x, const wxPoint &pt, const wxRect &rect, const wxRegion ®ion, const wxBitmap &bmp) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxRegion a; // cppcheck-suppress unreadVariable wxRegion b{}; @@ -118,7 +118,7 @@ void unreadVariable_wxRegion(const wxCoord x, const wxPoint &pt, const wxRect &r void unreadVariable_wxVersionInfo(const wxString &name, const int major, const int minor, const int micro, const wxString &description, const wxString ©right) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxVersionInfo a; // cppcheck-suppress unreadVariable wxVersionInfo b(name); @@ -136,7 +136,7 @@ void unreadVariable_wxVersionInfo(const wxString &name, const int major, const i void unreadVariable_wxSize(const wxSize &s) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxSize a; // cppcheck-suppress unreadVariable wxSize b{}; @@ -150,7 +150,7 @@ void unreadVariable_wxSize(const wxSize &s) void unreadVariable_wxPoint(const wxRealPoint &rp, const int x, const int y) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxPoint a; // cppcheck-suppress unreadVariable wxPoint b{}; @@ -168,7 +168,7 @@ void unreadVariable_wxPoint(const wxRealPoint &rp, const int x, const int y) void unreadVariable_wxRealPoint(const wxPoint &pt, const double x, const double y) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxRealPoint a; // cppcheck-suppress unreadVariable wxRealPoint b{}; @@ -186,7 +186,7 @@ void unreadVariable_wxRealPoint(const wxPoint &pt, const double x, const double void unreadVariable_wxRect(const int x, const wxPoint &pt, const wxSize &sz) { - // cppcheck-suppress unreadVariable + // cppcheck-suppress unusedVariable wxRect a; // cppcheck-suppress unreadVariable wxRect b{};