diff --git a/Makefile b/Makefile index aec9288fe..d1256debd 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 8e8e76463..266341600 100644 --- a/lib/check.h +++ b/lib/check.h @@ -77,7 +77,7 @@ public: 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 67f10c42e..e79acbd85 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 @@ public: : 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 78ce0905c..e2455a921 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 @@ public: : 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 ea70beba3..b02a0d0a6 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 @@ public: : 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 d6213a58d..94d1714a9 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 @@ public: : 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 a232ad22c..1ea25b285 100644 --- a/lib/checkboost.h +++ b/lib/checkboost.h @@ -47,11 +47,11 @@ public: : 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 d402330dd..16e3a7532 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 @@ public: 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 ffb94d3a2..3134ebf15 100644 --- a/lib/checkclass.h +++ b/lib/checkclass.h @@ -59,11 +59,11 @@ public: 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 57e09c50b..948dd7be2 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 @@ public: 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 6f90b881c..f70573c4b 100644 --- a/lib/checkexceptionsafety.h +++ b/lib/checkexceptionsafety.h @@ -53,11 +53,11 @@ public: 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 bff40c2eb..05502a870 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 @@ public: : 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 4d44204de..e827d3c4e 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 @@ public: 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 29c3344d5..a1fdcd106 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 @@ public: : 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 1d7cb5fb3..06243f513 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 @@ public: 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 48144668f..435530a8f 100644 --- a/lib/checkmemoryleak.h +++ b/lib/checkmemoryleak.h @@ -172,8 +172,8 @@ public: 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 @@ public: 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 @@ public: 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 @@ public: 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 6751e00bc..e3b7c2714 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 @@ public: : 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 747f1e638..b38c82e2c 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 @@ public: : 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 96aeec745..500a38293 100644 --- a/lib/checkpostfixoperator.h +++ b/lib/checkpostfixoperator.h @@ -48,11 +48,11 @@ public: 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 ad853c619..f47863c58 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 @@ public: : 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 0fd1dac0a..8ec207cfd 100644 --- a/lib/checkstl.h +++ b/lib/checkstl.h @@ -52,12 +52,12 @@ public: : 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 94826c25f..c5cf999c3 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 @@ public: : 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 e403bf16d..c174691f6 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 @@ public: : 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 fbb645e07..ea9e75ed7 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 @@ public: : 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 af008a17b..e0e58cf5b 100644 --- a/lib/checkunusedfunctions.h +++ b/lib/checkunusedfunctions.h @@ -84,7 +84,7 @@ private: 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 743a732ba..843704f20 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 @@ public: : 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 de8dd3b22..cd509e0d0 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 @@ public: 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 11b4db07c..5ad700443 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1095,7 +1095,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 24633132d..050e7c91e 100644 --- a/test/fixture.h +++ b/test/fixture.h @@ -125,10 +125,10 @@ protected: } 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 491d9a183..589b53641 100644 --- a/test/testassert.cpp +++ b/test/testassert.cpp @@ -44,7 +44,7 @@ private: 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 159782782..aed96118c 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -44,7 +44,7 @@ private: 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 3f311183d..17115bd9e 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -87,7 +87,7 @@ private: 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 39dfeff41..fd6d8ef4b 100644 --- a/test/testboost.cpp +++ b/test/testboost.cpp @@ -47,7 +47,7 @@ private: 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 17a0898bd..b5361335b 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -56,7 +56,7 @@ private: 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 @@ private: 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 @@ private: 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 98fef8280..b60be8b83 100644 --- a/test/testcondition.cpp +++ b/test/testcondition.cpp @@ -150,7 +150,7 @@ private: 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 @@ private: 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 97df82275..76291ee85 100644 --- a/test/testexceptionsafety.cpp +++ b/test/testexceptionsafety.cpp @@ -71,7 +71,7 @@ private: 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 9d895dcec..13589ac13 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -127,7 +127,7 @@ private: errout << errline << "\n"; } - runChecks(&tokenizer, settings_, this); + runChecks(tokenizer, this); } void prohibitedFunctions_posix() { diff --git a/test/testgarbage.cpp b/test/testgarbage.cpp index d2ad9d0a4..d0947e3e1 100644 --- a/test/testgarbage.cpp +++ b/test/testgarbage.cpp @@ -296,7 +296,7 @@ private: // 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 4092e45e9..8887b701f 100644 --- a/test/testinternal.cpp +++ b/test/testinternal.cpp @@ -59,7 +59,7 @@ private: 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 c5e2dca4f..183fefa58 100644 --- a/test/testleakautovar.cpp +++ b/test/testleakautovar.cpp @@ -242,7 +242,7 @@ private: 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 @@ private: 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 @@ private: tokenizer.simplifyTokens1(""); // Check for leaks.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override { @@ -2893,7 +2893,7 @@ private: 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 @@ private: 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 51d37e6ef..7da0da44c 100644 --- a/test/testnullpointer.cpp +++ b/test/testnullpointer.cpp @@ -189,7 +189,7 @@ private: 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 @@ private: 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 3e072aed4..fe87e9d28 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -317,7 +317,7 @@ private: 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 @@ private: 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 e16e4db6c..e35c0d153 100644 --- a/test/testsizeof.cpp +++ b/test/testsizeof.cpp @@ -62,7 +62,7 @@ private: 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 @@ private: tokenizer.simplifyTokens1(""); // Check... - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void sizeofsizeof() { diff --git a/test/teststl.cpp b/test/teststl.cpp index bb9f3ad7b..5b1b7a65f 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -188,7 +188,7 @@ private: 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 @@ private: 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 ca734d352..4829c56c8 100644 --- a/test/teststring.cpp +++ b/test/teststring.cpp @@ -71,7 +71,7 @@ private: 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 3d84c6180..65f26d5c9 100644 --- a/test/testtype.cpp +++ b/test/testtype.cpp @@ -56,7 +56,7 @@ private: 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 d160336f3..90769ee83 100644 --- a/test/testvaarg.cpp +++ b/test/testvaarg.cpp @@ -43,7 +43,7 @@ private: ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check.. - runChecks(&tokenizer, &settings, this); + runChecks(tokenizer, this); } void run() override {