Skip to content

Commit bf6ae27

Browse files
authored
added and used Timer::run() helper (#4533)
1 parent 89434e1 commit bf6ae27

3 files changed

Lines changed: 38 additions & 52 deletions

File tree

lib/cppcheck.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -779,8 +779,9 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
779779
// Get configurations..
780780
std::set<std::string> configurations;
781781
if ((mSettings.checkAllConfigurations && mSettings.userDefines.empty()) || mSettings.force) {
782-
Timer t("Preprocessor::getConfigs", mSettings.showtime, &s_timerResults);
783-
configurations = preprocessor.getConfigs(tokens1);
782+
Timer::run("Preprocessor::getConfigs", mSettings.showtime, &s_timerResults, [&]() {
783+
configurations = preprocessor.getConfigs(tokens1);
784+
});
784785
} else {
785786
configurations.insert(mSettings.userDefines);
786787
}
@@ -843,9 +844,10 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
843844
}
844845

845846
if (mSettings.preprocessOnly) {
846-
Timer t("Preprocessor::getcode", mSettings.showtime, &s_timerResults);
847-
std::string codeWithoutCfg = preprocessor.getcode(tokens1, mCurrentConfig, files, true);
848-
t.stop();
847+
std::string codeWithoutCfg;
848+
Timer::run("Preprocessor::getcode", mSettings.showtime, &s_timerResults, [&]() {
849+
codeWithoutCfg = preprocessor.getcode(tokens1, mCurrentConfig, files, true);
850+
});
849851

850852
if (startsWith(codeWithoutCfg,"#file"))
851853
codeWithoutCfg.insert(0U, "//");
@@ -869,11 +871,10 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
869871

870872
try {
871873
// Create tokens, skip rest of iteration if failed
872-
{
873-
Timer timer("Tokenizer::createTokens", mSettings.showtime, &s_timerResults);
874+
Timer::run("Tokenizer::createTokens", mSettings.showtime, &s_timerResults, [&]() {
874875
simplecpp::TokenList tokensP = preprocessor.preprocess(tokens1, mCurrentConfig, files, true);
875876
tokenizer.list.createTokens(std::move(tokensP));
876-
}
877+
});
877878
hasValidConfig = true;
878879

879880
// locations macros
@@ -1075,8 +1076,9 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer)
10751076
return;
10761077
}
10771078

1078-
Timer timerRunChecks(check->name() + "::runChecks", mSettings.showtime, &s_timerResults);
1079-
check->runChecks(tokenizer, this);
1079+
Timer::run(check->name() + "::runChecks", mSettings.showtime, &s_timerResults, [&]() {
1080+
check->runChecks(tokenizer, this);
1081+
});
10801082
}
10811083
}
10821084

lib/timer.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
#include <cstdint>
2626
#include <ctime>
27+
#include <functional>
2728
#include <map>
2829
#include <mutex>
2930
#include <string>
@@ -79,6 +80,11 @@ class CPPCHECKLIB Timer {
7980

8081
void stop();
8182

83+
static void run(std::string str, SHOWTIME_MODES showtimeMode, TimerResultsIntf* timerResults, const std::function<void()>& f) {
84+
Timer t(std::move(str), showtimeMode, timerResults);
85+
f();
86+
}
87+
8288
private:
8389
const std::string mStr;
8490
TimerResultsIntf* mTimerResults{};

lib/tokenize.cpp

Lines changed: 20 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3407,30 +3407,21 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration)
34073407
return false;
34083408
}
34093409

3410-
if (mTimerResults) {
3411-
Timer t("Tokenizer::simplifyTokens1::createAst", mSettings.showtime, mTimerResults);
3412-
list.createAst();
3413-
list.validateAst(mSettings.debugnormal);
3414-
} else {
3410+
const SHOWTIME_MODES showTime = mTimerResults ? mSettings.showtime : SHOWTIME_MODES::SHOWTIME_NONE;
3411+
3412+
Timer::run("Tokenizer::simplifyTokens1::createAst", showTime, mTimerResults, [&]() {
34153413
list.createAst();
34163414
list.validateAst(mSettings.debugnormal);
3417-
}
3415+
});
34183416

