From 5397410c132fe26842402e34916488939d1ea2a2 Mon Sep 17 00:00:00 2001 From: firewave Date: Wed, 9 Aug 2023 22:32:14 +0200 Subject: [PATCH] removed unnecessary `Settings` parameter from `Check::runChecks()` and made `Tokenizer` a reference --- Makefile | 2 +- lib/check.h | 2 +- lib/check64bit.h | 6 +++--- lib/checkassert.h | 6 +++--- lib/checkautovariables.h | 6 +++--- lib/checkbool.h | 6 +++--- lib/checkboost.h | 6 +++--- lib/checkbufferoverrun.h | 6 +++--- lib/checkclass.h | 6 +++--- lib/checkcondition.h | 6 +++--- lib/checkexceptionsafety.h | 6 +++--- lib/checkfunctions.h | 6 +++--- lib/checkinternal.h | 8 ++++---- lib/checkio.h | 6 +++--- lib/checkleakautovar.h | 6 +++--- lib/checkmemoryleak.h | 18 +++++++++--------- lib/checknullpointer.h | 6 +++--- lib/checkother.h | 6 +++--- lib/checkpostfixoperator.h | 6 +++--- lib/checksizeof.h | 6 +++--- lib/checkstl.h | 6 +++--- lib/checkstring.h | 6 +++--- lib/checktype.h | 6 +++--- lib/checkuninitvar.h | 6 +++--- lib/checkunusedfunctions.h | 2 +- lib/checkunusedvar.h | 6 +++--- lib/checkvaarg.h | 6 +++--- lib/cppcheck.cpp | 2 +- test/fixture.h | 4 ++-- test/testassert.cpp | 2 +- test/testautovariables.cpp | 2 +- test/testbool.cpp | 2 +- test/testboost.cpp | 2 +- test/testbufferoverrun.cpp | 6 +++--- test/testcondition.cpp | 4 ++-- test/testexceptionsafety.cpp | 2 +- test/testfunctions.cpp | 2 +- test/testgarbage.cpp | 2 +- test/testinternal.cpp | 2 +- test/testleakautovar.cpp | 10 +++++----- test/testnullpointer.cpp | 4 ++-- test/testother.cpp | 4 ++-- test/testsizeof.cpp | 4 ++-- test/teststl.cpp | 4 ++-- test/teststring.cpp | 2 +- test/testtype.cpp | 2 +- test/testvaarg.cpp | 2 +- 47 files changed, 114 insertions(+), 114 deletions(-) diff --git a/Makefile b/Makefile index 946755da0cb..d5fb8442a9b 100644 --- a/Makefile +++ b/Makefile @@ -629,7 +629,7 @@ $(libcppdir)/tokenlist.o: lib/tokenlist.cpp externals/simplecpp/simplecpp.h lib/ $(libcppdir)/utils.o: lib/utils.cpp lib/config.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/utils.cpp -$(libcppdir)/valueflow.o: lib/valueflow.cpp lib/analyzer.h lib/astutils.h lib/calculate.h lib/check.h lib/checkuninitvar.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/forwardanalyzer.h lib/importproject.h lib/infer.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/programmemory.h lib/reverseanalyzer.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h lib/vfvalue.h +$(libcppdir)/valueflow.o: lib/valueflow.cpp lib/analyzer.h lib/astutils.h lib/calculate.h lib/check.h lib/checkuninitvar.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/forwardanalyzer.h lib/importproject.h lib/infer.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/programmemory.h lib/reverseanalyzer.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h lib/vfvalue.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/valueflow.cpp $(libcppdir)/vfvalue.o: lib/vfvalue.cpp lib/config.h lib/errortypes.h lib/mathlib.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/vfvalue.h diff --git a/lib/check.h b/lib/check.h index 39e34781505..51d012ccd0f 100644 --- a/lib/check.h +++ b/lib/check.h @@ -77,7 +77,7 @@ class CPPCHECKLIB Check { static std::list &instances(); /** run checks, the token list is not simplified */ - virtual void runChecks(const Tokenizer *, const Settings *, ErrorLogger *) = 0; + virtual void runChecks(const Tokenizer &, ErrorLogger *) = 0; /** get error messages */ virtual void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const = 0; diff --git a/lib/check64bit.h b/lib/check64bit.h index 67f10c42e38..e79acbd8567 100644 --- a/lib/check64bit.h +++ b/lib/check64bit.h @@ -24,13 +24,13 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include class ErrorLogger; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks @@ -50,8 +50,8 @@ class CPPCHECKLIB Check64BitPortability : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - Check64BitPortability check64BitPortability(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + Check64BitPortability check64BitPortability(&tokenizer, tokenizer.getSettings(), errorLogger); check64BitPortability.pointerassignment(); } diff --git a/lib/checkassert.h b/lib/checkassert.h index 78ce0905c4c..e2455a921ce 100644 --- a/lib/checkassert.h +++ b/lib/checkassert.h @@ -24,6 +24,7 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include @@ -31,7 +32,6 @@ class ErrorLogger; class Scope; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -48,8 +48,8 @@ class CPPCHECKLIB CheckAssert : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** run checks, the token list is not simplified */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckAssert checkAssert(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckAssert checkAssert(&tokenizer, tokenizer.getSettings(), errorLogger); checkAssert.assertWithSideEffects(); } diff --git a/lib/checkautovariables.h b/lib/checkautovariables.h index ea70beba372..b02a0d0a6c3 100644 --- a/lib/checkautovariables.h +++ b/lib/checkautovariables.h @@ -25,13 +25,13 @@ #include "check.h" #include "config.h" #include "errortypes.h" +#include "tokenize.h" #include #include class Settings; class Token; -class Tokenizer; class ErrorLogger; class Variable; @@ -54,8 +54,8 @@ class CPPCHECKLIB CheckAutoVariables : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckAutoVariables checkAutoVariables(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckAutoVariables checkAutoVariables(&tokenizer, tokenizer.getSettings(), errorLogger); checkAutoVariables.assignFunctionArg(); checkAutoVariables.checkVarLifetime(); checkAutoVariables.autoVariables(); diff --git a/lib/checkbool.h b/lib/checkbool.h index d6213a58dbb..94d1714a97e 100644 --- a/lib/checkbool.h +++ b/lib/checkbool.h @@ -24,13 +24,13 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include class ErrorLogger; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -48,8 +48,8 @@ class CPPCHECKLIB CheckBool : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckBool checkBool(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckBool checkBool(&tokenizer, tokenizer.getSettings(), errorLogger); // Checks checkBool.checkComparisonOfBoolExpressionWithInt(); diff --git a/lib/checkboost.h b/lib/checkboost.h index a232ad22cf1..1ea25b28501 100644 --- a/lib/checkboost.h +++ b/lib/checkboost.h @@ -47,11 +47,11 @@ class CPPCHECKLIB CheckBoost : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - if (!tokenizer->isCPP()) + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (!tokenizer.isCPP()) return; - CheckBoost checkBoost(tokenizer, settings, errorLogger); + CheckBoost checkBoost(&tokenizer, tokenizer.getSettings(), errorLogger); checkBoost.checkBoostForeachModification(); } diff --git a/lib/checkbufferoverrun.h b/lib/checkbufferoverrun.h index d402330dd56..16e3a7532da 100644 --- a/lib/checkbufferoverrun.h +++ b/lib/checkbufferoverrun.h @@ -28,6 +28,7 @@ #include "errortypes.h" #include "mathlib.h" #include "symboldatabase.h" +#include "tokenize.h" #include "vfvalue.h" #include @@ -42,7 +43,6 @@ namespace tinyxml2 { class ErrorLogger; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -66,8 +66,8 @@ class CPPCHECKLIB CheckBufferOverrun : public Check { CheckBufferOverrun(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckBufferOverrun checkBufferOverrun(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckBufferOverrun checkBufferOverrun(&tokenizer, tokenizer.getSettings(), errorLogger); checkBufferOverrun.arrayIndex(); checkBufferOverrun.pointerArithmetic(); checkBufferOverrun.bufferOverflow(); diff --git a/lib/checkclass.h b/lib/checkclass.h index ffb94d3a247..3134ebf152f 100644 --- a/lib/checkclass.h +++ b/lib/checkclass.h @@ -59,11 +59,11 @@ class CPPCHECKLIB CheckClass : public Check { CheckClass(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger); /** @brief Run checks on the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - if (tokenizer->isC()) + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (tokenizer.isC()) return; - CheckClass checkClass(tokenizer, settings, errorLogger); + CheckClass checkClass(&tokenizer, tokenizer.getSettings(), errorLogger); // can't be a simplified check .. the 'sizeof' is used. checkClass.checkMemset(); diff --git a/lib/checkcondition.h b/lib/checkcondition.h index 57e09c50b49..948dd7be217 100644 --- a/lib/checkcondition.h +++ b/lib/checkcondition.h @@ -26,13 +26,13 @@ #include "config.h" #include "mathlib.h" #include "errortypes.h" +#include "tokenize.h" #include #include class Settings; class Token; -class Tokenizer; class ErrorLogger; class ValueType; @@ -56,8 +56,8 @@ class CPPCHECKLIB CheckCondition : public Check { CheckCondition(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckCondition checkCondition(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckCondition checkCondition(&tokenizer, tokenizer.getSettings(), errorLogger); checkCondition.multiCondition(); checkCondition.clarifyCondition(); // not simplified because ifAssign checkCondition.multiCondition2(); diff --git a/lib/checkexceptionsafety.h b/lib/checkexceptionsafety.h index 6f90b881c7a..f70573c4bc2 100644 --- a/lib/checkexceptionsafety.h +++ b/lib/checkexceptionsafety.h @@ -53,11 +53,11 @@ class CPPCHECKLIB CheckExceptionSafety : public Check { CheckExceptionSafety(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - if (tokenizer->isC()) + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (tokenizer.isC()) return; - CheckExceptionSafety checkExceptionSafety(tokenizer, settings, errorLogger); + CheckExceptionSafety checkExceptionSafety(&tokenizer, tokenizer.getSettings(), errorLogger); checkExceptionSafety.destructors(); checkExceptionSafety.deallocThrow(); checkExceptionSafety.checkRethrowCopy(); diff --git a/lib/checkfunctions.h b/lib/checkfunctions.h index bff40c2eb00..05502a870f3 100644 --- a/lib/checkfunctions.h +++ b/lib/checkfunctions.h @@ -27,13 +27,13 @@ #include "errortypes.h" #include "library.h" #include "settings.h" +#include "tokenize.h" #include #include #include class Token; -class Tokenizer; class ErrorLogger; namespace ValueFlow { @@ -58,8 +58,8 @@ class CPPCHECKLIB CheckFunctions : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckFunctions checkFunctions(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckFunctions checkFunctions(&tokenizer, tokenizer.getSettings(), errorLogger); checkFunctions.checkIgnoredReturnValue(); checkFunctions.checkMissingReturn(); // Missing "return" in exit path diff --git a/lib/checkinternal.h b/lib/checkinternal.h index 4d44204de8c..e827d3c4eac 100644 --- a/lib/checkinternal.h +++ b/lib/checkinternal.h @@ -26,12 +26,12 @@ #include "config.h" #include "errortypes.h" #include "settings.h" +#include "tokenize.h" #include class ErrorLogger; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -47,11 +47,11 @@ class CPPCHECKLIB CheckInternal : public Check { CheckInternal(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - if (!settings->checks.isEnabled(Checks::internalCheck)) + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (!tokenizer.getSettings()->checks.isEnabled(Checks::internalCheck)) return; - CheckInternal checkInternal(tokenizer, settings, errorLogger); + CheckInternal checkInternal(&tokenizer, tokenizer.getSettings(), errorLogger); checkInternal.checkTokenMatchPatterns(); checkInternal.checkTokenSimpleMatchPatterns(); diff --git a/lib/checkio.h b/lib/checkio.h index 29c3344d5c1..a1fdcd10669 100644 --- a/lib/checkio.h +++ b/lib/checkio.h @@ -24,6 +24,7 @@ #include "check.h" #include "config.h" #include "errortypes.h" +#include "tokenize.h" #include #include @@ -31,7 +32,6 @@ class Function; class Settings; class Token; -class Tokenizer; class Variable; class ErrorLogger; @@ -49,8 +49,8 @@ class CPPCHECKLIB CheckIO : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks on the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckIO checkIO(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckIO checkIO(&tokenizer, tokenizer.getSettings(), errorLogger); checkIO.checkWrongPrintfScanfArguments(); checkIO.checkCoutCerrMisusage(); diff --git a/lib/checkleakautovar.h b/lib/checkleakautovar.h index 1d7cb5fb37e..06243f51341 100644 --- a/lib/checkleakautovar.h +++ b/lib/checkleakautovar.h @@ -25,6 +25,7 @@ #include "check.h" #include "config.h" #include "library.h" +#include "tokenize.h" #include #include @@ -34,7 +35,6 @@ class ErrorLogger; class Settings; class Token; -class Tokenizer; class CPPCHECKLIB VarInfo { @@ -115,8 +115,8 @@ class CPPCHECKLIB CheckLeakAutoVar : public Check { CheckLeakAutoVar(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckLeakAutoVar checkLeakAutoVar(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckLeakAutoVar checkLeakAutoVar(&tokenizer, tokenizer.getSettings(), errorLogger); checkLeakAutoVar.check(); } diff --git a/lib/checkmemoryleak.h b/lib/checkmemoryleak.h index 48144668fcd..435530a8f75 100644 --- a/lib/checkmemoryleak.h +++ b/lib/checkmemoryleak.h @@ -172,8 +172,8 @@ class CPPCHECKLIB CheckMemoryLeakInFunction : private Check, public CheckMemoryL CheckMemoryLeakInFunction(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger), CheckMemoryLeak(tokenizer, errorLogger, settings) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckMemoryLeakInFunction checkMemoryLeak(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckMemoryLeakInFunction checkMemoryLeak(&tokenizer, tokenizer.getSettings(), errorLogger); checkMemoryLeak.checkReallocUsage(); } @@ -224,11 +224,11 @@ class CPPCHECKLIB CheckMemoryLeakInClass : private Check, private CheckMemoryLea CheckMemoryLeakInClass(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger), CheckMemoryLeak(tokenizer, errorLogger, settings) {} - void runChecks(const Tokenizer *tokenizr, const Settings *settings, ErrorLogger *errLog) override { - if (!tokenizr->isCPP()) + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (!tokenizer.isCPP()) return; - CheckMemoryLeakInClass checkMemoryLeak(tokenizr, settings, errLog); + CheckMemoryLeakInClass checkMemoryLeak(&tokenizer, tokenizer.getSettings(), errorLogger); checkMemoryLeak.check(); } @@ -269,8 +269,8 @@ class CPPCHECKLIB CheckMemoryLeakStructMember : private Check, private CheckMemo CheckMemoryLeakStructMember(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger), CheckMemoryLeak(tokenizer, errorLogger, settings) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckMemoryLeakStructMember checkMemoryLeak(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckMemoryLeakStructMember checkMemoryLeak(&tokenizer, tokenizer.getSettings(), errorLogger); checkMemoryLeak.check(); } @@ -305,8 +305,8 @@ class CPPCHECKLIB CheckMemoryLeakNoVar : private Check, private CheckMemoryLeak CheckMemoryLeakNoVar(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger), CheckMemoryLeak(tokenizer, errorLogger, settings) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckMemoryLeakNoVar checkMemoryLeak(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckMemoryLeakNoVar checkMemoryLeak(&tokenizer, tokenizer.getSettings(), errorLogger); checkMemoryLeak.check(); } diff --git a/lib/checknullpointer.h b/lib/checknullpointer.h index 6751e00bc9b..e3b7c2714be 100644 --- a/lib/checknullpointer.h +++ b/lib/checknullpointer.h @@ -25,6 +25,7 @@ #include "check.h" #include "config.h" #include "ctu.h" +#include "tokenize.h" #include "vfvalue.h" #include @@ -34,7 +35,6 @@ class ErrorLogger; class Library; class Settings; class Token; -class Tokenizer; namespace tinyxml2 { class XMLElement; @@ -56,8 +56,8 @@ class CPPCHECKLIB CheckNullPointer : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckNullPointer checkNullPointer(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckNullPointer checkNullPointer(&tokenizer, tokenizer.getSettings(), errorLogger); checkNullPointer.nullPointer(); checkNullPointer.arithmetic(); checkNullPointer.nullConstantDereference(); diff --git a/lib/checkother.h b/lib/checkother.h index 747f1e63857..b38c82e2cb8 100644 --- a/lib/checkother.h +++ b/lib/checkother.h @@ -25,6 +25,7 @@ #include "check.h" #include "config.h" #include "errortypes.h" +#include "tokenize.h" #include #include @@ -35,7 +36,6 @@ namespace ValueFlow { class Settings; class Token; -class Tokenizer; class Function; class Variable; class ErrorLogger; @@ -56,8 +56,8 @@ class CPPCHECKLIB CheckOther : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckOther checkOther(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckOther checkOther(&tokenizer, tokenizer.getSettings(), errorLogger); // Checks checkOther.warningOldStylePointerCast(); diff --git a/lib/checkpostfixoperator.h b/lib/checkpostfixoperator.h index 96aeec74578..500a38293f1 100644 --- a/lib/checkpostfixoperator.h +++ b/lib/checkpostfixoperator.h @@ -48,11 +48,11 @@ class CPPCHECKLIB CheckPostfixOperator : public Check { CheckPostfixOperator(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - if (tokenizer->isC()) + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (tokenizer.isC()) return; - CheckPostfixOperator checkPostfixOperator(tokenizer, settings, errorLogger); + CheckPostfixOperator checkPostfixOperator(&tokenizer, tokenizer.getSettings(), errorLogger); checkPostfixOperator.postfixOperator(); } diff --git a/lib/checksizeof.h b/lib/checksizeof.h index ad853c619dd..f47863c582c 100644 --- a/lib/checksizeof.h +++ b/lib/checksizeof.h @@ -24,13 +24,13 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include class ErrorLogger; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -48,8 +48,8 @@ class CPPCHECKLIB CheckSizeof : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer* tokenizer, const Settings* settings, ErrorLogger* errorLogger) override { - CheckSizeof checkSizeof(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer& tokenizer, ErrorLogger* errorLogger) override { + CheckSizeof checkSizeof(&tokenizer, tokenizer.getSettings(), errorLogger); // Checks checkSizeof.sizeofsizeof(); diff --git a/lib/checkstl.h b/lib/checkstl.h index 0fd1dac0a4a..8ec207cfd1d 100644 --- a/lib/checkstl.h +++ b/lib/checkstl.h @@ -52,12 +52,12 @@ class CPPCHECKLIB CheckStl : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** run checks, the token list is not simplified */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - if (!tokenizer->isCPP()) { + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + if (!tokenizer.isCPP()) { return; } - CheckStl checkStl(tokenizer, settings, errorLogger); + CheckStl checkStl(&tokenizer, tokenizer.getSettings(), errorLogger); checkStl.erase(); checkStl.if_find(); checkStl.checkFindInsert(); diff --git a/lib/checkstring.h b/lib/checkstring.h index 94826c25fc0..c5cf999c3df 100644 --- a/lib/checkstring.h +++ b/lib/checkstring.h @@ -24,13 +24,13 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include class ErrorLogger; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -48,8 +48,8 @@ class CPPCHECKLIB CheckString : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckString checkString(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckString checkString(&tokenizer, tokenizer.getSettings(), errorLogger); // Checks checkString.strPlusChar(); diff --git a/lib/checktype.h b/lib/checktype.h index e403bf16dd0..c174691f6dc 100644 --- a/lib/checktype.h +++ b/lib/checktype.h @@ -24,6 +24,7 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include "vfvalue.h" #include @@ -32,7 +33,6 @@ class ErrorLogger; class Settings; class Token; -class Tokenizer; class ValueType; /// @addtogroup Checks @@ -51,9 +51,9 @@ class CPPCHECKLIB CheckType : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { // These are not "simplified" because casts can't be ignored - CheckType checkType(tokenizer, settings, errorLogger); + CheckType checkType(&tokenizer, tokenizer.getSettings(), errorLogger); checkType.checkTooBigBitwiseShift(); checkType.checkIntegerOverflow(); checkType.checkSignConversion(); diff --git a/lib/checkuninitvar.h b/lib/checkuninitvar.h index fbb645e07ca..ea9e75ed7d8 100644 --- a/lib/checkuninitvar.h +++ b/lib/checkuninitvar.h @@ -27,6 +27,7 @@ #include "ctu.h" #include "mathlib.h" #include "errortypes.h" +#include "tokenize.h" #include "vfvalue.h" #include @@ -36,7 +37,6 @@ class Scope; class Token; -class Tokenizer; class Variable; class ErrorLogger; class Settings; @@ -69,8 +69,8 @@ class CPPCHECKLIB CheckUninitVar : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckUninitVar checkUninitVar(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckUninitVar checkUninitVar(&tokenizer, tokenizer.getSettings(), errorLogger); checkUninitVar.valueFlowUninit(); checkUninitVar.check(); } diff --git a/lib/checkunusedfunctions.h b/lib/checkunusedfunctions.h index af008a17bd6..e0e58cf5b54 100644 --- a/lib/checkunusedfunctions.h +++ b/lib/checkunusedfunctions.h @@ -84,7 +84,7 @@ class CPPCHECKLIB CheckUnusedFunctions : public Check { CheckUnusedFunctions::unusedFunctionError(errorLogger, emptyString, 0, "funcName"); } - void runChecks(const Tokenizer * /*tokenizer*/, const Settings * /*settings*/, ErrorLogger * /*errorLogger*/) override {} + void runChecks(const Tokenizer & /*tokenizer*/, ErrorLogger * /*errorLogger*/) override {} /** * Dummy implementation, just to provide error for --errorlist diff --git a/lib/checkunusedvar.h b/lib/checkunusedvar.h index 743a732ba42..843704f204d 100644 --- a/lib/checkunusedvar.h +++ b/lib/checkunusedvar.h @@ -23,6 +23,7 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include #include @@ -32,7 +33,6 @@ class ErrorLogger; class Scope; class Settings; class Token; -class Tokenizer; class Type; class Variables; class Variable; @@ -54,8 +54,8 @@ class CPPCHECKLIB CheckUnusedVar : public Check { : Check(myName(), tokenizer, settings, errorLogger) {} /** @brief Run checks against the normal token list */ - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckUnusedVar checkUnusedVar(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckUnusedVar checkUnusedVar(&tokenizer, tokenizer.getSettings(), errorLogger); // Coding style checks checkUnusedVar.checkStructMemberUsage(); diff --git a/lib/checkvaarg.h b/lib/checkvaarg.h index de8dd3b2239..cd509e0d0d7 100644 --- a/lib/checkvaarg.h +++ b/lib/checkvaarg.h @@ -24,13 +24,13 @@ #include "check.h" #include "config.h" +#include "tokenize.h" #include class ErrorLogger; class Settings; class Token; -class Tokenizer; /// @addtogroup Checks /// @{ @@ -46,8 +46,8 @@ class CPPCHECKLIB CheckVaarg : public Check { CheckVaarg(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : Check(myName(), tokenizer, settings, errorLogger) {} - void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) override { - CheckVaarg check(tokenizer, settings, errorLogger); + void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) override { + CheckVaarg check(&tokenizer, tokenizer.getSettings(), errorLogger); check.va_start_argument(); check.va_list_usage(); } diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 074e5ce71ca..4fe75321e10 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1096,7 +1096,7 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer) continue; Timer timerRunChecks(check->name() + "::runChecks", mSettings.showtime, &s_timerResults); - check->runChecks(&tokenizer, &mSettings, this); + check->runChecks(tokenizer, this); } if (mSettings.clang) diff --git a/test/fixture.h b/test/fixture.h index a09a193f0e6..6f5d26cf613 100644 --- a/test/fixture.h +++ b/test/fixture.h @@ -124,10 +124,10 @@ class TestFixture : public ErrorLogger { } template - static void runChecks(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) + static void runChecks(const Tokenizer &tokenizer, ErrorLogger *errorLogger) { T& check = getCheck(); - check.runChecks(tokenizer, settings, errorLogger); + check.runChecks(tokenizer, errorLogger); } class SettingsBuilder diff --git a/test/testassert.cpp b/test/testassert.cpp index 491d9a183ca..589b5364123 100644 --- a/test/testassert.cpp +++ b/test/testassert.cpp @@ -44,7 +44,7 @@ class TestAssert : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override { diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 0ee1d84132a..7d244adc729 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -44,7 +44,7 @@ class TestAutoVariables : public TestFixture { std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void run() override { diff --git a/test/testbool.cpp b/test/testbool.cpp index 3f311183d2d..17115bd9e50 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -87,7 +87,7 @@ class TestBool : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check... - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } diff --git a/test/testboost.cpp b/test/testboost.cpp index 39dfeff4100..fd6d8ef4b6a 100644 --- a/test/testboost.cpp +++ b/test/testboost.cpp @@ -47,7 +47,7 @@ class TestBoost : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void BoostForeachContainerModification() { diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 862add41981..acc9f2f5e78 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -56,7 +56,7 @@ class TestBufferOverrun : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check for buffer overruns.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void check_(const char* file, int line, const char code[], const Settings &settings, const char filename[] = "test.cpp") { @@ -68,7 +68,7 @@ class TestBufferOverrun : public TestFixture { errout.str(""); // Check for buffer overruns.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void checkP(const char code[], const char* filename = "test.cpp") @@ -95,7 +95,7 @@ class TestBufferOverrun : public TestFixture { tokenizer.simplifyTokens1(""); // Check for buffer overruns.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override { diff --git a/test/testcondition.cpp b/test/testcondition.cpp index 27c182c2603..dc2a346d036 100644 --- a/test/testcondition.cpp +++ b/test/testcondition.cpp @@ -150,7 +150,7 @@ class TestCondition : public TestFixture { tokenizer.simplifyTokens1(""); // Run checks.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void check(const char code[], const char* filename = "test.cpp", bool inconclusive = false) { @@ -554,7 +554,7 @@ class TestCondition : public TestFixture { std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void overlappingElseIfCondition() { diff --git a/test/testexceptionsafety.cpp b/test/testexceptionsafety.cpp index 97df8227547..76291ee8541 100644 --- a/test/testexceptionsafety.cpp +++ b/test/testexceptionsafety.cpp @@ -71,7 +71,7 @@ class TestExceptionSafety : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check char variable usage.. - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void destructors() { diff --git a/test/testfunctions.cpp b/test/testfunctions.cpp index 9d895dcecba..13589ac1386 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -127,7 +127,7 @@ class TestFunctions : public TestFixture { errout << errline << "\n"; } - runChecks(&tokenizer, settings_, this); + runChecks(tokenizer, this); } void prohibitedFunctions_posix() { diff --git a/test/testgarbage.cpp b/test/testgarbage.cpp index 83219bacf76..440c4e90e27 100644 --- a/test/testgarbage.cpp +++ b/test/testgarbage.cpp @@ -296,7 +296,7 @@ class TestGarbage : public TestFixture { // call all "runChecks" in all registered Check classes for (std::list::const_iterator it = Check::instances().cbegin(); it != Check::instances().cend(); ++it) { - (*it)->runChecks(&tokenizer, &settings, this); + (*it)->runChecks(tokenizer, this); } return tokenizer.tokens()->stringifyList(false, false, false, true, false, nullptr, nullptr); diff --git a/test/testinternal.cpp b/test/testinternal.cpp index 4092e45e9c6..8887b701f06 100644 --- a/test/testinternal.cpp +++ b/test/testinternal.cpp @@ -59,7 +59,7 @@ class TestInternal : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void simplePatternInTokenMatch() { diff --git a/test/testleakautovar.cpp b/test/testleakautovar.cpp index c5e2dca4fbd..183fefa5859 100644 --- a/test/testleakautovar.cpp +++ b/test/testleakautovar.cpp @@ -242,7 +242,7 @@ class TestLeakAutoVar : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, cpp ? "test.cpp" : "test.c"), file, line); // Check for leaks.. - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void check_(const char* file, int line, const char code[], const Settings & s) { @@ -257,7 +257,7 @@ class TestLeakAutoVar : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check for leaks.. - runChecks(&tokenizer, &settings0, this); + runChecks(tokenizer, this); } void assign1() { @@ -2847,7 +2847,7 @@ class TestLeakAutoVarRecursiveCountLimit : public TestFixture { tokenizer.simplifyTokens1(""); // Check for leaks.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override { @@ -2893,7 +2893,7 @@ class TestLeakAutoVarStrcpy : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check for leaks.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override { @@ -2953,7 +2953,7 @@ class TestLeakAutoVarWindows : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.c"), file, line); // Check for leaks.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override { diff --git a/test/testnullpointer.cpp b/test/testnullpointer.cpp index 51d37e6eff9..7da0da44cf7 100644 --- a/test/testnullpointer.cpp +++ b/test/testnullpointer.cpp @@ -189,7 +189,7 @@ class TestNullPointer : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check for null pointer dereferences.. - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void checkP(const char code[]) { @@ -214,7 +214,7 @@ class TestNullPointer : public TestFixture { tokenizer.simplifyTokens1(""); // Check for null pointer dereferences.. - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } diff --git a/test/testother.cpp b/test/testother.cpp index eb1b300122f..1b239ddf5fd 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -317,7 +317,7 @@ class TestOther : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename ? filename : "test.cpp"), file, line); // Check.. - runChecks(&tokenizer, settings, this); + runChecks(tokenizer, this); (void)runSimpleChecks; // TODO Remove this } @@ -358,7 +358,7 @@ class TestOther : public TestFixture { tokenizer.simplifyTokens1(""); // Check.. - runChecks(&tokenizer, settings, this); + runChecks(tokenizer, this); } void checkInterlockedDecrement(const char code[]) { diff --git a/test/testsizeof.cpp b/test/testsizeof.cpp index e16e4db6c72..e35c0d153b8 100644 --- a/test/testsizeof.cpp +++ b/test/testsizeof.cpp @@ -62,7 +62,7 @@ class TestSizeof : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check... - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void checkP(const char code[]) { @@ -85,7 +85,7 @@ class TestSizeof : public TestFixture { tokenizer.simplifyTokens1(""); // Check... - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void sizeofsizeof() { diff --git a/test/teststl.cpp b/test/teststl.cpp index bb9f3ad7b57..5b1b7a65fd8 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -188,7 +188,7 @@ class TestStl : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void check_(const char* file, int line, const std::string& code, const bool inconclusive = false) { @@ -206,7 +206,7 @@ class TestStl : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void outOfBounds() { diff --git a/test/teststring.cpp b/test/teststring.cpp index 24a4f1c3a54..b72de9c9969 100644 --- a/test/teststring.cpp +++ b/test/teststring.cpp @@ -71,7 +71,7 @@ class TestString : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check char variable usage.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void stringLiteralWrite() { diff --git a/test/testtype.cpp b/test/testtype.cpp index 3d84c618024..65f26d5c9f1 100644 --- a/test/testtype.cpp +++ b/test/testtype.cpp @@ -56,7 +56,7 @@ class TestType : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check.. - runChecks(&tokenizer, &settings1, this); + runChecks(tokenizer, this); } void checkTooBigShift_Unix32() { diff --git a/test/testvaarg.cpp b/test/testvaarg.cpp index d160336f300..90769ee8387 100644 --- a/test/testvaarg.cpp +++ b/test/testvaarg.cpp @@ -43,7 +43,7 @@ class TestVaarg : public TestFixture { ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override {