MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / setValues

Method setValues

lib/valueflow.cpp:7403–7480  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7401#define VFA_CPP(...) VALUEFLOW_ADAPTOR(true, __VA_ARGS__)
7402
7403void ValueFlow::setValues(TokenList& tokenlist,
7404 SymbolDatabase& symboldatabase,
7405 ErrorLogger& errorLogger,
7406 const Settings& settings,
7407 TimerResultsIntf* timerResults)
7408{
7409 ProgressReporter progressReporter(errorLogger, settings.reportProgress, tokenlist.getSourceFilePath(), "ValueFlow");
7410
7411 for (Token* tok = tokenlist.front(); tok; tok = tok->next())
7412 tok->clearValueFlow();
7413
7414 // commas in init..
7415 for (Token* tok = tokenlist.front(); tok; tok = tok->next()) {
7416 if (tok->str() != "{" || !tok->astOperand1())
7417 continue;
7418 for (Token* tok2 = tok->next(); tok2 != tok->link(); tok2 = tok2->next()) {
7419 if (tok2->link() && Token::Match(tok2, "[{[(<]"))
7420 tok2 = tok2->link();
7421 else if (tok2->str() == ",")
7422 tok2->isInitComma(true);
7423 }
7424 }
7425
7426 ValueFlowPassRunner runner{ValueFlowState{tokenlist, symboldatabase, errorLogger, settings}, timerResults};
7427 runner.run_once({
7428 VFA(valueFlowEnumValueEarly(symboldatabase, settings)),
7429 VFA(valueFlowNumber(tokenlist, settings)),
7430 VFA(valueFlowString(tokenlist, settings)),
7431 VFA(valueFlowTypeTraits(tokenlist, settings)),
7432 VFA(valueFlowArray(tokenlist, settings)),
7433 VFA(valueFlowUnknownFunctionReturn(tokenlist, settings)),
7434 VFA(valueFlowGlobalConstVar(tokenlist, settings)),
7435 VFA(valueFlowEnumValue(symboldatabase, settings)),
7436 VFA(valueFlowGlobalStaticVar(tokenlist, settings)),
7437 VFA(valueFlowPointerAlias(tokenlist, settings)),
7438 VFA(valueFlowLifetime(tokenlist, errorLogger, settings)),
7439 VFA(valueFlowSymbolic(tokenlist, symboldatabase, errorLogger, settings)),
7440 VFA(valueFlowBitAnd(tokenlist, settings)),
7441 VFA(valueFlowSameExpressions(tokenlist, settings)),
7442 VFA(valueFlowConditionExpressions(tokenlist, symboldatabase, errorLogger, settings)),
7443 });
7444
7445 runner.run({
7446 VFA(valueFlowImpossibleValues(tokenlist, settings)),
7447 VFA(valueFlowSymbolicOperators(symboldatabase, settings)),
7448 VFA(valueFlowCondition(SymbolicConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions)),
7449 VFA(valueFlowSymbolicInfer(symboldatabase, settings)),
7450 VFA(valueFlowArrayBool(tokenlist, settings)),
7451 VFA(valueFlowArrayElement(tokenlist, settings)),
7452 VFA(valueFlowRightShift(tokenlist, settings)),
7453 VFA_CPP(
7454 valueFlowCondition(ContainerConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions)),
7455 VFA(valueFlowAfterAssign(tokenlist, symboldatabase, errorLogger, settings, skippedFunctions)),
7456 VFA_CPP(valueFlowAfterSwap(tokenlist, symboldatabase, errorLogger, settings)),
7457 VFA(valueFlowCondition(SimpleConditionHandler{}, tokenlist, symboldatabase, errorLogger, settings, skippedFunctions)),
7458 VFA(valueFlowInferCondition(tokenlist, settings)),
7459 VFA(valueFlowSwitchVariable(tokenlist, symboldatabase, errorLogger, settings)),
7460 VFA(valueFlowForLoop(tokenlist, symboldatabase, errorLogger, settings)),

Callers

nothing calls this directly

Calls 15

valueFlowEnumValueEarlyFunction · 0.85
valueFlowNumberFunction · 0.85
valueFlowStringFunction · 0.85
valueFlowTypeTraitsFunction · 0.85
valueFlowArrayFunction · 0.85
valueFlowGlobalConstVarFunction · 0.85
valueFlowEnumValueFunction · 0.85
valueFlowGlobalStaticVarFunction · 0.85
valueFlowPointerAliasFunction · 0.85
valueFlowLifetimeFunction · 0.85
valueFlowSymbolicFunction · 0.85

Tested by

no test coverage detected