From 36b62ad9f6ae6aa46f0dbc4766df1dea65d24702 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 16 Feb 2023 13:34:06 +0100 Subject: [PATCH 01/18] TestFixture: immediately bail out when library could not be loaded --- test/fixture.cpp | 12 ------------ test/fixture.h | 10 +--------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/test/fixture.cpp b/test/fixture.cpp index 5e4289c7f9b..9ce8d8fac17 100644 --- a/test/fixture.cpp +++ b/test/fixture.cpp @@ -74,7 +74,6 @@ unsigned int TestFixture::countTests; std::size_t TestFixture::fails_counter = 0; std::size_t TestFixture::todos_counter = 0; std::size_t TestFixture::succeeded_todos_counter = 0; -std::set TestFixture::missingLibs; TestFixture::TestFixture(const char * const _name) : mVerbose(false), @@ -284,11 +283,6 @@ void TestFixture::assertNoThrowFail(const char * const filename, const unsigned } -void TestFixture::complainMissingLib(const char * const libname) -{ - missingLibs.insert(libname); -} - void TestFixture::printHelp() { std::cout << "Testrunner - run Cppcheck tests\n" @@ -372,12 +366,6 @@ std::size_t TestFixture::runTests(const options& args) std::cerr << "Tests failed: " << fails_counter << std::endl << std::endl; std::cerr << errmsg.str(); - if (!missingLibs.empty()) { - std::cerr << "Missing libraries: "; - for (const std::string & missingLib : missingLibs) - std::cerr << missingLib << " "; - std::cerr << std::endl << std::endl; - } std::cerr.flush(); return fails_counter + succeeded_todos_counter; } diff --git a/test/fixture.h b/test/fixture.h index d37a949d44a..eb2ee04162f 100644 --- a/test/fixture.h +++ b/test/fixture.h @@ -43,7 +43,6 @@ class TestFixture : public ErrorLogger { static std::size_t fails_counter; static std::size_t todos_counter; static std::size_t succeeded_todos_counter; - static std::set missingLibs; bool mVerbose; std::string mTemplateFormat; std::string mTemplateLocation; @@ -95,7 +94,6 @@ class TestFixture : public ErrorLogger { void assertThrow(const char * const filename, const unsigned int linenr) const; void assertThrowFail(const char * const filename, const unsigned int linenr) const; void assertNoThrowFail(const char * const filename, const unsigned int linenr) const; - static void complainMissingLib(const char * const libname); static std::string deleteLineNumber(const std::string &message); void setVerbose(bool v) { @@ -165,13 +163,7 @@ extern std::ostringstream output; #define EXPECT_EQ( EXPECTED, ACTUAL ) assertEquals(__FILE__, __LINE__, EXPECTED, ACTUAL) #define REGISTER_TEST( CLASSNAME ) namespace { CLASSNAME instance_ ## CLASSNAME; } -#define LOAD_LIB_2(LIB, NAME) \ - do { \ - if (((LIB).load(exename.c_str(), NAME).errorcode != Library::ErrorCode::OK)) { \ - complainMissingLib(NAME); \ - abort(); \ - } \ - } while (false) +#define LOAD_LIB_2( LIB, NAME ) do { if (((LIB).load(exename.c_str(), NAME).errorcode != Library::ErrorCode::OK)) throw std::runtime_error("library '" + std::string(NAME) + "' not found"); } while (false) #define PLATFORM( P, T ) do { std::string errstr; assertEquals(__FILE__, __LINE__, true, P.set(cppcheck::Platform::toString(T), errstr, {exename}), errstr); } while (false) From 944cce52204ef4a6c9537fcc3397c687e1214640 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 16 Feb 2023 13:36:27 +0100 Subject: [PATCH 02/18] TestFixture: added `SettingsBuilder` to allow inline initialization of objects --- Makefile | 20 +++++++------- test/fixture.cpp | 13 +++++++++ test/fixture.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 92 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 0590c4910d7..0b2ed9db379 100644 --- a/Makefile +++ b/Makefile @@ -667,13 +667,13 @@ cli/stacktrace.o: cli/stacktrace.cpp cli/stacktrace.h lib/config.h lib/utils.h cli/threadexecutor.o: cli/threadexecutor.cpp cli/cppcheckexecutor.h cli/executor.h cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ cli/threadexecutor.cpp -test/fixture.o: test/fixture.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h test/fixture.h test/options.h test/redirect.h +test/fixture.o: test/fixture.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/options.h test/redirect.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/fixture.cpp test/helpers.o: test/helpers.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errortypes.h lib/mathlib.h lib/path.h lib/preprocessor.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/helpers.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/helpers.cpp -test/main.o: test/main.cpp externals/simplecpp/simplecpp.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/preprocessor.h lib/suppressions.h test/fixture.h test/options.h +test/main.o: test/main.cpp externals/simplecpp/simplecpp.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/options.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/main.cpp test/options.o: test/options.cpp test/options.h @@ -682,7 +682,7 @@ test/options.o: test/options.cpp test/options.h test/test64bit.o: test/test64bit.cpp lib/check.h lib/check64bit.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/test64bit.cpp -test/testanalyzerinformation.o: test/testanalyzerinformation.cpp lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/platform.h lib/suppressions.h lib/utils.h test/fixture.h +test/testanalyzerinformation.o: test/testanalyzerinformation.cpp lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testanalyzerinformation.cpp test/testassert.o: test/testassert.cpp lib/check.h lib/checkassert.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h @@ -733,7 +733,7 @@ test/testerrorlogger.o: test/testerrorlogger.cpp externals/tinyxml2/tinyxml2.h l test/testexceptionsafety.o: test/testexceptionsafety.cpp lib/check.h lib/checkexceptionsafety.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testexceptionsafety.cpp -test/testfilelister.o: test/testfilelister.cpp cli/filelister.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/pathmatch.h lib/suppressions.h test/fixture.h +test/testfilelister.o: test/testfilelister.cpp cli/filelister.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testfilelister.cpp test/testfunctions.o: test/testfunctions.cpp lib/check.h lib/checkfunctions.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h @@ -760,7 +760,7 @@ test/testleakautovar.o: test/testleakautovar.cpp externals/simplecpp/simplecpp.h test/testlibrary.o: test/testlibrary.cpp externals/tinyxml2/tinyxml2.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h test/helpers.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testlibrary.cpp -test/testmathlib.o: test/testmathlib.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/mathlib.h lib/suppressions.h test/fixture.h +test/testmathlib.o: test/testmathlib.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testmathlib.cpp test/testmemleak.o: test/testmemleak.cpp lib/check.h lib/checkmemoryleak.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h @@ -769,19 +769,19 @@ test/testmemleak.o: test/testmemleak.cpp lib/check.h lib/checkmemoryleak.h lib/c test/testnullpointer.o: test/testnullpointer.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checknullpointer.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testnullpointer.cpp -test/testoptions.o: test/testoptions.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h test/fixture.h test/options.h +test/testoptions.o: test/testoptions.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/options.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testoptions.cpp test/testother.o: test/testother.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkother.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testother.cpp -test/testpath.o: test/testpath.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/path.h lib/suppressions.h test/fixture.h +test/testpath.o: test/testpath.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testpath.cpp -test/testpathmatch.o: test/testpathmatch.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/pathmatch.h lib/suppressions.h test/fixture.h +test/testpathmatch.o: test/testpathmatch.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testpathmatch.cpp -test/testplatform.o: test/testplatform.cpp externals/tinyxml2/tinyxml2.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/platform.h lib/suppressions.h test/fixture.h +test/testplatform.o: test/testplatform.cpp externals/tinyxml2/tinyxml2.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testplatform.cpp test/testpostfixoperator.o: test/testpostfixoperator.cpp lib/check.h lib/checkpostfixoperator.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h @@ -832,7 +832,7 @@ test/testsymboldatabase.o: test/testsymboldatabase.cpp lib/check.h lib/color.h l test/testthreadexecutor.o: test/testthreadexecutor.cpp cli/executor.h cli/threadexecutor.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h test/redirect.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testthreadexecutor.cpp -test/testtimer.o: test/testtimer.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h lib/timer.h test/fixture.h +test/testtimer.o: test/testtimer.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testtimer.cpp test/testtoken.o: test/testtoken.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h test/helpers.h diff --git a/test/fixture.cpp b/test/fixture.cpp index 9ce8d8fac17..1a202bae9c3 100644 --- a/test/fixture.cpp +++ b/test/fixture.cpp @@ -20,6 +20,7 @@ #include "errortypes.h" #include "options.h" +#include "path.h" #include "redirect.h" #include @@ -397,3 +398,15 @@ void TestFixture::setTemplateFormat(const std::string &templateFormat) mTemplateLocation = ""; } } + +TestFixture::SettingsBuilder& TestFixture::SettingsBuilder::library(const char lib[]) { + LOAD_LIB_2_EXE(settings.library, lib, fixture.exename.c_str()); + // strip extension + std::string lib_s(lib); + const std::string ext(".cfg"); + const auto pos = lib_s.find(ext); + if (pos != std::string::npos) + lib_s.erase(pos, ext.size()); + settings.libraries.emplace_back(lib_s); + return *this; +} diff --git a/test/fixture.h b/test/fixture.h index eb2ee04162f..9af1d7d4c9d 100644 --- a/test/fixture.h +++ b/test/fixture.h @@ -24,6 +24,7 @@ #include "color.h" #include "config.h" #include "errorlogger.h" +#include "settings.h" #include #include @@ -125,6 +126,72 @@ class TestFixture : public ErrorLogger { T& check = getCheck(); check.runChecks(tokenizer, settings, errorLogger); } + + // TODO: bail out on redundant settings + class SettingsBuilder + { + public: + explicit SettingsBuilder(const TestFixture &fixture) : fixture(fixture) {} + SettingsBuilder(const TestFixture &fixture, Settings settings) : fixture(fixture), settings(std::move(settings)) {} + + SettingsBuilder& severity(Severity::SeverityType sev) { + settings.severity.enable(sev); + return *this; + } + + SettingsBuilder& certainty(Certainty cert, bool b = true) { + settings.certainty.setEnabled(cert, b); + return *this; + } + + SettingsBuilder& clang() { + settings.clang = true; + return *this; + } + + SettingsBuilder& checkLibrary() { + settings.checkLibrary = true; + return *this; + } + + SettingsBuilder& checkUnusedTemplates() { + settings.checkUnusedTemplates = true; + return *this; + } + + SettingsBuilder& debugwarnings(bool b = true) { + settings.debugwarnings = b; + return *this; + } + + SettingsBuilder& c(Standards::cstd_t std) { + settings.standards.c = std; + return *this; + } + + SettingsBuilder& cpp(Standards::cppstd_t std) { + settings.standards.cpp = std; + return *this; + } + + SettingsBuilder& library(const char lib[]); + + Settings build() { + return std::move(settings); + } + private: + const TestFixture &fixture; + Settings settings; + }; + + SettingsBuilder settingsBuilder() const { + return SettingsBuilder(*this); + } + + SettingsBuilder settingsBuilder(Settings settings) const { + return SettingsBuilder(*this, std::move(settings)); + } + public: void reportOut(const std::string &outmsg, Color c = Color::Reset) override; void reportErr(const ErrorMessage &msg) override; @@ -163,7 +230,8 @@ extern std::ostringstream output; #define EXPECT_EQ( EXPECTED, ACTUAL ) assertEquals(__FILE__, __LINE__, EXPECTED, ACTUAL) #define REGISTER_TEST( CLASSNAME ) namespace { CLASSNAME instance_ ## CLASSNAME; } -#define LOAD_LIB_2( LIB, NAME ) do { if (((LIB).load(exename.c_str(), NAME).errorcode != Library::ErrorCode::OK)) throw std::runtime_error("library '" + std::string(NAME) + "' not found"); } while (false) +#define LOAD_LIB_2_EXE( LIB, NAME, EXE ) do { if (((LIB).load((EXE), NAME).errorcode != Library::ErrorCode::OK)) throw std::runtime_error("library '" + std::string(NAME) + "' not found"); } while (false) +#define LOAD_LIB_2( LIB, NAME ) LOAD_LIB_2_EXE(LIB, NAME, exename.c_str()) #define PLATFORM( P, T ) do { std::string errstr; assertEquals(__FILE__, __LINE__, true, P.set(cppcheck::Platform::toString(T), errstr, {exename}), errstr); } while (false) From de94a7d4a7b5779e8c21f37990c71409074f3a7a Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 16 Feb 2023 13:36:55 +0100 Subject: [PATCH 03/18] made some `Settings` objects in tests `const` --- test/testastutils.cpp | 18 +++++++++--------- test/testlibrary.cpp | 2 +- test/testsummaries.cpp | 2 +- test/testtoken.cpp | 2 +- test/testtokenlist.cpp | 7 ++++--- test/testtokenrange.cpp | 2 +- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/test/testastutils.cpp b/test/testastutils.cpp index bce65c48cce..91e44a7628d 100644 --- a/test/testastutils.cpp +++ b/test/testastutils.cpp @@ -50,7 +50,7 @@ class TestAstUtils : public TestFixture { #define findLambdaEndToken(code) findLambdaEndToken_(code, __FILE__, __LINE__) bool findLambdaEndToken_(const char code[], const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -84,7 +84,7 @@ class TestAstUtils : public TestFixture { #define findLambdaStartToken(code) findLambdaStartToken_(code, __FILE__, __LINE__) bool findLambdaStartToken_(const char code[], const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -117,7 +117,7 @@ class TestAstUtils : public TestFixture { #define isNullOperand(code) isNullOperand_(code, __FILE__, __LINE__) bool isNullOperand_(const char code[], const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -139,7 +139,7 @@ class TestAstUtils : public TestFixture { #define isReturnScope(code, offset) isReturnScope_(code, offset, __FILE__, __LINE__) bool isReturnScope_(const char code[], int offset, const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -170,7 +170,7 @@ class TestAstUtils : public TestFixture { #define isSameExpression(code, tokStr1, tokStr2) isSameExpression_(code, tokStr1, tokStr2, __FILE__, __LINE__) bool isSameExpression_(const char code[], const char tokStr1[], const char tokStr2[], const char* file, int line) { - Settings settings; + const Settings settings; Library library; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); @@ -210,7 +210,7 @@ class TestAstUtils : public TestFixture { #define isVariableChanged(code, startPattern, endPattern) isVariableChanged_(code, startPattern, endPattern, __FILE__, __LINE__) bool isVariableChanged_(const char code[], const char startPattern[], const char endPattern[], const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -240,7 +240,7 @@ class TestAstUtils : public TestFixture { #define isVariableChangedByFunctionCall(code, pattern, inconclusive) isVariableChangedByFunctionCall_(code, pattern, inconclusive, __FILE__, __LINE__) bool isVariableChangedByFunctionCall_(const char code[], const char pattern[], bool *inconclusive, const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -416,7 +416,7 @@ class TestAstUtils : public TestFixture { #define nextAfterAstRightmostLeaf(code, parentPattern, rightPattern) nextAfterAstRightmostLeaf_(code, parentPattern, rightPattern, __FILE__, __LINE__) bool nextAfterAstRightmostLeaf_(const char code[], const char parentPattern[], const char rightPattern[], const char* file, int line) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -441,7 +441,7 @@ class TestAstUtils : public TestFixture { enum class Result {False, True, Fail}; Result isUsedAsBool(const char code[], const char pattern[]) { - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); if (!tokenizer.tokenize(istr, "test.cpp")) diff --git a/test/testlibrary.cpp b/test/testlibrary.cpp index 08a4311f6f4..69e2943d3d5 100644 --- a/test/testlibrary.cpp +++ b/test/testlibrary.cpp @@ -41,7 +41,7 @@ class TestLibrary : public TestFixture { TestLibrary() : TestFixture("TestLibrary") {} private: - Settings settings; + const Settings settings; void run() override { TEST_CASE(isCompliantValidationExpression); diff --git a/test/testsummaries.cpp b/test/testsummaries.cpp index 993566152b6..cfead86fdd7 100644 --- a/test/testsummaries.cpp +++ b/test/testsummaries.cpp @@ -44,7 +44,7 @@ class TestSummaries : public TestFixture { errout.str(""); // tokenize.. - Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); diff --git a/test/testtoken.cpp b/test/testtoken.cpp index f084c1f5a67..b85fcecdfec 100644 --- a/test/testtoken.cpp +++ b/test/testtoken.cpp @@ -395,7 +395,7 @@ class TestToken : public TestFixture { void getStrSize() const { Token tok; - Settings settings; + const Settings settings; tok.str("\"\""); ASSERT_EQUALS(sizeof(""), Token::getStrSize(&tok, &settings)); diff --git a/test/testtokenlist.cpp b/test/testtokenlist.cpp index bc3ec7ab188..ee555db8bd3 100644 --- a/test/testtokenlist.cpp +++ b/test/testtokenlist.cpp @@ -30,7 +30,7 @@ class TestTokenList : public TestFixture { TestTokenList() : TestFixture("TestTokenList") {} private: - Settings settings; + const Settings settings; void run() override { TEST_CASE(testaddtoken1); @@ -49,8 +49,9 @@ class TestTokenList : public TestFixture { void testaddtoken2() { const std::string code = "0xF0000000"; - settings.platform.int_bit = 32; - TokenList tokenlist(&settings); + Settings settings1; + settings1.platform.int_bit = 32; + TokenList tokenlist(&settings1); tokenlist.addtoken(code, 1, 1, false); ASSERT_EQUALS("0xF0000000", tokenlist.front()->str()); } diff --git a/test/testtokenrange.cpp b/test/testtokenrange.cpp index 155087c8aec..2598c832847 100644 --- a/test/testtokenrange.cpp +++ b/test/testtokenrange.cpp @@ -101,7 +101,7 @@ class TestTokenRange : public TestFixture { } void scopeExample() const { - Settings settings; + const Settings settings; Tokenizer tokenizer{ &settings, nullptr }; std::istringstream sample("void a(){} void main(){ if(true){a();} }"); ASSERT(tokenizer.tokenize(sample, "test.cpp")); From 8b88e704fc4545c85e4672f5265f286578812791 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 16 Feb 2023 13:37:20 +0100 Subject: [PATCH 04/18] first round of `SettingsBuilder` usage in tests --- test/test64bit.cpp | 5 +--- test/testassert.cpp | 4 +-- test/testautovariables.cpp | 14 +++------- test/testbool.cpp | 6 +---- test/testboost.cpp | 5 +--- test/testbufferoverrun.cpp | 38 +++++++++++---------------- test/testcharvar.cpp | 4 +-- test/testclangimport.cpp | 6 ++--- test/testclass.cpp | 35 +++++++++---------------- test/testcondition.cpp | 16 +++--------- test/testconstructors.cpp | 24 +++++------------ test/testfunctions.cpp | 14 ++-------- test/testincompletestatement.cpp | 10 +++----- test/testio.cpp | 24 ++++++++--------- test/testleakautovar.cpp | 16 +++--------- test/testmemleak.cpp | 39 +++++----------------------- test/testnullpointer.cpp | 19 ++++++-------- test/testpostfixoperator.cpp | 4 +-- test/testpreprocessor.cpp | 6 ++--- test/testsimplifytemplate.cpp | 14 ++++------ test/testsimplifytokens.cpp | 36 +++++++++----------------- test/testsimplifytypedef.cpp | 29 ++++++++------------- test/testsimplifyusing.cpp | 22 +++++----------- test/testsizeof.cpp | 6 +---- test/teststl.cpp | 15 +++-------- test/teststring.cpp | 5 +--- test/testsymboldatabase.cpp | 16 ++++-------- test/testthreadexecutor.cpp | 13 +++++----- test/testtokenize.cpp | 44 ++++++++++---------------------- test/testtype.cpp | 9 +++---- test/testuninitvar.cpp | 11 ++++---- test/testunusedfunctions.cpp | 4 +-- test/testunusedprivfunc.cpp | 4 +-- test/testunusedvar.cpp | 6 +---- test/testvaarg.cpp | 4 +-- test/testvalueflow.cpp | 9 +++---- test/testvarid.cpp | 5 +--- 37 files changed, 166 insertions(+), 375 deletions(-) diff --git a/test/test64bit.cpp b/test/test64bit.cpp index 0cd7f51cc52..4a2a5461342 100644 --- a/test/test64bit.cpp +++ b/test/test64bit.cpp @@ -30,11 +30,9 @@ class Test64BitPortability : public TestFixture { Test64BitPortability() : TestFixture("Test64BitPortability") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::portability).library("std.cfg").build(); void run() override { - settings.severity.enable(Severity::portability); - TEST_CASE(novardecl); TEST_CASE(functionpar); TEST_CASE(structmember); @@ -51,7 +49,6 @@ class Test64BitPortability : public TestFixture { // Tokenize.. Tokenizer tokenizer(&settings, this); - LOAD_LIB_2(settings.library, "std.cfg"); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); diff --git a/test/testassert.cpp b/test/testassert.cpp index 5cc1d83b1c6..8c18720ed04 100644 --- a/test/testassert.cpp +++ b/test/testassert.cpp @@ -32,7 +32,7 @@ class TestAssert : public TestFixture { TestAssert() : TestFixture("TestAssert") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).build(); #define check(...) check_(__FILE__, __LINE__, __VA_ARGS__) void check_(const char* file, int line, const char code[], const char *filename = "test.cpp") { @@ -49,8 +49,6 @@ class TestAssert : public TestFixture { } void run() override { - settings.severity.enable(Severity::warning); - TEST_CASE(assignmentInAssert); TEST_CASE(functionCallInAssert); TEST_CASE(memberFunctionCallInAssert); diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 9aef983538d..9f2dd2105ef 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -32,30 +32,24 @@ class TestAutoVariables : public TestFixture { TestAutoVariables() : TestFixture("TestAutoVariables") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).library("std.cfg").library("qt.cfg").build(); #define check(...) check_(__FILE__, __LINE__, __VA_ARGS__) void check_(const char* file, int line, const char code[], bool inconclusive = true, const char* filename = "test.cpp") { // Clear the error buffer.. errout.str(""); - settings.certainty.setEnabled(Certainty::inconclusive, inconclusive); + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, inconclusive).build(); // Tokenize.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); - runChecks(&tokenizer, &settings, this); + runChecks(&tokenizer, &settings1, this); } void run() override { - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::style); - LOAD_LIB_2(settings.library, "std.cfg"); - LOAD_LIB_2(settings.library, "qt.cfg"); - settings.libraries.emplace_back("qt"); - TEST_CASE(testautovar1); TEST_CASE(testautovar2); TEST_CASE(testautovar3); // ticket #2925 diff --git a/test/testbool.cpp b/test/testbool.cpp index cd5af1b6617..2e3b2106754 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -31,13 +31,9 @@ class TestBool : public TestFixture { TestBool() : TestFixture("TestBool") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::style).severity(Severity::warning).certainty(Certainty::inconclusive).build(); void run() override { - settings.severity.enable(Severity::style); - settings.severity.enable(Severity::warning); - settings.certainty.enable(Certainty::inconclusive); - TEST_CASE(bitwiseOnBoolean); // if (bool & bool) TEST_CASE(incrementBoolean); TEST_CASE(assignBoolToPointer); diff --git a/test/testboost.cpp b/test/testboost.cpp index f2b919dcdc5..e82feb4f638 100644 --- a/test/testboost.cpp +++ b/test/testboost.cpp @@ -31,12 +31,9 @@ class TestBoost : public TestFixture { TestBoost() : TestFixture("TestBoost") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::style).severity(Severity::performance).build(); void run() override { - settings.severity.enable(Severity::style); - settings.severity.enable(Severity::performance); - TEST_CASE(BoostForeachContainerModification); } diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index e0b1aa5c98d..3b17fd93b65 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -42,22 +42,22 @@ class TestBufferOverrun : public TestFixture { TestBufferOverrun() : TestFixture("TestBufferOverrun") {} private: - Settings settings0; + Settings settings0 = settingsBuilder().library("std.cfg").severity(Severity::warning).severity(Severity::style).severity(Severity::portability).build(); #define check(...) check_(__FILE__, __LINE__, __VA_ARGS__) void check_(const char* file, int line, const char code[], const char filename[] = "test.cpp") { // Clear the error buffer.. errout.str(""); - settings0.certainty.enable(Certainty::inconclusive); + const Settings settings = settingsBuilder(settings0).certainty(Certainty::inconclusive).build(); // Tokenize.. - Tokenizer tokenizer(&settings0, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check for buffer overruns.. - runChecks(&tokenizer, &settings0, this); + runChecks(&tokenizer, &settings, this); } void check_(const char* file, int line, const char code[], const Settings &settings, const char filename[] = "test.cpp") { @@ -77,14 +77,14 @@ class TestBufferOverrun : public TestFixture { // Clear the error buffer.. errout.str(""); - Settings* settings = &settings0; - settings->severity.enable(Severity::style); - settings->severity.enable(Severity::warning); - settings->severity.enable(Severity::portability); - settings->severity.enable(Severity::performance); - settings->standards.c = Standards::CLatest; - settings->standards.cpp = Standards::CPPLatest; - settings->certainty.enable(Certainty::inconclusive); + Settings settings = settings0; + settings.severity.enable(Severity::style); + settings.severity.enable(Severity::warning); + settings.severity.enable(Severity::portability); + settings.severity.enable(Severity::performance); + settings.standards.c = Standards::CLatest; + settings.standards.cpp = Standards::CPPLatest; + settings.certainty.enable(Certainty::inconclusive); // Raw tokens.. std::vector files(1, filename); @@ -97,21 +97,15 @@ class TestBufferOverrun : public TestFixture { simplecpp::preprocess(tokens2, tokens1, files, filedata, simplecpp::DUI()); // Tokenizer.. - Tokenizer tokenizer(settings, this); + Tokenizer tokenizer(&settings, this); tokenizer.createTokens(std::move(tokens2)); tokenizer.simplifyTokens1(""); // Check for buffer overruns.. - runChecks(&tokenizer, settings, this); + runChecks(&tokenizer, &settings, this); } void run() override { - LOAD_LIB_2(settings0.library, "std.cfg"); - - settings0.severity.enable(Severity::warning); - settings0.severity.enable(Severity::style); - settings0.severity.enable(Severity::portability); - TEST_CASE(noerr1); TEST_CASE(noerr2); TEST_CASE(noerr3); @@ -5526,9 +5520,7 @@ class TestBufferOverrun : public TestFixture { void checkPipeParameterSize() { // #3521 - Settings settings; - LOAD_LIB_2(settings.library, "posix.cfg"); - settings.libraries.emplace_back("posix"); + const Settings settings = settingsBuilder().library("posix.cfg").build(); check("void f(){\n" "int pipefd[1];\n" // <-- array of two integers is needed diff --git a/test/testcharvar.cpp b/test/testcharvar.cpp index 0e11e396de2..9d4ccb4ba44 100644 --- a/test/testcharvar.cpp +++ b/test/testcharvar.cpp @@ -31,12 +31,10 @@ class TestCharVar : public TestFixture { TestCharVar() : TestFixture("TestCharVar") {} private: - Settings settings; + Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build(); void run() override { PLATFORM(settings.platform, cppcheck::Platform::Type::Unspecified); - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::portability); TEST_CASE(array_index_1); TEST_CASE(array_index_2); diff --git a/test/testclangimport.cpp b/test/testclangimport.cpp index b9ec7eb9ead..73593f09511 100644 --- a/test/testclangimport.cpp +++ b/test/testclangimport.cpp @@ -137,8 +137,7 @@ class TestClangImport : public TestFixture { } std::string parse(const char clang[]) { - Settings settings; - settings.clang = true; + const Settings settings = settingsBuilder().clang().build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(clang); clangimport::parseClangAstDump(&tokenizer, istr); @@ -1049,8 +1048,7 @@ class TestClangImport : public TestFixture { #define GET_SYMBOL_DB(AST) \ - Settings settings; \ - settings.clang = true; \ + Settings settings = settingsBuilder().clang().build(); \ { \ std::string errstr; \ ASSERT_EQUALS_MSG(true, settings.platform.set("unix64", errstr, {exename.c_str()}), errstr); \ diff --git a/test/testclass.cpp b/test/testclass.cpp index 2f672b91f4d..565edab0ebf 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -36,13 +36,10 @@ class TestClass : public TestFixture { TestClass() : TestFixture("TestClass") {} private: - Settings settings0; - Settings settings1; + Settings settings0 = settingsBuilder().severity(Severity::style).build(); + Settings settings1 = settingsBuilder().severity(Severity::warning).build(); void run() override { - settings0.severity.enable(Severity::style); - settings1.severity.enable(Severity::warning); - // Load std.cfg configuration { const char xmldata[] = "\n" @@ -262,8 +259,7 @@ class TestClass : public TestFixture { void checkCopyCtorAndEqOperator_(const char code[], const char* file, int line) { // Clear the error log errout.str(""); - Settings settings; - settings.severity.enable(Severity::warning); + const Settings settings = settingsBuilder().severity(Severity::warning).build(); Preprocessor preprocessor(settings); @@ -2890,9 +2886,7 @@ class TestClass : public TestFixture { #define checkNoMemset(...) checkNoMemset_(__FILE__, __LINE__, __VA_ARGS__) void checkNoMemset_(const char* file, int line, const char code[]) { - Settings settings; - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::portability); + const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build(); checkNoMemset_(file, line, code, settings); } @@ -3156,8 +3150,7 @@ class TestClass : public TestFixture { errout.str()); // #1655 - Settings s; - LOAD_LIB_2(s.library, "std.cfg"); + const Settings s = settingsBuilder().library("std.cfg").build(); checkNoMemset("void f() {\n" " char c[] = \"abc\";\n" " std::string s;\n" @@ -7231,10 +7224,7 @@ class TestClass : public TestFixture { } void qualifiedNameMember() { // #10872 - Settings s; - s.severity.enable(Severity::style); - s.debugwarnings = true; - LOAD_LIB_2(s.library, "std.cfg"); + Settings s = settingsBuilder().severity(Severity::style).debugwarnings().library("std.cfg").build(); checkConst("struct data {};\n" " struct S {\n" " std::vector std;\n" @@ -7289,8 +7279,7 @@ class TestClass : public TestFixture { errout.str(""); // Check.. - Settings settings; - settings.severity.enable(Severity::performance); + const Settings settings = settingsBuilder().severity(Severity::performance).build(); Preprocessor preprocessor(settings); @@ -7970,8 +7959,8 @@ class TestClass : public TestFixture { void checkOverride_(const char code[], const char* file, int line) { // Clear the error log errout.str(""); - Settings settings; - settings.severity.enable(Severity::style); + + const Settings settings = settingsBuilder().severity(Severity::style).build(); Preprocessor preprocessor(settings); @@ -8147,9 +8136,9 @@ class TestClass : public TestFixture { void checkUnsafeClassRefMember_(const char code[], const char* file, int line) { // Clear the error log errout.str(""); - Settings settings; + + Settings settings = settingsBuilder().severity(Severity::warning).build(); settings.safeChecks.classes = true; - settings.severity.enable(Severity::warning); Preprocessor preprocessor(settings); @@ -8328,7 +8317,7 @@ class TestClass : public TestFixture { void ctu(const std::vector &code) { - Settings settings; + const Settings settings; auto &check = getCheck(); // getFileInfo diff --git a/test/testcondition.cpp b/test/testcondition.cpp index d34623184c0..5c036aa6c53 100644 --- a/test/testcondition.cpp +++ b/test/testcondition.cpp @@ -39,28 +39,19 @@ class TestCondition : public TestFixture { TestCondition() : TestFixture("TestCondition") {} private: - Settings settings0; - Settings settings1; + Settings settings0 = settingsBuilder().library("qt.cfg").library("std.cfg").severity(Severity::style).severity(Severity::warning).build(); + Settings settings1 = settingsBuilder().severity(Severity::style).severity(Severity::warning).build(); void run() override { // known platform.. PLATFORM(settings0.platform, cppcheck::Platform::Type::Native); PLATFORM(settings1.platform, cppcheck::Platform::Type::Native); - LOAD_LIB_2(settings0.library, "qt.cfg"); - settings0.libraries.emplace_back("qt"); - LOAD_LIB_2(settings0.library, "std.cfg"); - - settings0.severity.enable(Severity::style); - settings0.severity.enable(Severity::warning); - const char cfg[] = "\n" "\n" " \n" ""; ASSERT(settings1.library.loadxmldata(cfg, sizeof(cfg))); - settings1.severity.enable(Severity::style); - settings1.severity.enable(Severity::warning); TEST_CASE(assignAndCompare); // assignment and comparison don't match TEST_CASE(mismatchingBitAnd); // overlapping bitmasks @@ -5644,8 +5635,7 @@ class TestCondition : public TestFixture { } void compareOutOfTypeRange() { - Settings settingsUnix64; - settingsUnix64.severity.enable(Severity::style); + Settings settingsUnix64 = settingsBuilder().severity(Severity::style).build(); PLATFORM(settingsUnix64.platform, cppcheck::Platform::Type::Unix64); check("void f(unsigned char c) {\n" diff --git a/test/testconstructors.cpp b/test/testconstructors.cpp index 066e0463101..55507560a74 100644 --- a/test/testconstructors.cpp +++ b/test/testconstructors.cpp @@ -32,22 +32,22 @@ class TestConstructors : public TestFixture { TestConstructors() : TestFixture("TestConstructors") {} private: - Settings settings; + Settings settings = settingsBuilder().severity(Severity::style).severity(Severity::warning).build(); #define check(...) check_(__FILE__, __LINE__, __VA_ARGS__) void check_(const char* file, int line, const char code[], bool inconclusive = false) { // Clear the error buffer.. errout.str(""); - settings.certainty.setEnabled(Certainty::inconclusive, inconclusive); + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, inconclusive).build(); // Tokenize.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check class constructors.. - CheckClass checkClass(&tokenizer, &settings, this); + CheckClass checkClass(&tokenizer, &settings1, this); checkClass.constructors(); } @@ -66,9 +66,6 @@ class TestConstructors : public TestFixture { } void run() override { - settings.severity.enable(Severity::style); - settings.severity.enable(Severity::warning); - TEST_CASE(simple1); TEST_CASE(simple2); TEST_CASE(simple3); @@ -1950,9 +1947,8 @@ class TestConstructors : public TestFixture { } void initvar_smartptr() { // #10237 - Settings s; // TODO: test shuld probably not pass without library - //LOAD_LIB_2(s.library, "std.cfg"); + const Settings s = settingsBuilder() /*.library("std.cfg")*/.build(); check("struct S {\n" " explicit S(const std::shared_ptr& sp) {\n" " set(*sp);\n" @@ -1994,11 +1990,7 @@ class TestConstructors : public TestFixture { "{ }", true); ASSERT_EQUALS("[test.cpp:13]: (warning, inconclusive) Member variable 'Fred::ints' is not assigned a value in 'Fred::operator='.\n", errout.str()); - Settings s; - s.certainty.setEnabled(Certainty::inconclusive, true); - s.severity.enable(Severity::style); - s.severity.enable(Severity::warning); - LOAD_LIB_2(s.library, "std.cfg"); + const Settings s = settingsBuilder().certainty(Certainty::inconclusive).severity(Severity::style).severity(Severity::warning).library("std.cfg").build(); check("struct S {\n" " S& operator=(const S& s) { return *this; }\n" " std::mutex m;\n" @@ -3610,10 +3602,8 @@ class TestConstructors : public TestFixture { } void uninitVarInheritClassInit() { - Settings s; // TODO: test should probably not pass without library - //LOAD_LIB_2(s.library, "vcl.cfg"); - //s.libraries.emplace_back("vcl"); + const Settings s = settingsBuilder() /*.library("vcl.cfg")*/.build(); check("class Fred: public TObject\n" "{\n" diff --git a/test/testfunctions.cpp b/test/testfunctions.cpp index 5952fc79589..467ea261ce0 100644 --- a/test/testfunctions.cpp +++ b/test/testfunctions.cpp @@ -33,20 +33,10 @@ class TestFunctions : public TestFixture { TestFunctions() : TestFixture("TestFunctions") {} private: - Settings settings; + Settings settings = settingsBuilder().severity(Severity::style).severity(Severity::warning).severity(Severity::performance).severity(Severity::portability). + certainty(Certainty::inconclusive).c(Standards::C11).cpp(Standards::CPP11).library("std.cfg").library("posix.cfg").build(); void run() override { - settings.severity.enable(Severity::style); - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::performance); - settings.severity.enable(Severity::portability); - settings.certainty.enable(Certainty::inconclusive); - settings.standards.c = Standards::C11; - settings.standards.cpp = Standards::CPP11; - LOAD_LIB_2(settings.library, "std.cfg"); - LOAD_LIB_2(settings.library, "posix.cfg"); - settings.libraries.emplace_back("posix"); - // Prohibited functions TEST_CASE(prohibitedFunctions_posix); TEST_CASE(prohibitedFunctions_index); diff --git a/test/testincompletestatement.cpp b/test/testincompletestatement.cpp index 185cdb883fb..c1b50772bba 100644 --- a/test/testincompletestatement.cpp +++ b/test/testincompletestatement.cpp @@ -35,13 +35,13 @@ class TestIncompleteStatement : public TestFixture { TestIncompleteStatement() : TestFixture("TestIncompleteStatement") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).build(); void check(const char code[], bool inconclusive = false) { // Clear the error buffer.. errout.str(""); - settings.certainty.setEnabled(Certainty::inconclusive, inconclusive); + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, inconclusive).build(); // Raw tokens.. std::vector files(1, "test.cpp"); @@ -54,18 +54,16 @@ class TestIncompleteStatement : public TestFixture { simplecpp::preprocess(tokens2, tokens1, files, filedata, simplecpp::DUI()); // Tokenize.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); tokenizer.createTokens(std::move(tokens2)); tokenizer.simplifyTokens1(""); // Check for incomplete statements.. - CheckOther checkOther(&tokenizer, &settings, this); + CheckOther checkOther(&tokenizer, &settings1, this); checkOther.checkIncompleteStatement(); } void run() override { - settings.severity.enable(Severity::warning); - TEST_CASE(test1); TEST_CASE(test2); TEST_CASE(test3); diff --git a/test/testio.cpp b/test/testio.cpp index f6d5f39fc04..0191244108a 100644 --- a/test/testio.cpp +++ b/test/testio.cpp @@ -35,14 +35,9 @@ class TestIO : public TestFixture { TestIO() : TestFixture("TestIO") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("std.cfg").library("windows.cfg").library("qt.cfg").build(); void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - LOAD_LIB_2(settings.library, "windows.cfg"); - LOAD_LIB_2(settings.library, "qt.cfg"); - settings.libraries.emplace_back("qt"); - TEST_CASE(coutCerrMisusage); TEST_CASE(wrongMode_simple); @@ -91,22 +86,23 @@ class TestIO : public TestFixture { // Clear the error buffer.. errout.str(""); - settings.severity.clear(); - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::style); + Settings settings1 = settings; + settings1.severity.clear(); + settings1.severity.enable(Severity::warning); + settings1.severity.enable(Severity::style); if (portability) - settings.severity.enable(Severity::portability); - settings.certainty.setEnabled(Certainty::inconclusive, inconclusive); - PLATFORM(settings.platform, platform); + settings1.severity.enable(Severity::portability); + settings1.certainty.setEnabled(Certainty::inconclusive, inconclusive); + PLATFORM(settings1.platform, platform); // Tokenize.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); const std::string file_in = cpp ? "test.cpp" : "test.c"; ASSERT_LOC(tokenizer.tokenize(istr, file_in.c_str()), file, line); // Check.. - CheckIO checkIO(&tokenizer, &settings, this); + CheckIO checkIO(&tokenizer, &settings1, this); checkIO.checkWrongPrintfScanfArguments(); if (!onlyFormatStr) { checkIO.checkCoutCerrMisusage(); diff --git a/test/testleakautovar.cpp b/test/testleakautovar.cpp index 8a7fb98d6ee..f549bcf6e5d 100644 --- a/test/testleakautovar.cpp +++ b/test/testleakautovar.cpp @@ -2654,7 +2654,7 @@ class TestLeakAutoVarRecursiveCountLimit : public TestFixture { TestLeakAutoVarRecursiveCountLimit() : TestFixture("TestLeakAutoVarRecursiveCountLimit") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("std.cfg").checkLibrary().build(); void checkP(const char code[], bool cpp = false) { // Clear the error buffer.. @@ -2675,15 +2675,11 @@ class TestLeakAutoVarRecursiveCountLimit : public TestFixture { tokenizer.createTokens(std::move(tokens2)); tokenizer.simplifyTokens1(""); - settings.checkLibrary = true; - // Check for leaks.. runChecks(&tokenizer, &settings, this); } void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(recursiveCountLimit); // #5872 #6157 #9097 } @@ -2714,7 +2710,7 @@ class TestLeakAutoVarStrcpy : public TestFixture { TestLeakAutoVarStrcpy() : TestFixture("TestLeakAutoVarStrcpy") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("std.cfg").checkLibrary().build(); void check_(const char* file, int line, const char code[]) { // Clear the error buffer.. @@ -2725,15 +2721,11 @@ class TestLeakAutoVarStrcpy : public TestFixture { std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); - settings.checkLibrary = true; - // Check for leaks.. runChecks(&tokenizer, &settings, this); } void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(returnedValue); // #9298 TEST_CASE(deallocuse2); TEST_CASE(fclose_false_positive); // #9575 @@ -2778,7 +2770,7 @@ class TestLeakAutoVarWindows : public TestFixture { TestLeakAutoVarWindows() : TestFixture("TestLeakAutoVarWindows") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("windows.cfg").build(); void check_(const char* file, int line, const char code[]) { // Clear the error buffer.. @@ -2794,8 +2786,6 @@ class TestLeakAutoVarWindows : public TestFixture { } void run() override { - LOAD_LIB_2(settings.library, "windows.cfg"); - TEST_CASE(heapDoubleFree); } diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index 6e45e23acaf..bfe324a36b5 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -38,7 +38,7 @@ class TestMemleak : private TestFixture { TestMemleak() : TestFixture("TestMemleak") {} private: - Settings settings; + const Settings settings; void run() override { TEST_CASE(testFunctionReturnType); @@ -125,34 +125,25 @@ class TestMemleakInFunction : public TestFixture { TestMemleakInFunction() : TestFixture("TestMemleakInFunction") {} private: - Settings settings0; - Settings settings1; - Settings settings2; + const Settings settings = settingsBuilder().library("std.cfg").library("posix.cfg").build(); #define check(...) check_(__FILE__, __LINE__, __VA_ARGS__) void check_(const char* file, int line, const char code[]) { // Clear the error buffer.. errout.str(""); - Settings *settings = &settings1; - // Tokenize.. - Tokenizer tokenizer(settings, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); // Check for memory leaks.. - CheckMemoryLeakInFunction checkMemoryLeak(&tokenizer, settings, this); + CheckMemoryLeakInFunction checkMemoryLeak(&tokenizer, &settings, this); checkMemoryLeak.checkReallocUsage(); } void run() override { - LOAD_LIB_2(settings1.library, "std.cfg"); - LOAD_LIB_2(settings1.library, "posix.cfg"); - settings1.libraries.emplace_back("posix"); - LOAD_LIB_2(settings2.library, "std.cfg"); - TEST_CASE(realloc1); TEST_CASE(realloc2); TEST_CASE(realloc3); @@ -470,7 +461,7 @@ class TestMemleakInClass : public TestFixture { TestMemleakInClass() : TestFixture("TestMemleakInClass") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).library("std.cfg").build(); /** * Tokenize and execute leak check for given code @@ -491,11 +482,6 @@ class TestMemleakInClass : public TestFixture { } void run() override { - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::style); - - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(class1); TEST_CASE(class2); TEST_CASE(class3); @@ -1686,7 +1672,7 @@ class TestMemleakStructMember : public TestFixture { TestMemleakStructMember() : TestFixture("TestMemleakStructMember") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("std.cfg").library("posix.cfg").build(); void check_(const char* file, int line, const char code[], bool isCPP = true) { // Clear the error buffer.. @@ -1703,10 +1689,6 @@ class TestMemleakStructMember : public TestFixture { } void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - LOAD_LIB_2(settings.library, "posix.cfg"); - settings.libraries.emplace_back("posix"); - // testing that errors are detected TEST_CASE(err); @@ -2274,7 +2256,7 @@ class TestMemleakNoVar : public TestFixture { TestMemleakNoVar() : TestFixture("TestMemleakNoVar") {} private: - Settings settings; + const Settings settings = settingsBuilder().certainty(Certainty::inconclusive).severity(Severity::warning).library("std.cfg").library("posix.cfg").build(); void check_(const char* file, int line, const char code[]) { // Clear the error buffer.. @@ -2291,13 +2273,6 @@ class TestMemleakNoVar : public TestFixture { } void run() override { - settings.certainty.setEnabled(Certainty::inconclusive, true); - settings.severity.enable(Severity::warning); - - LOAD_LIB_2(settings.library, "std.cfg"); - LOAD_LIB_2(settings.library, "posix.cfg"); - settings.libraries.emplace_back("posix"); - // pass allocated memory to function.. TEST_CASE(functionParameter); diff --git a/test/testnullpointer.cpp b/test/testnullpointer.cpp index 2452ecefbe3..e013c513ca4 100644 --- a/test/testnullpointer.cpp +++ b/test/testnullpointer.cpp @@ -41,12 +41,9 @@ class TestNullPointer : public TestFixture { TestNullPointer() : TestFixture("TestNullPointer") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("std.cfg").severity(Severity::warning).build(); void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - settings.severity.enable(Severity::warning); - TEST_CASE(nullpointerAfterLoop); TEST_CASE(nullpointer1); TEST_CASE(nullpointer2); @@ -183,22 +180,22 @@ class TestNullPointer : public TestFixture { // Clear the error buffer.. errout.str(""); - settings.certainty.setEnabled(Certainty::inconclusive, inconclusive); + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, inconclusive).build(); // Tokenize.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // Check for null pointer dereferences.. - runChecks(&tokenizer, &settings, this); + runChecks(&tokenizer, &settings1, this); } void checkP(const char code[]) { // Clear the error buffer.. errout.str(""); - settings.certainty.setEnabled(Certainty::inconclusive, false); + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, false).build(); // Raw tokens.. std::vector files(1, "test.cpp"); @@ -211,12 +208,12 @@ class TestNullPointer : public TestFixture { simplecpp::preprocess(tokens2, tokens1, files, filedata, simplecpp::DUI()); // Tokenizer.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); tokenizer.createTokens(std::move(tokens2)); tokenizer.simplifyTokens1(""); // Check for null pointer dereferences.. - runChecks(&tokenizer, &settings, this); + runChecks(&tokenizer, &settings1, this); } @@ -4052,7 +4049,7 @@ class TestNullPointer : public TestFixture { } void functioncalllibrary() { - Settings settings1; + const Settings settings1; Tokenizer tokenizer(&settings1,this); std::istringstream code("void f() { int a,b,c; x(a,b,c); }"); ASSERT_EQUALS(true, tokenizer.tokenize(code, "test.c")); diff --git a/test/testpostfixoperator.cpp b/test/testpostfixoperator.cpp index 4e542ea4082..48ff941f542 100644 --- a/test/testpostfixoperator.cpp +++ b/test/testpostfixoperator.cpp @@ -30,7 +30,7 @@ class TestPostfixOperator : public TestFixture { TestPostfixOperator() : TestFixture("TestPostfixOperator") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::performance).build(); #define check(code) check_(code, __FILE__, __LINE__) void check_(const char code[], const char* file, int line) { @@ -48,8 +48,6 @@ class TestPostfixOperator : public TestFixture { } void run() override { - settings.severity.enable(Severity::performance); - TEST_CASE(testsimple); TEST_CASE(testfor); TEST_CASE(testvolatile); diff --git a/test/testpreprocessor.cpp b/test/testpreprocessor.cpp index 21952676648..4253bc844f8 100644 --- a/test/testpreprocessor.cpp +++ b/test/testpreprocessor.cpp @@ -45,9 +45,7 @@ class TestPreprocessor : public TestFixture { public: TestPreprocessor() : TestFixture("TestPreprocessor") - , preprocessor0(settings0, this) { - settings0.severity.enable(Severity::information); - } + , preprocessor0(settings0, this) {} class OurPreprocessor : public Preprocessor { public: @@ -72,7 +70,7 @@ class TestPreprocessor : public TestFixture { }; private: - Settings settings0; + Settings settings0 = settingsBuilder().severity(Severity::information).build(); Preprocessor preprocessor0; void run() override { diff --git a/test/testsimplifytemplate.cpp b/test/testsimplifytemplate.cpp index e3db648b02b..8bec2cb02fb 100644 --- a/test/testsimplifytemplate.cpp +++ b/test/testsimplifytemplate.cpp @@ -37,14 +37,10 @@ class TestSimplifyTemplate : public TestFixture { TestSimplifyTemplate() : TestFixture("TestSimplifyTemplate") {} private: - Settings settings; + // If there are unused templates, keep those + const Settings settings = settingsBuilder().severity(Severity::portability).checkUnusedTemplates().build(); void run() override { - settings.severity.enable(Severity::portability); - - // If there are unused templates, keep those - settings.checkUnusedTemplates = true; - TEST_CASE(template1); TEST_CASE(template2); TEST_CASE(template3); @@ -313,9 +309,9 @@ class TestSimplifyTemplate : public TestFixture { std::string tok_(const char* file, int line, const char code[], bool debugwarnings = false, cppcheck::Platform::Type type = cppcheck::Platform::Type::Native) { errout.str(""); - settings.debugwarnings = debugwarnings; - PLATFORM(settings.platform, type); - Tokenizer tokenizer(&settings, this); + Settings settings1 = settingsBuilder(settings).debugwarnings(debugwarnings).build(); + PLATFORM(settings1.platform, type); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index 1db88f2ba26..d738fb63553 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -34,24 +34,13 @@ class TestSimplifyTokens : public TestFixture { private: - Settings settings0; - Settings settings1; - Settings settings_std; - Settings settings_windows; + // If there are unused templates, keep those + const Settings settings0 = settingsBuilder().severity(Severity::portability).checkUnusedTemplates().build(); + const Settings settings1 = settingsBuilder().severity(Severity::style).checkUnusedTemplates().build(); + const Settings settings_std = settingsBuilder().library("std.cfg").checkUnusedTemplates().build(); + const Settings settings_windows = settingsBuilder().library("windows.cfg").severity(Severity::portability).checkUnusedTemplates().build(); void run() override { - LOAD_LIB_2(settings_std.library, "std.cfg"); - LOAD_LIB_2(settings_windows.library, "windows.cfg"); - settings0.severity.enable(Severity::portability); - settings1.severity.enable(Severity::style); - settings_windows.severity.enable(Severity::portability); - - // If there are unused templates, keep those - settings0.checkUnusedTemplates = true; - settings1.checkUnusedTemplates = true; - settings_std.checkUnusedTemplates = true; - settings_windows.checkUnusedTemplates = true; - TEST_CASE(combine_strings); TEST_CASE(combine_wstrings); TEST_CASE(combine_ustrings); @@ -178,14 +167,13 @@ class TestSimplifyTokens : public TestFixture { std::string tok_(const char* file, int line, const char code[], bool simplify = true, cppcheck::Platform::Type type = cppcheck::Platform::Type::Native) { errout.str(""); - PLATFORM(settings0.platform, type); - Tokenizer tokenizer(&settings0, this); + Settings settings = settings0; + PLATFORM(settings.platform, type); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); - (void)simplify; - return tokenizer.tokens()->stringifyList(nullptr, !simplify); } @@ -206,12 +194,12 @@ class TestSimplifyTokens : public TestFixture { std::string tokenizeAndStringify_(const char* file, int linenr, const char code[], bool simplify = false, bool expand = true, cppcheck::Platform::Type platform = cppcheck::Platform::Type::Native, const char* filename = "test.cpp", bool cpp11 = true) { errout.str(""); - settings1.debugwarnings = true; - PLATFORM(settings1.platform, platform); - settings1.standards.cpp = cpp11 ? Standards::CPP11 : Standards::CPP03; + Settings settings = settingsBuilder(settings1).debugwarnings().build(); + PLATFORM(settings.platform, platform); + settings.standards.cpp = cpp11 ? Standards::CPP11 : Standards::CPP03; // tokenize.. - Tokenizer tokenizer(&settings1, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, linenr); diff --git a/test/testsimplifytypedef.cpp b/test/testsimplifytypedef.cpp index 88b4f1355e8..4d750148114 100644 --- a/test/testsimplifytypedef.cpp +++ b/test/testsimplifytypedef.cpp @@ -40,19 +40,12 @@ class TestSimplifyTypedef : public TestFixture { private: - Settings settings0; - Settings settings1; - Settings settings2; + // If there are unused templates, keep those + const Settings settings0 = settingsBuilder().severity(Severity::style).checkUnusedTemplates().build(); + const Settings settings1 = settingsBuilder().checkUnusedTemplates().build(); + const Settings settings2 = settingsBuilder().severity(Severity::style).checkUnusedTemplates().build(); void run() override { - settings0.severity.enable(Severity::style); - settings2.severity.enable(Severity::style); - - // If there are unused templates, keep those - settings0.checkUnusedTemplates = true; - settings1.checkUnusedTemplates = true; - settings2.checkUnusedTemplates = true; - TEST_CASE(c1); TEST_CASE(c2); TEST_CASE(canreplace1); @@ -234,10 +227,10 @@ class TestSimplifyTypedef : public TestFixture { std::string tok_(const char* file, int line, const char code[], bool simplify = true, cppcheck::Platform::Type type = cppcheck::Platform::Type::Native, bool debugwarnings = true) { errout.str(""); - settings0.certainty.enable(Certainty::inconclusive); - settings0.debugwarnings = debugwarnings; // show warnings about unhandled typedef - PLATFORM(settings0.platform, type); - Tokenizer tokenizer(&settings0, this); + // show warnings about unhandled typedef + Settings settings = settingsBuilder(settings0).certainty(Certainty::inconclusive).debugwarnings(debugwarnings).build(); + PLATFORM(settings.platform, type); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -286,9 +279,9 @@ class TestSimplifyTypedef : public TestFixture { void checkSimplifyTypedef_(const char code[], const char* file, int line) { errout.str(""); // Tokenize.. - settings2.certainty.enable(Certainty::inconclusive); - settings2.debugwarnings = true; // show warnings about unhandled typedef - Tokenizer tokenizer(&settings2, this); + // show warnings about unhandled typedef + const Settings settings = settingsBuilder(settings2).certainty(Certainty::inconclusive).debugwarnings().build(); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); } diff --git a/test/testsimplifyusing.cpp b/test/testsimplifyusing.cpp index 00a2bab8e07..9118bcc764a 100644 --- a/test/testsimplifyusing.cpp +++ b/test/testsimplifyusing.cpp @@ -39,19 +39,12 @@ class TestSimplifyUsing : public TestFixture { private: - Settings settings0; - Settings settings1; - Settings settings2; + // If there are unused templates, keep those + const Settings settings0 = settingsBuilder().severity(Severity::style).checkUnusedTemplates().build(); + const Settings settings1 = settingsBuilder().checkUnusedTemplates().build(); + const Settings settings2 = settingsBuilder().severity(Severity::style).checkUnusedTemplates().build(); void run() override { - settings0.severity.enable(Severity::style); - settings2.severity.enable(Severity::style); - - // If there are unused templates, keep those - settings0.checkUnusedTemplates = true; - settings1.checkUnusedTemplates = true; - settings2.checkUnusedTemplates = true; - TEST_CASE(simplifyUsing1); TEST_CASE(simplifyUsing2); TEST_CASE(simplifyUsing3); @@ -107,10 +100,9 @@ class TestSimplifyUsing : public TestFixture { std::string tok_(const char* file, int line, const char code[], cppcheck::Platform::Type type = cppcheck::Platform::Type::Native, bool debugwarnings = true, bool preprocess = false) { errout.str(""); - settings0.certainty.enable(Certainty::inconclusive); - settings0.debugwarnings = debugwarnings; - PLATFORM(settings0.platform, type); - Tokenizer tokenizer(&settings0, this); + Settings settings = settingsBuilder(settings0).certainty(Certainty::inconclusive).debugwarnings(debugwarnings).build(); + PLATFORM(settings.platform, type); + Tokenizer tokenizer(&settings, this); if (preprocess) { std::vector files{ "test.cpp" }; diff --git a/test/testsizeof.cpp b/test/testsizeof.cpp index 30aea3e2f44..bcf04a5db08 100644 --- a/test/testsizeof.cpp +++ b/test/testsizeof.cpp @@ -36,13 +36,9 @@ class TestSizeof : public TestFixture { TestSizeof() : TestFixture("TestSizeof") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).certainty(Certainty::inconclusive).build(); void run() override { - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::portability); - settings.certainty.enable(Certainty::inconclusive); - TEST_CASE(sizeofsizeof); TEST_CASE(sizeofCalculation); TEST_CASE(sizeofFunction); diff --git a/test/teststl.cpp b/test/teststl.cpp index a62c7af0694..95c1c81254c 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -35,14 +35,9 @@ class TestStl : public TestFixture { TestStl() : TestFixture("TestStl") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).severity(Severity::performance).library("std.cfg").build(); void run() override { - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::style); - settings.severity.enable(Severity::performance); - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(outOfBounds); TEST_CASE(outOfBoundsSymbolic); TEST_CASE(outOfBoundsIndexExpression); @@ -185,17 +180,15 @@ class TestStl : public TestFixture { // Clear the error buffer.. errout.str(""); - settings.certainty.setEnabled(Certainty::inconclusive, inconclusive); - settings.standards.cpp = cppstandard; - + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, inconclusive).cpp(cppstandard).build(); // Tokenize.. - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); - runChecks(&tokenizer, &settings, this); + runChecks(&tokenizer, &settings1, this); } void check_(const char* file, int line, const std::string& code, const bool inconclusive = false) { diff --git a/test/teststring.cpp b/test/teststring.cpp index a217f09259e..61bc1e5f055 100644 --- a/test/teststring.cpp +++ b/test/teststring.cpp @@ -32,12 +32,9 @@ class TestString : public TestFixture { TestString() : TestFixture("TestString") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).build(); void run() override { - settings.severity.enable(Severity::warning); - settings.severity.enable(Severity::style); - TEST_CASE(stringLiteralWrite); TEST_CASE(alwaysTrueFalseStringCompare); diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index da9aa75a7ce..ccc2093ada2 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -71,8 +71,9 @@ class TestSymbolDatabase : public TestFixture { private: const Token* vartok; const Token* typetok; - Settings settings1; - Settings settings2; + // If there are unused templates, keep those + Settings settings1 = settingsBuilder().library("std.cfg").checkUnusedTemplates().build(); + Settings settings2 = settingsBuilder().checkUnusedTemplates().build(); void reset() { vartok = nullptr; @@ -117,13 +118,8 @@ class TestSymbolDatabase : public TestFixture { } void run() override { - LOAD_LIB_2(settings1.library, "std.cfg"); PLATFORM(settings2.platform, cppcheck::Platform::Type::Unspecified); - // If there are unused templates, keep those - settings1.checkUnusedTemplates = true; - settings2.checkUnusedTemplates = true; - TEST_CASE(array); TEST_CASE(array_ptr); TEST_CASE(stlarray1); @@ -2311,17 +2307,15 @@ class TestSymbolDatabase : public TestFixture { errout.str(""); // Check.. - settings1.debugwarnings = debug; + const Settings settings = settingsBuilder(settings1).debugwarnings(debug).build(); // Tokenize.. - Tokenizer tokenizer(&settings1, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); // force symbol database creation tokenizer.createSymbolDatabase(); - - settings1.debugwarnings = false; } void functionArgs1() { diff --git a/test/testthreadexecutor.cpp b/test/testthreadexecutor.cpp index 1a3ae87e8fc..1c7ce10ab95 100644 --- a/test/testthreadexecutor.cpp +++ b/test/testthreadexecutor.cpp @@ -39,7 +39,7 @@ class TestThreadExecutor : public TestFixture { TestThreadExecutor() : TestFixture("TestThreadExecutor") {} private: - Settings settings; + const Settings settings = settingsBuilder().library("std.cfg").build(); /** * Execute check using n jobs for y files which are have @@ -64,12 +64,13 @@ class TestThreadExecutor : public TestFixture { } } - settings.jobs = jobs; - settings.showtime = showtime; + Settings settings1 = settings; + settings1.jobs = jobs; + settings1.showtime = showtime; if (plistOutput) - settings.plistOutput = plistOutput; + settings1.plistOutput = plistOutput; // TODO: test with settings.project.fileSettings; - ThreadExecutor executor(filemap, settings, *this); + ThreadExecutor executor(filemap, settings1, *this); std::vector> scopedfiles; scopedfiles.reserve(filemap.size()); for (std::map::const_iterator i = filemap.cbegin(); i != filemap.cend(); ++i) @@ -79,8 +80,6 @@ class TestThreadExecutor : public TestFixture { } void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(deadlock_with_many_errors); TEST_CASE(many_threads); TEST_CASE(many_threads_showtime); diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 7d50009d436..5627c7db1ff 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -44,28 +44,13 @@ class TestTokenizer : public TestFixture { TestTokenizer() : TestFixture("TestTokenizer") {} private: - Settings settings0; - Settings settings1; - Settings settings2; - Settings settings_windows; + // If there are unused templates, keep those + Settings settings0 = settingsBuilder().library("qt.cfg").checkUnusedTemplates().build(); + const Settings settings1 = settingsBuilder().library("qt.cfg").checkUnusedTemplates().build(); + const Settings settings2 = settingsBuilder().library("qt.cfg").checkUnusedTemplates().build(); + const Settings settings_windows = settingsBuilder().library("windows.cfg").checkUnusedTemplates().build(); void run() override { - LOAD_LIB_2(settings_windows.library, "windows.cfg"); - - // If there are unused templates, keep those - settings0.checkUnusedTemplates = true; - settings1.checkUnusedTemplates = true; - settings2.checkUnusedTemplates = true; - settings_windows.checkUnusedTemplates = true; - - // library=qt - LOAD_LIB_2(settings0.library, "qt.cfg"); - settings0.libraries.emplace_back("qt"); - LOAD_LIB_2(settings1.library, "qt.cfg"); - settings1.libraries.emplace_back("qt"); - LOAD_LIB_2(settings2.library, "qt.cfg"); - settings2.libraries.emplace_back("qt"); - TEST_CASE(tokenize1); TEST_CASE(tokenize2); TEST_CASE(tokenize4); @@ -471,12 +456,11 @@ class TestTokenizer : public TestFixture { std::string tokenizeAndStringify_(const char* file, int linenr, const char code[], bool expand = true, cppcheck::Platform::Type platform = cppcheck::Platform::Type::Native, const char* filename = "test.cpp", Standards::cppstd_t std = Standards::CPP11) { errout.str(""); - settings1.debugwarnings = true; - PLATFORM(settings1.platform, platform); - settings1.standards.cpp = std; + Settings settings = settingsBuilder(settings1).debugwarnings().cpp(std).build(); + PLATFORM(settings.platform, platform); // tokenize.. - Tokenizer tokenizer(&settings1, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, linenr); @@ -500,12 +484,11 @@ class TestTokenizer : public TestFixture { std::string tokenizeAndStringifyWindows_(const char* file, int linenr, const char code[], bool expand = true, cppcheck::Platform::Type platform = cppcheck::Platform::Type::Native, const char* filename = "test.cpp", bool cpp11 = true) { errout.str(""); - settings_windows.debugwarnings = true; - PLATFORM(settings_windows.platform, platform); - settings_windows.standards.cpp = cpp11 ? Standards::CPP11 : Standards::CPP03; + Settings settings = settingsBuilder(settings_windows).debugwarnings().cpp(cpp11 ? Standards::CPP11 : Standards::CPP03).build(); + PLATFORM(settings.platform, platform); // tokenize.. - Tokenizer tokenizer(&settings_windows, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, linenr); @@ -541,10 +524,9 @@ class TestTokenizer : public TestFixture { std::string tokenizeDebugListing_(const char* file, int line, const char code[], const char filename[] = "test.cpp") { errout.str(""); - settings2.standards.c = Standards::C89; - settings2.standards.cpp = Standards::CPP03; + const Settings settings = settingsBuilder(settings2).c(Standards::C89).cpp(Standards::CPP03).build(); - Tokenizer tokenizer(&settings2, this); + Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); diff --git a/test/testtype.cpp b/test/testtype.cpp index 5cf7d787bc7..e605a70092e 100644 --- a/test/testtype.cpp +++ b/test/testtype.cpp @@ -238,9 +238,8 @@ class TestType : public TestFixture { } void checkIntegerOverflow() { - Settings settings; + Settings settings = settingsBuilder().severity(Severity::warning).build(); PLATFORM(settings.platform, cppcheck::Platform::Type::Unix32); - settings.severity.enable(Severity::warning); check("x = (int)0x10000 * (int)0x10000;", &settings); ASSERT_EQUALS("[test.cpp:1]: (error) Signed integer overflow for expression '(int)0x10000*(int)0x10000'.\n", errout.str()); @@ -331,8 +330,7 @@ class TestType : public TestFixture { } void longCastAssign() { - Settings settings; - settings.severity.enable(Severity::style); + Settings settings = settingsBuilder().severity(Severity::style).build(); PLATFORM(settings.platform, cppcheck::Platform::Type::Unix64); check("long f(int x, int y) {\n" @@ -363,8 +361,7 @@ class TestType : public TestFixture { } void longCastReturn() { - Settings settings; - settings.severity.enable(Severity::style); + Settings settings = settingsBuilder().severity(Severity::style).build(); check("long f(int x, int y) {\n" " return x * y;\n" diff --git a/test/testuninitvar.cpp b/test/testuninitvar.cpp index fc322089214..b1d3253094e 100644 --- a/test/testuninitvar.cpp +++ b/test/testuninitvar.cpp @@ -35,11 +35,9 @@ class TestUninitVar : public TestFixture { TestUninitVar() : TestFixture("TestUninitVar") {} private: - Settings settings; + Settings settings = settingsBuilder().library("std.cfg").build(); void run() override { - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(uninitvar1); TEST_CASE(uninitvar_warn_once); // only write 1 warning at a time TEST_CASE(uninitvar_decl); // handling various types in C and C++ files @@ -111,14 +109,15 @@ class TestUninitVar : public TestFixture { // Clear the error buffer.. errout.str(""); + const Settings settings1 = settingsBuilder(settings).debugwarnings(debugwarnings).build(); + // Tokenize.. - settings.debugwarnings = debugwarnings; - Tokenizer tokenizer(&settings, this); + Tokenizer tokenizer(&settings1, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, fname), file, line); // Check for redundant code.. - CheckUninitVar checkuninitvar(&tokenizer, &settings, this); + CheckUninitVar checkuninitvar(&tokenizer, &settings1, this); checkuninitvar.check(); settings.debugwarnings = false; diff --git a/test/testunusedfunctions.cpp b/test/testunusedfunctions.cpp index acdb5ddb206..82d2b68b159 100644 --- a/test/testunusedfunctions.cpp +++ b/test/testunusedfunctions.cpp @@ -31,11 +31,9 @@ class TestUnusedFunctions : public TestFixture { TestUnusedFunctions() : TestFixture("TestUnusedFunctions") {} private: - Settings settings; + Settings settings = settingsBuilder().severity(Severity::style).build(); void run() override { - settings.severity.enable(Severity::style); - TEST_CASE(incondition); TEST_CASE(return1); TEST_CASE(return2); diff --git a/test/testunusedprivfunc.cpp b/test/testunusedprivfunc.cpp index a9aaef5bebe..ffdb0459317 100644 --- a/test/testunusedprivfunc.cpp +++ b/test/testunusedprivfunc.cpp @@ -36,11 +36,9 @@ class TestUnusedPrivateFunction : public TestFixture { TestUnusedPrivateFunction() : TestFixture("TestUnusedPrivateFunction") {} private: - Settings settings; + Settings settings = settingsBuilder().severity(Severity::style).build(); void run() override { - settings.severity.enable(Severity::style); - TEST_CASE(test1); TEST_CASE(test2); TEST_CASE(test3); diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 803fd476b42..534a34b0495 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -37,13 +37,9 @@ class TestUnusedVar : public TestFixture { TestUnusedVar() : TestFixture("TestUnusedVar") {} private: - Settings settings; + Settings settings = settingsBuilder().severity(Severity::style).checkLibrary().library("std.cfg").build(); void run() override { - settings.severity.enable(Severity::style); - settings.checkLibrary = true; - LOAD_LIB_2(settings.library, "std.cfg"); - TEST_CASE(isRecordTypeWithoutSideEffects); TEST_CASE(cleanFunction); diff --git a/test/testvaarg.cpp b/test/testvaarg.cpp index 1db5cf73fa6..b4307c32d6e 100644 --- a/test/testvaarg.cpp +++ b/test/testvaarg.cpp @@ -31,7 +31,7 @@ class TestVaarg : public TestFixture { TestVaarg() : TestFixture("TestVaarg") {} private: - Settings settings; + const Settings settings = settingsBuilder().severity(Severity::warning).build(); #define check(code) check_(code, __FILE__, __LINE__) void check_(const char code[], const char* file, int line) { @@ -48,8 +48,6 @@ class TestVaarg : public TestFixture { } void run() override { - settings.severity.enable(Severity::warning); - TEST_CASE(wrongParameterTo_va_start); TEST_CASE(referenceAs_va_start); TEST_CASE(va_end_missing); diff --git a/test/testvalueflow.cpp b/test/testvalueflow.cpp index b36b82eb7a8..fb893de1d2b 100644 --- a/test/testvalueflow.cpp +++ b/test/testvalueflow.cpp @@ -46,7 +46,7 @@ class TestValueFlow : public TestFixture { TestValueFlow() : TestFixture("TestValueFlow") {} private: - Settings settings; + Settings settings = settingsBuilder().library("std.cfg").build(); void run() override { // strcpy, abort cfg @@ -56,7 +56,6 @@ class TestValueFlow : public TestFixture { " true \n" // abort is a noreturn function ""; ASSERT_EQUALS(true, settings.library.loadxmldata(cfg, sizeof(cfg))); - LOAD_LIB_2(settings.library, "std.cfg"); TEST_CASE(valueFlowNumber); TEST_CASE(valueFlowString); @@ -6572,8 +6571,7 @@ class TestValueFlow : public TestFixture { void valueFlowSafeFunctionParameterValues() { const char *code; std::list values; - Settings s; - LOAD_LIB_2(s.library, "std.cfg"); + Settings s = settingsBuilder().library("std.cfg").build(); s.safeChecks.classes = s.safeChecks.externalFunctions = s.safeChecks.internalFunctions = true; code = "short f(short x) {\n" @@ -6624,8 +6622,7 @@ class TestValueFlow : public TestFixture { void valueFlowUnknownFunctionReturn() { const char *code; std::list values; - Settings s; - LOAD_LIB_2(s.library, "std.cfg"); + Settings s = settingsBuilder().library("std.cfg").build(); s.checkUnknownFunctionReturn.insert("rand"); code = "x = rand();"; diff --git a/test/testvarid.cpp b/test/testvarid.cpp index 3c19a4b493e..5b44b4d3444 100644 --- a/test/testvarid.cpp +++ b/test/testvarid.cpp @@ -33,13 +33,10 @@ class TestVarID : public TestFixture { public: TestVarID() : TestFixture("TestVarID") { PLATFORM(settings.platform, cppcheck::Platform::Type::Unix64); - settings.standards.c = Standards::C89; - settings.standards.cpp = Standards::CPPLatest; - settings.checkUnusedTemplates = true; } private: - Settings settings; + Settings settings = settingsBuilder().c(Standards::C89).cpp(Standards::CPPLatest).checkUnusedTemplates().build(); void run() override { TEST_CASE(varid1); TEST_CASE(varid2); From 5783bed36dba2322f31831c44bfad332bfb9e658 Mon Sep 17 00:00:00 2001 From: firewave Date: Thu, 16 Feb 2023 23:40:18 +0100 Subject: [PATCH 05/18] moved `givenACodeSampleToTokenize::settings` instance to proper file --- test/helpers.cpp | 2 ++ test/testutils.cpp | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/helpers.cpp b/test/helpers.cpp index d18ef288940..f58c3c92944 100644 --- a/test/helpers.cpp +++ b/test/helpers.cpp @@ -103,3 +103,5 @@ std::string PreprocessorHelper::getcode(Preprocessor &preprocessor, const std::s return ret; } + +const Settings givenACodeSampleToTokenize::settings; \ No newline at end of file diff --git a/test/testutils.cpp b/test/testutils.cpp index ff492ac71e4..6b61634822a 100644 --- a/test/testutils.cpp +++ b/test/testutils.cpp @@ -26,8 +26,6 @@ #include #include -const Settings givenACodeSampleToTokenize::settings; - class TestUtils : public TestFixture { public: TestUtils() : TestFixture("TestUtils") {} From b8079ac48fb3bb7ff8eb498cef2e2b54d2c2ddbb Mon Sep 17 00:00:00 2001 From: firewave Date: Sat, 18 Feb 2023 11:16:00 +0100 Subject: [PATCH 06/18] made some local `const Settings` objects in test `static` --- test/testastutils.cpp | 18 +++++++++--------- test/testbufferoverrun.cpp | 2 +- test/testclangimport.cpp | 2 +- test/testclass.cpp | 12 ++++++------ test/testconstructors.cpp | 8 ++++---- test/testnullpointer.cpp | 2 +- test/testsimplifytypedef.cpp | 2 +- test/testsummaries.cpp | 2 +- test/testtoken.cpp | 2 +- test/testtokenize.cpp | 2 +- test/testtokenrange.cpp | 2 +- 11 files changed, 27 insertions(+), 27 deletions(-) diff --git a/test/testastutils.cpp b/test/testastutils.cpp index 91e44a7628d..8ad5b45dded 100644 --- a/test/testastutils.cpp +++ b/test/testastutils.cpp @@ -50,7 +50,7 @@ class TestAstUtils : public TestFixture { #define findLambdaEndToken(code) findLambdaEndToken_(code, __FILE__, __LINE__) bool findLambdaEndToken_(const char code[], const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -84,7 +84,7 @@ class TestAstUtils : public TestFixture { #define findLambdaStartToken(code) findLambdaStartToken_(code, __FILE__, __LINE__) bool findLambdaStartToken_(const char code[], const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -117,7 +117,7 @@ class TestAstUtils : public TestFixture { #define isNullOperand(code) isNullOperand_(code, __FILE__, __LINE__) bool isNullOperand_(const char code[], const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -139,7 +139,7 @@ class TestAstUtils : public TestFixture { #define isReturnScope(code, offset) isReturnScope_(code, offset, __FILE__, __LINE__) bool isReturnScope_(const char code[], int offset, const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -170,7 +170,7 @@ class TestAstUtils : public TestFixture { #define isSameExpression(code, tokStr1, tokStr2) isSameExpression_(code, tokStr1, tokStr2, __FILE__, __LINE__) bool isSameExpression_(const char code[], const char tokStr1[], const char tokStr2[], const char* file, int line) { - const Settings settings; + static const Settings settings; Library library; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); @@ -210,7 +210,7 @@ class TestAstUtils : public TestFixture { #define isVariableChanged(code, startPattern, endPattern) isVariableChanged_(code, startPattern, endPattern, __FILE__, __LINE__) bool isVariableChanged_(const char code[], const char startPattern[], const char endPattern[], const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -240,7 +240,7 @@ class TestAstUtils : public TestFixture { #define isVariableChangedByFunctionCall(code, pattern, inconclusive) isVariableChangedByFunctionCall_(code, pattern, inconclusive, __FILE__, __LINE__) bool isVariableChangedByFunctionCall_(const char code[], const char pattern[], bool *inconclusive, const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -416,7 +416,7 @@ class TestAstUtils : public TestFixture { #define nextAfterAstRightmostLeaf(code, parentPattern, rightPattern) nextAfterAstRightmostLeaf_(code, parentPattern, rightPattern, __FILE__, __LINE__) bool nextAfterAstRightmostLeaf_(const char code[], const char parentPattern[], const char rightPattern[], const char* file, int line) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -441,7 +441,7 @@ class TestAstUtils : public TestFixture { enum class Result {False, True, Fail}; Result isUsedAsBool(const char code[], const char pattern[]) { - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); if (!tokenizer.tokenize(istr, "test.cpp")) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 3b17fd93b65..4897f308577 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -5520,7 +5520,7 @@ class TestBufferOverrun : public TestFixture { void checkPipeParameterSize() { // #3521 - const Settings settings = settingsBuilder().library("posix.cfg").build(); + static const Settings settings = settingsBuilder().library("posix.cfg").build(); check("void f(){\n" "int pipefd[1];\n" // <-- array of two integers is needed diff --git a/test/testclangimport.cpp b/test/testclangimport.cpp index 73593f09511..d0e7e38c5b5 100644 --- a/test/testclangimport.cpp +++ b/test/testclangimport.cpp @@ -137,7 +137,7 @@ class TestClangImport : public TestFixture { } std::string parse(const char clang[]) { - const Settings settings = settingsBuilder().clang().build(); + static const Settings settings = settingsBuilder().clang().build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(clang); clangimport::parseClangAstDump(&tokenizer, istr); diff --git a/test/testclass.cpp b/test/testclass.cpp index 565edab0ebf..51e48e248ec 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -259,7 +259,7 @@ class TestClass : public TestFixture { void checkCopyCtorAndEqOperator_(const char code[], const char* file, int line) { // Clear the error log errout.str(""); - const Settings settings = settingsBuilder().severity(Severity::warning).build(); + static const Settings settings = settingsBuilder().severity(Severity::warning).build(); Preprocessor preprocessor(settings); @@ -2886,7 +2886,7 @@ class TestClass : public TestFixture { #define checkNoMemset(...) checkNoMemset_(__FILE__, __LINE__, __VA_ARGS__) void checkNoMemset_(const char* file, int line, const char code[]) { - const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build(); + static const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build(); checkNoMemset_(file, line, code, settings); } @@ -3150,7 +3150,7 @@ class TestClass : public TestFixture { errout.str()); // #1655 - const Settings s = settingsBuilder().library("std.cfg").build(); + static const Settings s = settingsBuilder().library("std.cfg").build(); checkNoMemset("void f() {\n" " char c[] = \"abc\";\n" " std::string s;\n" @@ -7279,7 +7279,7 @@ class TestClass : public TestFixture { errout.str(""); // Check.. - const Settings settings = settingsBuilder().severity(Severity::performance).build(); + static const Settings settings = settingsBuilder().severity(Severity::performance).build(); Preprocessor preprocessor(settings); @@ -7960,7 +7960,7 @@ class TestClass : public TestFixture { // Clear the error log errout.str(""); - const Settings settings = settingsBuilder().severity(Severity::style).build(); + static const Settings settings = settingsBuilder().severity(Severity::style).build(); Preprocessor preprocessor(settings); @@ -8317,7 +8317,7 @@ class TestClass : public TestFixture { void ctu(const std::vector &code) { - const Settings settings; + static const Settings settings; auto &check = getCheck(); // getFileInfo diff --git a/test/testconstructors.cpp b/test/testconstructors.cpp index 55507560a74..337af7340df 100644 --- a/test/testconstructors.cpp +++ b/test/testconstructors.cpp @@ -1947,8 +1947,8 @@ class TestConstructors : public TestFixture { } void initvar_smartptr() { // #10237 - // TODO: test shuld probably not pass without library - const Settings s = settingsBuilder() /*.library("std.cfg")*/.build(); + // TODO: test should probably not pass without library + static const Settings s = settingsBuilder() /*.library("std.cfg")*/.build(); check("struct S {\n" " explicit S(const std::shared_ptr& sp) {\n" " set(*sp);\n" @@ -1990,7 +1990,7 @@ class TestConstructors : public TestFixture { "{ }", true); ASSERT_EQUALS("[test.cpp:13]: (warning, inconclusive) Member variable 'Fred::ints' is not assigned a value in 'Fred::operator='.\n", errout.str()); - const Settings s = settingsBuilder().certainty(Certainty::inconclusive).severity(Severity::style).severity(Severity::warning).library("std.cfg").build(); + static const Settings s = settingsBuilder().certainty(Certainty::inconclusive).severity(Severity::style).severity(Severity::warning).library("std.cfg").build(); check("struct S {\n" " S& operator=(const S& s) { return *this; }\n" " std::mutex m;\n" @@ -3603,7 +3603,7 @@ class TestConstructors : public TestFixture { void uninitVarInheritClassInit() { // TODO: test should probably not pass without library - const Settings s = settingsBuilder() /*.library("vcl.cfg")*/.build(); + static const Settings s = settingsBuilder() /*.library("vcl.cfg")*/.build(); check("class Fred: public TObject\n" "{\n" diff --git a/test/testnullpointer.cpp b/test/testnullpointer.cpp index e013c513ca4..637dba5011c 100644 --- a/test/testnullpointer.cpp +++ b/test/testnullpointer.cpp @@ -195,7 +195,7 @@ class TestNullPointer : public TestFixture { // Clear the error buffer.. errout.str(""); - const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, false).build(); + static const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, false).build(); // Raw tokens.. std::vector files(1, "test.cpp"); diff --git a/test/testsimplifytypedef.cpp b/test/testsimplifytypedef.cpp index 4d750148114..3c9ebe1627c 100644 --- a/test/testsimplifytypedef.cpp +++ b/test/testsimplifytypedef.cpp @@ -280,7 +280,7 @@ class TestSimplifyTypedef : public TestFixture { errout.str(""); // Tokenize.. // show warnings about unhandled typedef - const Settings settings = settingsBuilder(settings2).certainty(Certainty::inconclusive).debugwarnings().build(); + static const Settings settings = settingsBuilder(settings2).certainty(Certainty::inconclusive).debugwarnings().build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); diff --git a/test/testsummaries.cpp b/test/testsummaries.cpp index cfead86fdd7..caeb0a6690c 100644 --- a/test/testsummaries.cpp +++ b/test/testsummaries.cpp @@ -44,7 +44,7 @@ class TestSummaries : public TestFixture { errout.str(""); // tokenize.. - const Settings settings; + static const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); diff --git a/test/testtoken.cpp b/test/testtoken.cpp index b85fcecdfec..40420e18718 100644 --- a/test/testtoken.cpp +++ b/test/testtoken.cpp @@ -395,7 +395,7 @@ class TestToken : public TestFixture { void getStrSize() const { Token tok; - const Settings settings; + static const Settings settings; tok.str("\"\""); ASSERT_EQUALS(sizeof(""), Token::getStrSize(&tok, &settings)); diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 5627c7db1ff..3ebce4e5b4b 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -524,7 +524,7 @@ class TestTokenizer : public TestFixture { std::string tokenizeDebugListing_(const char* file, int line, const char code[], const char filename[] = "test.cpp") { errout.str(""); - const Settings settings = settingsBuilder(settings2).c(Standards::C89).cpp(Standards::CPP03).build(); + static const Settings settings = settingsBuilder(settings2).c(Standards::C89).cpp(Standards::CPP03).build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(code); diff --git a/test/testtokenrange.cpp b/test/testtokenrange.cpp index 2598c832847..7e9e3772ae3 100644 --- a/test/testtokenrange.cpp +++ b/test/testtokenrange.cpp @@ -101,7 +101,7 @@ class TestTokenRange : public TestFixture { } void scopeExample() const { - const Settings settings; + static const Settings settings; Tokenizer tokenizer{ &settings, nullptr }; std::istringstream sample("void a(){} void main(){ if(true){a();} }"); ASSERT(tokenizer.tokenize(sample, "test.cpp")); From 8109781c7c7211696c134d7a4b4f2509b0e85e56 Mon Sep 17 00:00:00 2001 From: firewave Date: Sat, 18 Feb 2023 13:22:28 +0100 Subject: [PATCH 07/18] TestBufferOverrun: added TODO about missing settings reset --- test/testbufferoverrun.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index 4897f308577..ecc6f9709c4 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -3350,6 +3350,7 @@ class TestBufferOverrun : public TestFixture { void buffer_overrun_errorpath() { setMultiline(); + const Settings settingsOld = settings0; settings0.templateLocation = "{file}:{line}:note:{info}"; check("void f() {\n" @@ -3359,6 +3360,10 @@ class TestBufferOverrun : public TestFixture { ASSERT_EQUALS("test.cpp:3:error:Buffer is accessed out of bounds: p\n" "test.cpp:2:note:Assign p, buffer with size 10\n" "test.cpp:3:note:Buffer overrun\n", errout.str()); + + // TODO: need to reset this but it breaks other tests + (void)settingsOld; + //settings0 = settingsOld; } void buffer_overrun_bailoutIfSwitch() { From d46fcc8475d352deb266a8b69a5f0b5bce551135 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 19 Feb 2023 01:57:56 +0100 Subject: [PATCH 08/18] added TODO about `exename` not yet being set in `TestFixture::SettingsBuilder::library()` --- test/fixture.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/fixture.cpp b/test/fixture.cpp index 1a202bae9c3..692cb67672f 100644 --- a/test/fixture.cpp +++ b/test/fixture.cpp @@ -400,6 +400,7 @@ void TestFixture::setTemplateFormat(const std::string &templateFormat) } TestFixture::SettingsBuilder& TestFixture::SettingsBuilder::library(const char lib[]) { + // TODO: exename is not yet set LOAD_LIB_2_EXE(settings.library, lib, fixture.exename.c_str()); // strip extension std::string lib_s(lib); From fedf5690101bb41d9d70772d9510c486c216d146 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 19 Feb 2023 10:43:11 +0100 Subject: [PATCH 09/18] small test classes initialization cleanup --- test/testcmdlineparser.cpp | 7 +++---- test/testerrorlogger.cpp | 6 +++--- test/testfilelister.cpp | 3 +-- test/testpathmatch.cpp | 15 +++++---------- test/testpreprocessor.cpp | 6 ++---- test/testsymboldatabase.cpp | 9 +++------ test/testvarid.cpp | 6 +++--- 7 files changed, 20 insertions(+), 32 deletions(-) diff --git a/test/testcmdlineparser.cpp b/test/testcmdlineparser.cpp index 7a34106e7b7..69e6026cae0 100644 --- a/test/testcmdlineparser.cpp +++ b/test/testcmdlineparser.cpp @@ -37,9 +37,8 @@ class TestCmdlineParser : public TestFixture { public: - TestCmdlineParser() - : TestFixture("TestCmdlineParser") - , defParser(settings, settings.nomsg, settings.nofail) { + TestCmdlineParser() : TestFixture("TestCmdlineParser") + { #if defined(_WIN64) || defined(_WIN32) CmdLineParser::SHOW_DEF_PLATFORM_MSG = false; #endif @@ -53,7 +52,7 @@ class TestCmdlineParser : public TestFixture { private: Settings settings; // TODO: reset after each test - CmdLineParser defParser; // TODO: reset after each test + CmdLineParser defParser{settings, settings.nomsg, settings.nofail}; // TODO: reset after each test void run() override { TEST_CASE(nooptions); diff --git a/test/testerrorlogger.cpp b/test/testerrorlogger.cpp index ac1160d9b58..1f48090e802 100644 --- a/test/testerrorlogger.cpp +++ b/test/testerrorlogger.cpp @@ -31,11 +31,11 @@ class TestErrorLogger : public TestFixture { public: - TestErrorLogger() : TestFixture("TestErrorLogger"), fooCpp5("foo.cpp", 5, 1), barCpp8("bar.cpp", 8, 1) {} + TestErrorLogger() : TestFixture("TestErrorLogger") {} private: - const ErrorMessage::FileLocation fooCpp5; - const ErrorMessage::FileLocation barCpp8; + const ErrorMessage::FileLocation fooCpp5{"foo.cpp", 5, 1}; + const ErrorMessage::FileLocation barCpp8{"bar.cpp", 8, 1}; void run() override { TEST_CASE(PatternSearchReplace); diff --git a/test/testfilelister.cpp b/test/testfilelister.cpp index 9efcc9661e6..d9e43979c16 100644 --- a/test/testfilelister.cpp +++ b/test/testfilelister.cpp @@ -29,8 +29,7 @@ class TestFileLister : public TestFixture { public: - TestFileLister() - : TestFixture("TestFileLister") {} + TestFileLister() : TestFixture("TestFileLister") {} private: void run() override { diff --git a/test/testpathmatch.cpp b/test/testpathmatch.cpp index c81162cff82..3ed2aede94a 100644 --- a/test/testpathmatch.cpp +++ b/test/testpathmatch.cpp @@ -25,18 +25,13 @@ class TestPathMatch : public TestFixture { public: - TestPathMatch() - : TestFixture("TestPathMatch") - , emptyMatcher(std::vector()) - , srcMatcher(std::vector(1, "src/")) - , fooCppMatcher(std::vector(1, "foo.cpp")) - , srcFooCppMatcher(std::vector(1, "src/foo.cpp")) {} + TestPathMatch() : TestFixture("TestPathMatch") {} private: - const PathMatch emptyMatcher; - const PathMatch srcMatcher; - const PathMatch fooCppMatcher; - const PathMatch srcFooCppMatcher; + const PathMatch emptyMatcher{std::vector()}; + const PathMatch srcMatcher{std::vector(1, "src/")}; + const PathMatch fooCppMatcher{std::vector(1, "foo.cpp")}; + const PathMatch srcFooCppMatcher{std::vector(1, "src/foo.cpp")}; void run() override { TEST_CASE(emptymaskemptyfile); diff --git a/test/testpreprocessor.cpp b/test/testpreprocessor.cpp index 4253bc844f8..ea33f92541c 100644 --- a/test/testpreprocessor.cpp +++ b/test/testpreprocessor.cpp @@ -43,9 +43,7 @@ class ErrorLogger; class TestPreprocessor : public TestFixture { public: - TestPreprocessor() - : TestFixture("TestPreprocessor") - , preprocessor0(settings0, this) {} + TestPreprocessor() : TestFixture("TestPreprocessor") {} class OurPreprocessor : public Preprocessor { public: @@ -71,7 +69,7 @@ class TestPreprocessor : public TestFixture { private: Settings settings0 = settingsBuilder().severity(Severity::information).build(); - Preprocessor preprocessor0; + Preprocessor preprocessor0{settings0, this}; void run() override { diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index ccc2093ada2..3a68ecb052b 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -63,14 +63,11 @@ class TestSymbolDatabase; class TestSymbolDatabase : public TestFixture { public: - TestSymbolDatabase() - : TestFixture("TestSymbolDatabase") - ,vartok(nullptr) - ,typetok(nullptr) {} + TestSymbolDatabase() : TestFixture("TestSymbolDatabase") {} private: - const Token* vartok; - const Token* typetok; + const Token* vartok{nullptr}; + const Token* typetok{nullptr}; // If there are unused templates, keep those Settings settings1 = settingsBuilder().library("std.cfg").checkUnusedTemplates().build(); Settings settings2 = settingsBuilder().checkUnusedTemplates().build(); diff --git a/test/testvarid.cpp b/test/testvarid.cpp index 5b44b4d3444..a834cff5458 100644 --- a/test/testvarid.cpp +++ b/test/testvarid.cpp @@ -31,13 +31,13 @@ class TestVarID : public TestFixture { public: - TestVarID() : TestFixture("TestVarID") { - PLATFORM(settings.platform, cppcheck::Platform::Type::Unix64); - } + TestVarID() : TestFixture("TestVarID") {} private: Settings settings = settingsBuilder().c(Standards::C89).cpp(Standards::CPPLatest).checkUnusedTemplates().build(); void run() override { + PLATFORM(settings.platform, cppcheck::Platform::Type::Unix64); + TEST_CASE(varid1); TEST_CASE(varid2); TEST_CASE(varid3); From 67009a242dda0beee81725de17f1397fd384608d Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 19 Feb 2023 11:17:25 +0100 Subject: [PATCH 10/18] TestIO: fixed performance regression --- test/testio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testio.cpp b/test/testio.cpp index 0191244108a..23695e89999 100644 --- a/test/testio.cpp +++ b/test/testio.cpp @@ -36,6 +36,7 @@ class TestIO : public TestFixture { private: const Settings settings = settingsBuilder().library("std.cfg").library("windows.cfg").library("qt.cfg").build(); + Settings settings1 = settingsBuilder().library("std.cfg").library("windows.cfg").library("qt.cfg").build(); void run() override { TEST_CASE(coutCerrMisusage); @@ -86,7 +87,6 @@ class TestIO : public TestFixture { // Clear the error buffer.. errout.str(""); - Settings settings1 = settings; settings1.severity.clear(); settings1.severity.enable(Severity::warning); settings1.severity.enable(Severity::style); From efa8945e0cf502795bf24d52cb91da6ffc0ea1b3 Mon Sep 17 00:00:00 2001 From: firewave Date: Fri, 3 Mar 2023 19:44:49 +0100 Subject: [PATCH 11/18] testclass.cpp: adjustments after `Preprocessor` was added by another PR --- test/testclass.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/testclass.cpp b/test/testclass.cpp index 51e48e248ec..3db46fa882f 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -259,7 +259,7 @@ class TestClass : public TestFixture { void checkCopyCtorAndEqOperator_(const char code[], const char* file, int line) { // Clear the error log errout.str(""); - static const Settings settings = settingsBuilder().severity(Severity::warning).build(); + Settings settings = settingsBuilder().severity(Severity::warning).build(); Preprocessor preprocessor(settings); @@ -2886,7 +2886,7 @@ class TestClass : public TestFixture { #define checkNoMemset(...) checkNoMemset_(__FILE__, __LINE__, __VA_ARGS__) void checkNoMemset_(const char* file, int line, const char code[]) { - static const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build(); + Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build(); checkNoMemset_(file, line, code, settings); } @@ -3150,7 +3150,7 @@ class TestClass : public TestFixture { errout.str()); // #1655 - static const Settings s = settingsBuilder().library("std.cfg").build(); + Settings s = settingsBuilder().library("std.cfg").build(); checkNoMemset("void f() {\n" " char c[] = \"abc\";\n" " std::string s;\n" @@ -7279,7 +7279,7 @@ class TestClass : public TestFixture { errout.str(""); // Check.. - static const Settings settings = settingsBuilder().severity(Severity::performance).build(); + Settings settings = settingsBuilder().severity(Severity::performance).build(); Preprocessor preprocessor(settings); @@ -7960,7 +7960,7 @@ class TestClass : public TestFixture { // Clear the error log errout.str(""); - static const Settings settings = settingsBuilder().severity(Severity::style).build(); + Settings settings = settingsBuilder().severity(Severity::style).build(); Preprocessor preprocessor(settings); From 61338a68c93e1d56ffd39cd775bb6c9f202f2927 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 12 Mar 2023 16:53:16 +0100 Subject: [PATCH 12/18] testtokenlist.cpp: fixed `functionConst` selfcheck warning --- test/testtokenlist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testtokenlist.cpp b/test/testtokenlist.cpp index ee555db8bd3..3ca1763cbd3 100644 --- a/test/testtokenlist.cpp +++ b/test/testtokenlist.cpp @@ -47,7 +47,7 @@ class TestTokenList : public TestFixture { ASSERT_EQUALS("0x89504e470d0a1a0a", tokenlist.front()->str()); } - void testaddtoken2() { + void testaddtoken2() const { const std::string code = "0xF0000000"; Settings settings1; settings1.platform.int_bit = 32; From 7f505165fb7ab6a9617a413e5f5fd13243fab59f Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 12 Mar 2023 17:25:08 +0100 Subject: [PATCH 13/18] teststl.cpp: removed `const` to fix compilation after changes in another merge --- test/teststl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/teststl.cpp b/test/teststl.cpp index 95c1c81254c..6595178f4e8 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -35,7 +35,7 @@ class TestStl : public TestFixture { TestStl() : TestFixture("TestStl") {} private: - const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).severity(Severity::performance).library("std.cfg").build(); + Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).severity(Severity::performance).library("std.cfg").build(); void run() override { TEST_CASE(outOfBounds); From a0a0acf472ab1561379b4bc0427bd20e3adf0d0f Mon Sep 17 00:00:00 2001 From: firewave Date: Mon, 27 Mar 2023 19:42:55 +0200 Subject: [PATCH 14/18] testtokenlist.cpp: fixed `functionConst` selfcheck warnings --- test/testtokenlist.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/testtokenlist.cpp b/test/testtokenlist.cpp index 3ca1763cbd3..2198036838b 100644 --- a/test/testtokenlist.cpp +++ b/test/testtokenlist.cpp @@ -40,7 +40,7 @@ class TestTokenList : public TestFixture { } // inspired by #5895 - void testaddtoken1() { + void testaddtoken1() const { const std::string code = "0x89504e470d0a1a0a"; TokenList tokenlist(&settings); tokenlist.addtoken(code, 1, 1, false); @@ -69,7 +69,7 @@ class TestTokenList : public TestFixture { ASSERT(Token::simpleMatch(tokenlist.front(), "a + + 1 ; 1 + + b ;")); } - void isKeyword() { + void isKeyword() const { const char code[] = "for a int delete true"; From 935755f0134d2e658aa37f16052ec24278d4fd0c Mon Sep 17 00:00:00 2001 From: firewave Date: Sat, 15 Apr 2023 11:33:15 +0200 Subject: [PATCH 15/18] do not use `static const` settings in tests --- test/helpers.cpp | 2 -- test/helpers.h | 2 +- test/testastutils.cpp | 18 +++++++++--------- test/testbufferoverrun.cpp | 2 +- test/testclangimport.cpp | 2 +- test/testclass.cpp | 2 +- test/testconstructors.cpp | 6 +++--- test/testnullpointer.cpp | 2 +- test/testsimplifytypedef.cpp | 2 +- test/testsummaries.cpp | 2 +- test/testtoken.cpp | 4 ++-- test/testtokenize.cpp | 2 +- test/testtokenrange.cpp | 2 +- 13 files changed, 23 insertions(+), 25 deletions(-) diff --git a/test/helpers.cpp b/test/helpers.cpp index f58c3c92944..d18ef288940 100644 --- a/test/helpers.cpp +++ b/test/helpers.cpp @@ -103,5 +103,3 @@ std::string PreprocessorHelper::getcode(Preprocessor &preprocessor, const std::s return ret; } - -const Settings givenACodeSampleToTokenize::settings; \ No newline at end of file diff --git a/test/helpers.h b/test/helpers.h index 10e50042f55..9d8d0e9666a 100644 --- a/test/helpers.h +++ b/test/helpers.h @@ -33,7 +33,7 @@ class Suppressions; class givenACodeSampleToTokenize { private: Tokenizer tokenizer; - static const Settings settings; + const Settings settings; public: explicit givenACodeSampleToTokenize(const char sample[], bool createOnly = false, bool cpp = true) diff --git a/test/testastutils.cpp b/test/testastutils.cpp index 8ad5b45dded..91e44a7628d 100644 --- a/test/testastutils.cpp +++ b/test/testastutils.cpp @@ -50,7 +50,7 @@ class TestAstUtils : public TestFixture { #define findLambdaEndToken(code) findLambdaEndToken_(code, __FILE__, __LINE__) bool findLambdaEndToken_(const char code[], const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -84,7 +84,7 @@ class TestAstUtils : public TestFixture { #define findLambdaStartToken(code) findLambdaStartToken_(code, __FILE__, __LINE__) bool findLambdaStartToken_(const char code[], const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -117,7 +117,7 @@ class TestAstUtils : public TestFixture { #define isNullOperand(code) isNullOperand_(code, __FILE__, __LINE__) bool isNullOperand_(const char code[], const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -139,7 +139,7 @@ class TestAstUtils : public TestFixture { #define isReturnScope(code, offset) isReturnScope_(code, offset, __FILE__, __LINE__) bool isReturnScope_(const char code[], int offset, const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -170,7 +170,7 @@ class TestAstUtils : public TestFixture { #define isSameExpression(code, tokStr1, tokStr2) isSameExpression_(code, tokStr1, tokStr2, __FILE__, __LINE__) bool isSameExpression_(const char code[], const char tokStr1[], const char tokStr2[], const char* file, int line) { - static const Settings settings; + const Settings settings; Library library; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); @@ -210,7 +210,7 @@ class TestAstUtils : public TestFixture { #define isVariableChanged(code, startPattern, endPattern) isVariableChanged_(code, startPattern, endPattern, __FILE__, __LINE__) bool isVariableChanged_(const char code[], const char startPattern[], const char endPattern[], const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -240,7 +240,7 @@ class TestAstUtils : public TestFixture { #define isVariableChangedByFunctionCall(code, pattern, inconclusive) isVariableChangedByFunctionCall_(code, pattern, inconclusive, __FILE__, __LINE__) bool isVariableChangedByFunctionCall_(const char code[], const char pattern[], bool *inconclusive, const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -416,7 +416,7 @@ class TestAstUtils : public TestFixture { #define nextAfterAstRightmostLeaf(code, parentPattern, rightPattern) nextAfterAstRightmostLeaf_(code, parentPattern, rightPattern, __FILE__, __LINE__) bool nextAfterAstRightmostLeaf_(const char code[], const char parentPattern[], const char rightPattern[], const char* file, int line) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); @@ -441,7 +441,7 @@ class TestAstUtils : public TestFixture { enum class Result {False, True, Fail}; Result isUsedAsBool(const char code[], const char pattern[]) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); if (!tokenizer.tokenize(istr, "test.cpp")) diff --git a/test/testbufferoverrun.cpp b/test/testbufferoverrun.cpp index ecc6f9709c4..881117ce9bc 100644 --- a/test/testbufferoverrun.cpp +++ b/test/testbufferoverrun.cpp @@ -5525,7 +5525,7 @@ class TestBufferOverrun : public TestFixture { void checkPipeParameterSize() { // #3521 - static const Settings settings = settingsBuilder().library("posix.cfg").build(); + const Settings settings = settingsBuilder().library("posix.cfg").build(); check("void f(){\n" "int pipefd[1];\n" // <-- array of two integers is needed diff --git a/test/testclangimport.cpp b/test/testclangimport.cpp index d0e7e38c5b5..73593f09511 100644 --- a/test/testclangimport.cpp +++ b/test/testclangimport.cpp @@ -137,7 +137,7 @@ class TestClangImport : public TestFixture { } std::string parse(const char clang[]) { - static const Settings settings = settingsBuilder().clang().build(); + const Settings settings = settingsBuilder().clang().build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(clang); clangimport::parseClangAstDump(&tokenizer, istr); diff --git a/test/testclass.cpp b/test/testclass.cpp index 3db46fa882f..5dd41665684 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -8317,7 +8317,7 @@ class TestClass : public TestFixture { void ctu(const std::vector &code) { - static const Settings settings; + const Settings settings; auto &check = getCheck(); // getFileInfo diff --git a/test/testconstructors.cpp b/test/testconstructors.cpp index 337af7340df..e3429b67407 100644 --- a/test/testconstructors.cpp +++ b/test/testconstructors.cpp @@ -1948,7 +1948,7 @@ class TestConstructors : public TestFixture { void initvar_smartptr() { // #10237 // TODO: test should probably not pass without library - static const Settings s = settingsBuilder() /*.library("std.cfg")*/.build(); + const Settings s = settingsBuilder() /*.library("std.cfg")*/.build(); check("struct S {\n" " explicit S(const std::shared_ptr& sp) {\n" " set(*sp);\n" @@ -1990,7 +1990,7 @@ class TestConstructors : public TestFixture { "{ }", true); ASSERT_EQUALS("[test.cpp:13]: (warning, inconclusive) Member variable 'Fred::ints' is not assigned a value in 'Fred::operator='.\n", errout.str()); - static const Settings s = settingsBuilder().certainty(Certainty::inconclusive).severity(Severity::style).severity(Severity::warning).library("std.cfg").build(); + const Settings s = settingsBuilder().certainty(Certainty::inconclusive).severity(Severity::style).severity(Severity::warning).library("std.cfg").build(); check("struct S {\n" " S& operator=(const S& s) { return *this; }\n" " std::mutex m;\n" @@ -3603,7 +3603,7 @@ class TestConstructors : public TestFixture { void uninitVarInheritClassInit() { // TODO: test should probably not pass without library - static const Settings s = settingsBuilder() /*.library("vcl.cfg")*/.build(); + const Settings s = settingsBuilder() /*.library("vcl.cfg")*/.build(); check("class Fred: public TObject\n" "{\n" diff --git a/test/testnullpointer.cpp b/test/testnullpointer.cpp index 637dba5011c..e013c513ca4 100644 --- a/test/testnullpointer.cpp +++ b/test/testnullpointer.cpp @@ -195,7 +195,7 @@ class TestNullPointer : public TestFixture { // Clear the error buffer.. errout.str(""); - static const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, false).build(); + const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, false).build(); // Raw tokens.. std::vector files(1, "test.cpp"); diff --git a/test/testsimplifytypedef.cpp b/test/testsimplifytypedef.cpp index 3c9ebe1627c..4d750148114 100644 --- a/test/testsimplifytypedef.cpp +++ b/test/testsimplifytypedef.cpp @@ -280,7 +280,7 @@ class TestSimplifyTypedef : public TestFixture { errout.str(""); // Tokenize.. // show warnings about unhandled typedef - static const Settings settings = settingsBuilder(settings2).certainty(Certainty::inconclusive).debugwarnings().build(); + const Settings settings = settingsBuilder(settings2).certainty(Certainty::inconclusive).debugwarnings().build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line); diff --git a/test/testsummaries.cpp b/test/testsummaries.cpp index caeb0a6690c..cfead86fdd7 100644 --- a/test/testsummaries.cpp +++ b/test/testsummaries.cpp @@ -44,7 +44,7 @@ class TestSummaries : public TestFixture { errout.str(""); // tokenize.. - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(code); ASSERT_LOC(tokenizer.tokenize(istr, filename), file, line); diff --git a/test/testtoken.cpp b/test/testtoken.cpp index 40420e18718..f6c408ad03e 100644 --- a/test/testtoken.cpp +++ b/test/testtoken.cpp @@ -135,7 +135,7 @@ class TestToken : public TestFixture { #define MatchCheck(...) MatchCheck_(__FILE__, __LINE__, __VA_ARGS__) bool MatchCheck_(const char* file, int line, const std::string& code, const std::string& pattern, unsigned int varid = 0) { - static const Settings settings; + const Settings settings; Tokenizer tokenizer(&settings, this); std::istringstream istr(";" + code + ";"); try { @@ -395,7 +395,7 @@ class TestToken : public TestFixture { void getStrSize() const { Token tok; - static const Settings settings; + const Settings settings; tok.str("\"\""); ASSERT_EQUALS(sizeof(""), Token::getStrSize(&tok, &settings)); diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 3ebce4e5b4b..5627c7db1ff 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -524,7 +524,7 @@ class TestTokenizer : public TestFixture { std::string tokenizeDebugListing_(const char* file, int line, const char code[], const char filename[] = "test.cpp") { errout.str(""); - static const Settings settings = settingsBuilder(settings2).c(Standards::C89).cpp(Standards::CPP03).build(); + const Settings settings = settingsBuilder(settings2).c(Standards::C89).cpp(Standards::CPP03).build(); Tokenizer tokenizer(&settings, this); std::istringstream istr(code); diff --git a/test/testtokenrange.cpp b/test/testtokenrange.cpp index 7e9e3772ae3..2598c832847 100644 --- a/test/testtokenrange.cpp +++ b/test/testtokenrange.cpp @@ -101,7 +101,7 @@ class TestTokenRange : public TestFixture { } void scopeExample() const { - static const Settings settings; + const Settings settings; Tokenizer tokenizer{ &settings, nullptr }; std::istringstream sample("void a(){} void main(){ if(true){a();} }"); ASSERT(tokenizer.tokenize(sample, "test.cpp")); From cea46ae042259261dfb21457824c79afd092fd9b Mon Sep 17 00:00:00 2001 From: firewave Date: Sat, 15 Apr 2023 11:57:38 +0200 Subject: [PATCH 16/18] testthreadexecutor.cpp: removed `const` to fix compilation after changes in another merge --- test/testthreadexecutor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testthreadexecutor.cpp b/test/testthreadexecutor.cpp index 1c7ce10ab95..68d961fa8df 100644 --- a/test/testthreadexecutor.cpp +++ b/test/testthreadexecutor.cpp @@ -39,7 +39,7 @@ class TestThreadExecutor : public TestFixture { TestThreadExecutor() : TestFixture("TestThreadExecutor") {} private: - const Settings settings = settingsBuilder().library("std.cfg").build(); + Settings settings = settingsBuilder().library("std.cfg").build(); /** * Execute check using n jobs for y files which are have From dde6eea3a4885c72cbc226295d4b8880f7468875 Mon Sep 17 00:00:00 2001 From: firewave Date: Sat, 15 Apr 2023 11:59:05 +0200 Subject: [PATCH 17/18] dmake --- Makefile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 0b2ed9db379..11d2d307e8d 100644 --- a/Makefile +++ b/Makefile @@ -667,13 +667,13 @@ cli/stacktrace.o: cli/stacktrace.cpp cli/stacktrace.h lib/config.h lib/utils.h cli/threadexecutor.o: cli/threadexecutor.cpp cli/cppcheckexecutor.h cli/executor.h cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ cli/threadexecutor.cpp -test/fixture.o: test/fixture.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/options.h test/redirect.h +test/fixture.o: test/fixture.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h test/options.h test/redirect.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/fixture.cpp test/helpers.o: test/helpers.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errortypes.h lib/mathlib.h lib/path.h lib/preprocessor.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/helpers.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/helpers.cpp -test/main.o: test/main.cpp externals/simplecpp/simplecpp.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/options.h +test/main.o: test/main.cpp externals/simplecpp/simplecpp.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h test/options.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/main.cpp test/options.o: test/options.cpp test/options.h @@ -682,7 +682,7 @@ test/options.o: test/options.cpp test/options.h test/test64bit.o: test/test64bit.cpp lib/check.h lib/check64bit.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/test64bit.cpp -test/testanalyzerinformation.o: test/testanalyzerinformation.cpp lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h +test/testanalyzerinformation.o: test/testanalyzerinformation.cpp lib/analyzerinfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testanalyzerinformation.cpp test/testassert.o: test/testassert.cpp lib/check.h lib/checkassert.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h @@ -715,7 +715,7 @@ test/testclass.o: test/testclass.cpp externals/simplecpp/simplecpp.h lib/check.h test/testcmdlineparser.o: test/testcmdlineparser.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/redirect.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testcmdlineparser.cpp -test/testcolor.o: test/testcolor.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h test/fixture.h +test/testcolor.o: test/testcolor.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testcolor.cpp test/testcondition.o: test/testcondition.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkcondition.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.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 test/fixture.h @@ -733,7 +733,7 @@ test/testerrorlogger.o: test/testerrorlogger.cpp externals/tinyxml2/tinyxml2.h l test/testexceptionsafety.o: test/testexceptionsafety.cpp lib/check.h lib/checkexceptionsafety.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testexceptionsafety.cpp -test/testfilelister.o: test/testfilelister.cpp cli/filelister.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h +test/testfilelister.o: test/testfilelister.cpp cli/filelister.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testfilelister.cpp test/testfunctions.o: test/testfunctions.cpp lib/check.h lib/checkfunctions.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h @@ -760,7 +760,7 @@ test/testleakautovar.o: test/testleakautovar.cpp externals/simplecpp/simplecpp.h test/testlibrary.o: test/testlibrary.cpp externals/tinyxml2/tinyxml2.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h test/helpers.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testlibrary.cpp -test/testmathlib.o: test/testmathlib.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h +test/testmathlib.o: test/testmathlib.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testmathlib.cpp test/testmemleak.o: test/testmemleak.cpp lib/check.h lib/checkmemoryleak.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h @@ -769,19 +769,19 @@ test/testmemleak.o: test/testmemleak.cpp lib/check.h lib/checkmemoryleak.h lib/c test/testnullpointer.o: test/testnullpointer.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checknullpointer.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testnullpointer.cpp -test/testoptions.o: test/testoptions.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h test/options.h +test/testoptions.o: test/testoptions.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h test/options.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testoptions.cpp test/testother.o: test/testother.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkother.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.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 test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testother.cpp -test/testpath.o: test/testpath.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h +test/testpath.o: test/testpath.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testpath.cpp -test/testpathmatch.o: test/testpathmatch.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h +test/testpathmatch.o: test/testpathmatch.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testpathmatch.cpp -test/testplatform.o: test/testplatform.cpp externals/tinyxml2/tinyxml2.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/fixture.h +test/testplatform.o: test/testplatform.cpp externals/tinyxml2/tinyxml2.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testplatform.cpp test/testpostfixoperator.o: test/testpostfixoperator.cpp lib/check.h lib/checkpostfixoperator.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.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 test/fixture.h From aaecc8cebfba809002ff5113686314c014449e20 Mon Sep 17 00:00:00 2001 From: firewave Date: Sun, 30 Apr 2023 22:54:44 +0200 Subject: [PATCH 18/18] fixed `helpers.cpp` compilation without precompiled headers --- Makefile | 2 +- test/helpers.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 11d2d307e8d..efea319d3dc 100644 --- a/Makefile +++ b/Makefile @@ -670,7 +670,7 @@ cli/threadexecutor.o: cli/threadexecutor.cpp cli/cppcheckexecutor.h cli/executor test/fixture.o: test/fixture.cpp lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h test/options.h test/redirect.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/fixture.cpp -test/helpers.o: test/helpers.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errortypes.h lib/mathlib.h lib/path.h lib/preprocessor.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/helpers.h +test/helpers.o: test/helpers.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.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 test/helpers.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/helpers.cpp test/main.o: test/main.cpp externals/simplecpp/simplecpp.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/utils.h test/fixture.h test/options.h diff --git a/test/helpers.h b/test/helpers.h index 9d8d0e9666a..0907e207cf8 100644 --- a/test/helpers.h +++ b/test/helpers.h @@ -19,6 +19,7 @@ #ifndef helpersH #define helpersH +#include "settings.h" #include "tokenize.h" #include "tokenlist.h" @@ -27,7 +28,6 @@ class Token; class Preprocessor; -class Settings; class Suppressions; class givenACodeSampleToTokenize {