3419-
if (mTimerResults) {
3420-
Timer t("Tokenizer::simplifyTokens1::createSymbolDatabase", mSettings.showtime, mTimerResults);
3417+
Timer::run("Tokenizer::simplifyTokens1::createSymbolDatabase", showTime, mTimerResults, [&]() {
34213418
createSymbolDatabase();
3422-
} else {
3423-
createSymbolDatabase();
3424-
}
3419+
});
34253420

3426-
if (mTimerResults) {
3427-
Timer t("Tokenizer::simplifyTokens1::setValueType", mSettings.showtime, mTimerResults);
3428-
mSymbolDatabase->setValueTypeInTokenList(false);
3429-
mSymbolDatabase->setValueTypeInTokenList(true);
3430-
} else {
3421+
Timer::run("Tokenizer::simplifyTokens1::setValueType", showTime, mTimerResults, [&]() {
34313422
mSymbolDatabase->setValueTypeInTokenList(false);
34323423
mSymbolDatabase->setValueTypeInTokenList(true);
3433-
}
3424+
});
34343425

34353426
if (!mSettings.buildDir.empty())
34363427
Summaries::create(*this, configuration);
@@ -3441,12 +3432,9 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration)
34413432
const bool doValueFlow = !disableValueflowEnv || (std::strcmp(disableValueflowEnv, "1") != 0);
34423433

34433434
if (doValueFlow) {
3444-
if (mTimerResults) {
3445-
Timer t("Tokenizer::simplifyTokens1::ValueFlow", mSettings.showtime, mTimerResults);
3435+
Timer::run("Tokenizer::simplifyTokens1::ValueFlow", showTime, mTimerResults, [&]() {
34463436
ValueFlow::setValues(list, *mSymbolDatabase, mErrorLogger, mSettings, mTimerResults);
3447-
} else {
3448-
ValueFlow::setValues(list, *mSymbolDatabase, mErrorLogger, mSettings, mTimerResults);
3449-
}
3437+
});
34503438

34513439
arraySizeAfterValueFlow();
34523440
}
@@ -5557,13 +5545,12 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
55575545

55585546
validate();
55595547

5548+
const SHOWTIME_MODES showTime = mTimerResults ? mSettings.showtime : SHOWTIME_MODES::SHOWTIME_NONE;
5549+
55605550
// Bail out if code is garbage
5561-
if (mTimerResults) {
5562-
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::findGarbageCode", mSettings.showtime, mTimerResults);
5551+
Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::findGarbageCode", showTime, mTimerResults, [&]() {
55635552
findGarbageCode();
5564-
} else {
5565-
findGarbageCode();
5566-
}
5553+
});
55675554

55685555
checkConfiguration();
55695556

@@ -5718,12 +5705,9 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
57185705
simplifyTypedefLHS();
57195706

57205707
// typedef..
5721-
if (mTimerResults) {
5722-
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTypedef", mSettings.showtime, mTimerResults);
5708+
Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTypedef", showTime, mTimerResults, [&]() {
57235709
simplifyTypedef();
5724-
} else {
5725-
simplifyTypedef();
5726-
}
5710+
});
57275711

57285712
// using A = B;
57295713
while (simplifyUsing())
@@ -5815,12 +5799,9 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
58155799
simplifyTypeIntrinsics();
58165800

58175801
// Handle templates..
5818-
if (mTimerResults) {
5819-
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTemplates", mSettings.showtime, mTimerResults);
5820-
simplifyTemplates();
5821-
} else {
5802+
Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::simplifyTemplates", showTime, mTimerResults, [&]() {
58225803
simplifyTemplates();
5823-
}
5804+
});
58245805

58255806
// The simplifyTemplates have inner loops
58265807
if (Settings::terminated())
@@ -5845,12 +5826,9 @@ bool Tokenizer::simplifyTokenList1(const char FileName[])
58455826

58465827
validate(); // #6772 "segmentation fault (invalid code) in Tokenizer::setVarId"
58475828

5848-
if (mTimerResults) {
5849-
Timer t("Tokenizer::simplifyTokens1::simplifyTokenList1::setVarId", mSettings.showtime, mTimerResults);
5850-
setVarId();
5851-
} else {
5829+
Timer::run("Tokenizer::simplifyTokens1::simplifyTokenList1::setVarId", showTime, mTimerResults, [&](){
58525830
setVarId();
5853-
}
5831+
});
58545832

58555833
// Link < with >
58565834
createLinks2();

0 commit comments

Comments
 (0)