From 97d2e8afd90e25669b52ce33878ba24dc73f1c77 Mon Sep 17 00:00:00 2001 From: firewave Date: Tue, 4 Oct 2022 21:13:43 +0200 Subject: [PATCH] added and used `Timer::run()` helper --- lib/cppcheck.cpp | 22 +++++++++-------- lib/timer.h | 6 +++++ lib/tokenize.cpp | 62 ++++++++++++++++-------------------------------- 3 files changed, 38 insertions(+), 52 deletions(-) diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 7672a96b2f9..4c3bcb7d0b6 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -779,8 +779,9 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string // Get configurations.. std::set configurations; if ((mSettings.checkAllConfigurations && mSettings.userDefines.empty()) || mSettings.force) { - Timer t("Preprocessor::getConfigs", mSettings.showtime, &s_timerResults); - configurations = preprocessor.getConfigs(tokens1); + Timer::run("Preprocessor::getConfigs", mSettings.showtime, &s_timerResults, [&]() { + configurations = preprocessor.getConfigs(tokens1); + }); } else { configurations.insert(mSettings.userDefines); } @@ -843,9 +844,10 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string } if (mSettings.preprocessOnly) { - Timer t("Preprocessor::getcode", mSettings.showtime, &s_timerResults); - std::string codeWithoutCfg = preprocessor.getcode(tokens1, mCurrentConfig, files, true); - t.stop(); + std::string codeWithoutCfg; + Timer::run("Preprocessor::getcode", mSettings.showtime, &s_timerResults, [&]() { + codeWithoutCfg = preprocessor.getcode(tokens1, mCurrentConfig, files, true); + }); if (startsWith(codeWithoutCfg,"#file")) codeWithoutCfg.insert(0U, "//"); @@ -869,11 +871,10 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string try { // Create tokens, skip rest of iteration if failed - { - Timer timer("Tokenizer::createTokens", mSettings.showtime, &s_timerResults); + Timer::run("Tokenizer::createTokens", mSettings.showtime, &s_timerResults, [&]() { simplecpp::TokenList tokensP = preprocessor.preprocess(tokens1, mCurrentConfig, files, true); tokenizer.list.createTokens(std::move(tokensP)); - } + }); hasValidConfig = true; // locations macros @@ -1075,8 +1076,9 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer) return; } - Timer timerRunChecks(check->name() + "::runChecks", mSettings.showtime, &s_timerResults); - check->runChecks(tokenizer, this); + Timer::run(check->name() + "::runChecks", mSettings.showtime, &s_timerResults, [&]() { + check->runChecks(tokenizer, this); + }); } } diff --git a/lib/timer.h b/lib/timer.h index 28d3dffdac5..2d563eec71c 100644 --- a/lib/timer.h +++ b/lib/timer.h @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -79,6 +80,11 @@ class CPPCHECKLIB Timer { void stop(); + static void run(std::string str, SHOWTIME_MODES showtimeMode, TimerResultsIntf* timerResults, const std::function& f) { + Timer t(std::move(str), showtimeMode, timerResults); + f(); + } + private: const std::string mStr; TimerResultsIntf* mTimerResults{}; diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 100b80240aa..0e5be5fd83b 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -3407,30 +3407,21 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration) return false; } - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::createAst", mSettings.showtime, mTimerResults); - list.createAst(); - list.validateAst(mSettings.debugnormal); - } else { + const SHOWTIME_MODES showTime = mTimerResults ? mSettings.showtime : SHOWTIME_MODES::SHOWTIME_NONE; + + Timer::run("Tokenizer::simplifyTokens1::createAst", showTime, mTimerResults, [&]() { list.createAst(); list.validateAst(mSettings.debugnormal); - } + }); - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::createSymbolDatabase", mSettings.showtime, mTimerResults); + Timer::run("Tokenizer::simplifyTokens1::createSymbolDatabase", showTime, mTimerResults, [&]() { createSymbolDatabase(); - } else { - createSymbolDatabase(); - } + }); - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::setValueType", mSettings.showtime, mTimerResults); - mSymbolDatabase->setValueTypeInTokenList(false); - mSymbolDatabase->setValueTypeInTokenList(true); - } else { + Timer::run("Tokenizer::simplifyTokens1::setValueType", showTime, mTimerResults, [&]() { mSymbolDatabase->setValueTypeInTokenList(false); mSymbolDatabase->setValueTypeInTokenList(true); - } + }); if (!mSettings.buildDir.empty()) Summaries::create(*this, configuration); @@ -3441,12 +3432,9 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration) const bool doValueFlow = !disableValueflowEnv || (std::strcmp(disableValueflowEnv, "1") != 0); if (doValueFlow) { - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::ValueFlow", mSettings.showtime, mTimerResults); + Timer::run("Tokenizer::simplifyTokens1::ValueFlow", showTime, mTimerResults, [&]() { ValueFlow::setValues(list, *mSymbolDatabase, mErrorLogger, mSettings, mTimerResults); - } else { - ValueFlow::setValues(list, *mSymbolDatabase, mErrorLogger, mSettings, mTimerResults); - } + }); arraySizeAfterValueFlow(); } @@ -5557,13 +5545,12 @@ bool Tokenizer::simplifyTokenList1(const char FileName[]) validate(); + const SHOWTIME_MODES showTime = mTimerResults ? mSettings.showtime : SHOWTIME_MODES::SHOWTIME_NONE; + // Bail out if code is garbage - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::findGarbageCode", mSettings.showtime, mTimerResults); + Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::findGarbageCode", showTime, mTimerResults, [&]() { findGarbageCode(); - } else { - findGarbageCode(); - } + }); checkConfiguration(); @@ -5718,12 +5705,9 @@ bool Tokenizer::simplifyTokenList1(const char FileName[]) simplifyTypedefLHS(); // typedef.. - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTypedef", mSettings.showtime, mTimerResults); + Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTypedef", showTime, mTimerResults, [&]() { simplifyTypedef(); - } else { - simplifyTypedef(); - } + }); // using A = B; while (simplifyUsing()) @@ -5815,12 +5799,9 @@ bool Tokenizer::simplifyTokenList1(const char FileName[]) simplifyTypeIntrinsics(); // Handle templates.. - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTemplates", mSettings.showtime, mTimerResults); - simplifyTemplates(); - } else { + Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTemplates", showTime, mTimerResults, [&]() { simplifyTemplates(); - } + }); // The simplifyTemplates have inner loops if (Settings::terminated()) @@ -5845,12 +5826,9 @@ bool Tokenizer::simplifyTokenList1(const char FileName[]) validate(); // #6772 "segmentation fault (invalid code) in Tokenizer::setVarId" - if (mTimerResults) { - Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::setVarId", mSettings.showtime, mTimerResults); - setVarId(); - } else { + Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::setVarId", showTime, mTimerResults, [&](){ setVarId(); - } + }); // Link < with > createLinks2();