Skip to content

Commit 5cdced9

Browse files
committed
ci
1 parent a6bc1d4 commit 5cdced9

6 files changed

Lines changed: 78 additions & 19 deletions

File tree

lib/cppcheck.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,7 +1316,7 @@ void CppCheck::internalError(const std::string &filename, const std::string &msg
13161316

13171317
void CppCheck::checkNormalTokens(const Tokenizer &tokenizer, AnalyzerInformation* analyzerInformation, const std::string& currentConfig)
13181318
{
1319-
const ProgressReporter progressReporter(mErrorLogger, mSettings.reportProgress >= 0, tokenizer.list.getSourceFilePath(), "Run checkers");
1319+
const ProgressReporter progressReporter(mErrorLogger, mSettings.reportProgress, tokenizer.list.getSourceFilePath(), "Run checkers");
13201320

13211321
CheckUnusedFunctions unusedFunctionsChecker;
13221322

@@ -1516,7 +1516,7 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
15161516
if (isCtuInfo && addonInfo.name != "misra" && !addonInfo.ctu)
15171517
continue;
15181518

1519-
ProgressReporter(mErrorLogger, mSettings.reportProgress >= 0, files.front(), "addon:" + addonInfo.name + (isCtuInfo ? " (ctu)" : ""));
1519+
ProgressReporter(mErrorLogger, mSettings.reportProgress, files.front(), "addon:" + addonInfo.name + (isCtuInfo ? " (ctu)" : ""));
15201520

15211521
std::vector<picojson::value> results;
15221522

lib/errorlogger.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -290,36 +290,37 @@ class CPPCHECKLIB ErrorLogger {
290290
/// RAII class for reporting progress messages
291291
class CPPCHECKLIB ProgressReporter {
292292
public:
293-
ProgressReporter(ErrorLogger& e, bool reportProgress, const std::string& filename, const std::string& stage) :
293+
ProgressReporter(ErrorLogger& e, int reportProgressInterval, const std::string& filename, const std::string& stage) :
294294
errorLogger(e),
295-
reportProgress(reportProgress),
295+
reportProgressInterval(reportProgressInterval),
296296
filename(filename),
297297
stage(stage) {
298-
if (reportProgress)
299-
errorLogger.reportProgress(filename, stage.c_str(), 0);
298+
report(0);
300299
}
301300

302301
~ProgressReporter() {
303-
if (reportProgress)
304-
errorLogger.reportProgress(filename, stage.c_str(), 100);
302+
lastTime = 0;
303+
errorLogger.reportProgress(filename, stage.c_str(), 100);
305304
}
306305

307306
void report(int value) {
308-
if (!reportProgress)
307+
if (reportProgressInterval < 0 || value == lastValue)
309308
return;
310-
const auto t = std::time(nullptr);
311-
if (t != lastTime) {
309+
const std::time_t t = std::time(nullptr);
310+
if (t >= lastTime + reportProgressInterval) {
312311
errorLogger.reportProgress(filename, stage.c_str(), value);
313312
lastTime = t;
313+
lastValue = value;
314314
}
315315
}
316316

317317
private:
318318
ErrorLogger& errorLogger;
319-
const bool reportProgress;
319+
const int reportProgressInterval;
320320
const std::string filename;
321321
const std::string stage;
322322
std::time_t lastTime{0};
323+
int lastValue{-1};
323324
};
324325

325326
/** Replace substring. Example replaceStr("1,NR,3", "NR", "2") => "1,2,3" */

lib/symboldatabase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ void SymbolDatabase::createSymbolDatabaseFindAllScopes()
198198
return it->second.count(tok->str()) > 0 ? startScope : nullptr;
199199
};
200200

201-
ProgressReporter progressReporter(mErrorLogger, (mSettings.reportProgress >= 0), mTokenizer.list.getSourceFilePath(), "SymbolDatabase (find all scopes)");
201+
ProgressReporter progressReporter(mErrorLogger, mSettings.reportProgress, mTokenizer.list.getSourceFilePath(), "SymbolDatabase (find all scopes)");
202202

203203
// find all scopes
204204
for (const Token *tok = mTokenizer.tokens(); tok; tok = tok ? tok->next() : nullptr) {

lib/tokenize.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,7 +1167,7 @@ void Tokenizer::simplifyTypedefCpp()
11671167
std::vector<Space> spaceInfo(1);
11681168

11691169
const std::time_t maxTime = mSettings.typedefMaxTime > 0 ? std::time(nullptr) + mSettings.typedefMaxTime: 0;
1170-
ProgressReporter progressReporter(mErrorLogger, (mSettings.reportProgress >= 0), list.getSourceFilePath(), "Tokenize (typedef)");
1170+
ProgressReporter progressReporter(mErrorLogger, mSettings.reportProgress, list.getSourceFilePath(), "Tokenize (typedef)");
11711171

11721172
for (Token *tok = list.front(); tok; tok = tok->next()) {
11731173
progressReporter.report(tok->progressValue());
@@ -2931,7 +2931,7 @@ bool Tokenizer::simplifyUsing()
29312931
};
29322932
std::list<Using> usingList;
29332933

2934-
ProgressReporter progressReporter(mErrorLogger, (mSettings.reportProgress >= 0), list.getSourceFilePath(), "Tokenize (using)");
2934+
ProgressReporter progressReporter(mErrorLogger, mSettings.reportProgress, list.getSourceFilePath(), "Tokenize (using)");
29352935

29362936
for (Token *tok = list.front(); tok; tok = tok->next()) {
29372937
progressReporter.report(tok->progressValue());

lib/valueflow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7348,7 +7348,7 @@ void ValueFlow::setValues(TokenList& tokenlist,
73487348
const Settings& settings,
73497349
TimerResultsIntf* timerResults)
73507350
{
7351-
ProgressReporter progressReporter(errorLogger, settings.reportProgress >= 0, tokenlist.getSourceFilePath(), "ValueFlow");
7351+
ProgressReporter progressReporter(errorLogger, settings.reportProgress, tokenlist.getSourceFilePath(), "ValueFlow");
73527352

73537353
for (Token* tok = tokenlist.front(); tok; tok = tok->next())
73547354
tok->clearValueFlow();

test/cli/other_test.py

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,67 @@ def test_progress(tmpdir):
169169
"progress: Tokenize (typedef) 62%\n"
170170
"progress: Tokenize (typedef) 75%\n"
171171
"progress: Tokenize (typedef) 87%\n"
172-
"progress: SymbolDatabase 0%\n"
173-
"progress: SymbolDatabase 12%\n"
174-
"progress: SymbolDatabase 87%\n"
172+
"progress: Tokenize (typedef) 100%\n"
173+
"progress: SymbolDatabase (find all scopes) 0%\n"
174+
"progress: SymbolDatabase (find all scopes) 12%\n"
175+
"progress: SymbolDatabase (find all scopes) 87%\n"
176+
"progress: SymbolDatabase (find all scopes) 100%\n"
177+
"progress: ValueFlow 0%\n"
178+
"progress: ValueFlow::valueFlowImpossibleValues(tokenlist, settings) 1 0%\n"
179+
"progress: ValueFlow::valueFlowImpossibleValues(tokenlist, settings) 1 100%\n"
180+
"progress: ValueFlow::valueFlowSymbolicOperators(symboldatabase, settings) 1 0%\n"
181+
"progress: ValueFlow::valueFlowSymbolicOperators(symboldatabase, settings) 1 100%\n"
182+
"progress: ValueFlow::valueFlowCondition(SymbolicConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 0%\n"
183+
"progress: ValueFlow::valueFlowCondition(SymbolicConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 100%\n"
184+
"progress: ValueFlow::valueFlowSymbolicInfer(symboldatabase, settings) 1 0%\n"
185+
"progress: ValueFlow::valueFlowSymbolicInfer(symboldatabase, settings) 1 100%\n"
186+
"progress: ValueFlow::valueFlowArrayBool(tokenlist, settings) 1 0%\n"
187+
"progress: ValueFlow::valueFlowArrayBool(tokenlist, settings) 1 100%\n"
188+
"progress: ValueFlow::valueFlowArrayElement(tokenlist, settings) 1 0%\n"
189+
"progress: ValueFlow::valueFlowArrayElement(tokenlist, settings) 1 100%\n"
190+
"progress: ValueFlow::valueFlowRightShift(tokenlist, settings) 1 0%\n"
191+
"progress: ValueFlow::valueFlowRightShift(tokenlist, settings) 1 100%\n"
192+
"progress: ValueFlow::valueFlowCondition(ContainerConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 0%\n"
193+
"progress: ValueFlow::valueFlowCondition(ContainerConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 100%\n"
194+
"progress: ValueFlow::valueFlowAfterAssign(tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 0%\n"
195+
"progress: ValueFlow::valueFlowAfterAssign(tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 100%\n"
196+
"progress: ValueFlow::valueFlowAfterSwap(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
197+
"progress: ValueFlow::valueFlowAfterSwap(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
198+
"progress: ValueFlow::valueFlowCondition(SimpleConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 0%\n"
199+
"progress: ValueFlow::valueFlowCondition(SimpleConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 100%\n"
200+
"progress: ValueFlow::valueFlowInferCondition(tokenlist, settings) 1 0%\n"
201+
"progress: ValueFlow::valueFlowInferCondition(tokenlist, settings) 1 100%\n"
202+
"progress: ValueFlow::valueFlowSwitchVariable(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
203+
"progress: ValueFlow::valueFlowSwitchVariable(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
204+
"progress: ValueFlow::valueFlowForLoop(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
205+
"progress: ValueFlow::valueFlowForLoop(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
206+
"progress: ValueFlow::valueFlowSubFunction(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
207+
"progress: ValueFlow::valueFlowSubFunction(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
208+
"progress: ValueFlow::valueFlowFunctionReturn(tokenlist, errorLogger, settings) 1 0%\n"
209+
"progress: ValueFlow::valueFlowFunctionReturn(tokenlist, errorLogger, settings) 1 100%\n"
210+
"progress: ValueFlow::valueFlowLifetime(tokenlist, errorLogger, settings) 1 0%\n"
211+
"progress: ValueFlow::valueFlowLifetime(tokenlist, errorLogger, settings) 1 100%\n"
212+
"progress: ValueFlow::valueFlowFunctionDefaultParameter(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
213+
"progress: ValueFlow::valueFlowFunctionDefaultParameter(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
214+
"progress: ValueFlow::valueFlowUninit(tokenlist, errorLogger, settings) 1 0%\n"
215+
"progress: ValueFlow::valueFlowUninit(tokenlist, errorLogger, settings) 1 100%\n"
216+
"progress: ValueFlow::valueFlowAfterMove(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
217+
"progress: ValueFlow::valueFlowAfterMove(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
218+
"progress: ValueFlow::valueFlowSmartPointer(tokenlist, errorLogger, settings) 1 0%\n"
219+
"progress: ValueFlow::valueFlowSmartPointer(tokenlist, errorLogger, settings) 1 100%\n"
220+
"progress: ValueFlow::valueFlowIterators(tokenlist, settings) 1 0%\n"
221+
"progress: ValueFlow::valueFlowIterators(tokenlist, settings) 1 100%\n"
222+
"progress: ValueFlow::valueFlowCondition(IteratorConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 0%\n"
223+
"progress: ValueFlow::valueFlowCondition(IteratorConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 100%\n"
224+
"progress: ValueFlow::valueFlowIteratorInfer(tokenlist, settings) 1 0%\n"
225+
"progress: ValueFlow::valueFlowIteratorInfer(tokenlist, settings) 1 100%\n"
226+
"progress: ValueFlow::valueFlowContainerSize(tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 0%\n"
227+
"progress: ValueFlow::valueFlowContainerSize(tokenlist, symboldatabase, errorLogger, settings, skippedFunctions) 1 100%\n"
228+
"progress: ValueFlow::valueFlowSafeFunctions(tokenlist, symboldatabase, errorLogger, settings) 1 0%\n"
229+
"progress: ValueFlow::valueFlowSafeFunctions(tokenlist, symboldatabase, errorLogger, settings) 1 100%\n"
230+
"progress: ValueFlow 100%\n"
231+
"progress: Run checkers 0%\n"
232+
"progress: Run checkers 100%\n"
175233
)
176234
assert stderr == ""
177235

0 commit comments

Comments
 (0)