From e63b71bd13136ef01e2fa3f1348f186267c9ba24 Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 30 Mar 2026 11:43:33 +0200 Subject: [PATCH] pass `TokenList` to `SuppressionList::markUnmatchedInlineSuppressionsAsChecked()` --- Makefile | 2 +- lib/cppcheck.cpp | 2 +- lib/suppressions.cpp | 11 +++++------ lib/suppressions.h | 4 ++-- oss-fuzz/Makefile | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index bb07f42c208..6e9f05abfac 100644 --- a/Makefile +++ b/Makefile @@ -656,7 +656,7 @@ $(libcppdir)/standards.o: lib/standards.cpp externals/simplecpp/simplecpp.h lib/ $(libcppdir)/summaries.o: lib/summaries.cpp lib/addoninfo.h lib/analyzerinfo.h lib/checkers.h lib/config.h lib/errortypes.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/summaries.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/summaries.cpp -$(libcppdir)/suppressions.o: lib/suppressions.cpp externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/checkers.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/settings.h lib/smallvector.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h lib/xml.h +$(libcppdir)/suppressions.o: lib/suppressions.cpp externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/checkers.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/settings.h lib/smallvector.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/token.h lib/tokenlist.h lib/utils.h lib/vfvalue.h lib/xml.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/suppressions.cpp $(libcppdir)/templatesimplifier.o: lib/templatesimplifier.cpp lib/addoninfo.h lib/checkers.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/standards.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 5023a5e258e..8f29f1d0118 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1222,7 +1222,7 @@ unsigned int CppCheck::checkInternal(const FileWithDetails& file, const std::str if (mSettings.inlineSuppressions) { // Need to call this even if the hash will skip this configuration - mSuppressions.nomsg.markUnmatchedInlineSuppressionsAsChecked(tokenizer); + mSuppressions.nomsg.markUnmatchedInlineSuppressionsAsChecked(tokenizer.list); } // Skip if we already met the same simplified token list diff --git a/lib/suppressions.cpp b/lib/suppressions.cpp index 241ec3d1f9f..0ad288d298a 100644 --- a/lib/suppressions.cpp +++ b/lib/suppressions.cpp @@ -25,7 +25,6 @@ #include "pathmatch.h" #include "utils.h" #include "token.h" -#include "tokenize.h" #include "tokenlist.h" #include "settings.h" @@ -615,25 +614,25 @@ std::list SuppressionList::getSuppressions() const return mSuppressions; } -void SuppressionList::markUnmatchedInlineSuppressionsAsChecked(const Tokenizer &tokenizer) { +void SuppressionList::markUnmatchedInlineSuppressionsAsChecked(const TokenList &tokenlist) { std::lock_guard lg(mSuppressionsSync); int currLineNr = -1; int currFileIdx = -1; - for (const Token *tok = tokenizer.tokens(); tok; tok = tok->next()) { + for (const Token *tok = tokenlist.front(); tok; tok = tok->next()) { if (currFileIdx != tok->fileIndex() || currLineNr != tok->linenr()) { currLineNr = tok->linenr(); currFileIdx = tok->fileIndex(); for (auto &suppression : mSuppressions) { if (suppression.type == SuppressionList::Type::unique) { - if (!suppression.checked && (suppression.lineNumber == currLineNr) && (suppression.fileName == tokenizer.list.file(tok))) { + if (!suppression.checked && (suppression.lineNumber == currLineNr) && (suppression.fileName == tokenlist.file(tok))) { suppression.checked = true; } } else if (suppression.type == SuppressionList::Type::block) { - if ((!suppression.checked && (suppression.lineBegin <= currLineNr) && (suppression.lineEnd >= currLineNr) && (suppression.fileName == tokenizer.list.file(tok)))) { + if ((!suppression.checked && (suppression.lineBegin <= currLineNr) && (suppression.lineEnd >= currLineNr) && (suppression.fileName == tokenlist.file(tok)))) { suppression.checked = true; } - } else if (!suppression.checked && suppression.fileName == tokenizer.list.file(tok)) { + } else if (!suppression.checked && suppression.fileName == tokenlist.file(tok)) { suppression.checked = true; } } diff --git a/lib/suppressions.h b/lib/suppressions.h index 7f5ffb87b09..5ccf59e6a5d 100644 --- a/lib/suppressions.h +++ b/lib/suppressions.h @@ -33,7 +33,7 @@ #include #include -class Tokenizer; +class TokenList; class ErrorMessage; enum class Certainty : std::uint8_t; class FileWithDetails; @@ -284,7 +284,7 @@ class CPPCHECKLIB SuppressionList { /** * @brief Marks Inline Suppressions as checked if source line is in the token stream */ - void markUnmatchedInlineSuppressionsAsChecked(const Tokenizer &tokenizer); + void markUnmatchedInlineSuppressionsAsChecked(const TokenList &tokenlist); private: mutable std::mutex mSuppressionsSync; diff --git a/oss-fuzz/Makefile b/oss-fuzz/Makefile index 5055ba71a8e..6c1b487bf4e 100644 --- a/oss-fuzz/Makefile +++ b/oss-fuzz/Makefile @@ -332,7 +332,7 @@ $(libcppdir)/standards.o: ../lib/standards.cpp ../externals/simplecpp/simplecpp. $(libcppdir)/summaries.o: ../lib/summaries.cpp ../lib/addoninfo.h ../lib/analyzerinfo.h ../lib/checkers.h ../lib/config.h ../lib/errortypes.h ../lib/library.h ../lib/mathlib.h ../lib/path.h ../lib/platform.h ../lib/settings.h ../lib/smallvector.h ../lib/sourcelocation.h ../lib/standards.h ../lib/summaries.h ../lib/symboldatabase.h ../lib/templatesimplifier.h ../lib/token.h ../lib/tokenize.h ../lib/tokenlist.h ../lib/utils.h ../lib/vfvalue.h $(CXX) ${LIB_FUZZING_ENGINE} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/summaries.cpp -$(libcppdir)/suppressions.o: ../lib/suppressions.cpp ../externals/tinyxml2/tinyxml2.h ../lib/addoninfo.h ../lib/checkers.h ../lib/config.h ../lib/errorlogger.h ../lib/errortypes.h ../lib/filesettings.h ../lib/library.h ../lib/mathlib.h ../lib/path.h ../lib/pathmatch.h ../lib/platform.h ../lib/settings.h ../lib/smallvector.h ../lib/standards.h ../lib/suppressions.h ../lib/templatesimplifier.h ../lib/token.h ../lib/tokenize.h ../lib/tokenlist.h ../lib/utils.h ../lib/vfvalue.h ../lib/xml.h +$(libcppdir)/suppressions.o: ../lib/suppressions.cpp ../externals/tinyxml2/tinyxml2.h ../lib/addoninfo.h ../lib/checkers.h ../lib/config.h ../lib/errorlogger.h ../lib/errortypes.h ../lib/filesettings.h ../lib/library.h ../lib/mathlib.h ../lib/path.h ../lib/pathmatch.h ../lib/platform.h ../lib/settings.h ../lib/smallvector.h ../lib/standards.h ../lib/suppressions.h ../lib/templatesimplifier.h ../lib/token.h ../lib/tokenlist.h ../lib/utils.h ../lib/vfvalue.h ../lib/xml.h $(CXX) ${LIB_FUZZING_ENGINE} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/suppressions.cpp $(libcppdir)/templatesimplifier.o: ../lib/templatesimplifier.cpp ../lib/addoninfo.h ../lib/checkers.h ../lib/config.h ../lib/errorlogger.h ../lib/errortypes.h ../lib/library.h ../lib/mathlib.h ../lib/platform.h ../lib/settings.h ../lib/smallvector.h ../lib/standards.h ../lib/templatesimplifier.h ../lib/token.h ../lib/tokenize.h ../lib/tokenlist.h ../lib/utils.h ../lib/vfvalue.h