|
Cppcheck
|
Public Member Functions | |
| ExpressionAnalyzer (const Token *e, ValueFlow::Value val, const TokenList &t, const Settings &s) | |
| void | setupExprVarIds (const Token *start, int depth=0) |
| virtual bool | skipUniqueExprIds () const |
| bool | invalid () const override |
| ProgramState | getProgramState () const override |
| bool | match (const Token *tok) const override |
| bool | dependsOnThis () const override |
| bool | isGlobal () const override |
| bool | isVariable () const override |
| Action | isAliasModified (const Token *tok, int indirect) const override |
Public Member Functions inherited from SingleValueFlowAnalyzer | |
| SingleValueFlowAnalyzer (ValueFlow::Value v, const TokenList &t, const Settings &s) | |
| const std::unordered_map< nonneg int, const Variable * > & | getVars () const |
| const std::unordered_map< nonneg int, const Variable * > & | getAliasedVars () const |
| const ValueFlow::Value * | getValue (const Token *) const override |
| ValueFlow::Value * | getValue (const Token *) override |
| void | makeConditional () override |
| bool | useSymbolicValues () const override |
| void | addErrorPath (const Token *tok, const std::string &s) override |
| bool | isAlias (const Token *tok, bool &inconclusive) const override |
| bool | lowerToPossible () override |
| Lower any values to possible. More... | |
| bool | lowerToInconclusive () override |
| Lower any values to inconclusive. More... | |
| bool | isConditional () const override |
| If the value is conditional. More... | |
| bool | stopOnCondition (const Token *condTok) const override |
| If analysis should stop on the condition. More... | |
| bool | updateScope (const Token *endBlock, bool) const override |
| If the analysis is unsure whether to update a scope, this will return true if the analysis should bifurcate the scope. More... | |
| ValuePtr< Analyzer > | reanalyze (Token *tok, const std::string &msg) const override |
| Return analyzer for expression at token. More... | |
Public Member Functions inherited from ValueFlowAnalyzer | |
| ValueFlowAnalyzer (const TokenList &t, const Settings &s) | |
| virtual bool | internalMatch (const Token *) const |
| virtual int | getIndirect (const Token *tok) const |
| bool | isCPP () const |
| const Settings & | getSettings () const |
| Action | analyzeLifetime (const Token *tok) const |
| std::unordered_map< nonneg int, const Token * > | getSymbols (const Token *tok) const |
| ConditionState | analyzeCondition (const Token *tok, int depth=20) const |
| virtual Action | isModified (const Token *tok) const |
| virtual Action | isThisModified (const Token *tok) const |
| Action | isGlobalModified (const Token *tok) const |
| virtual Action | isWritable (const Token *tok, Direction d) const |
| virtual void | writeValue (ValueFlow::Value *value, const Token *tok, Direction d) const |
| const Token * | findMatch (const Token *tok) const |
| bool | isSameSymbolicValue (const Token *tok, ValueFlow::Value *value=nullptr) const |
| Action | analyzeMatch (const Token *tok, Direction d) const |
| Action | analyzeToken (const Token *ref, const Token *tok, Direction d, bool inconclusiveRef) const |
| Action | analyze (const Token *tok, Direction d) const override |
| Analyze a token. More... | |
| template<class F > | |
| std::vector< MathLib::bigint > | evaluateInt (const Token *tok, F getProgramMemory) const |
| std::vector< MathLib::bigint > | evaluateInt (const Token *tok) const |
| std::vector< MathLib::bigint > | evaluate (Evaluate e, const Token *tok, const Token *ctx=nullptr) const override |
| Try to evaluate the value of a token(most likely a condition) More... | |
| void | assume (const Token *tok, bool state, unsigned int flags) override |
| The condition that will be assumed during analysis. More... | |
| void | updateState (const Token *tok) override |
| Update the state of the program at the token. More... | |
| virtual void | internalUpdate (Token *, const ValueFlow::Value &, Direction) |
| void | update (Token *tok, Action a, Direction d) override |
| Update the state of the value. More... | |
Public Member Functions inherited from Analyzer | |
| std::vector< MathLib::bigint > | evaluate (const Token *tok, const Token *ctx=nullptr) const |
| virtual | ~Analyzer ()=default |
| Analyzer (const Analyzer &)=default | |
Static Public Member Functions | |
| static bool | nonLocal (const Variable *var, bool deref) |
Static Public Member Functions inherited from ValueFlowAnalyzer | |
| static const std::string & | getAssign (const Token *tok, Direction d) |
Public Attributes | |
| const Token * | expr |
| bool = true | |
| bool | unknown {} |
| bool | dependOnThis {} |
| bool | uniqueExprId {} |
Public Attributes inherited from SingleValueFlowAnalyzer | |
| std::unordered_map< nonneg int, const Variable * > | varids |
| std::unordered_map< nonneg int, const Variable * > | aliases |
| ValueFlow::Value | value |
Public Attributes inherited from ValueFlowAnalyzer | |
| const TokenList & | tokenlist |
| const Settings & | settings |
| ProgramMemoryState | pms |
Additional Inherited Members | |
Public Types inherited from ValueFlowAnalyzer | |
| using | ProgramState = ProgramMemory::Map |
Public Types inherited from Analyzer | |
| enum class | Terminate { None , Bail , Escape , Modified , Inconclusive , Conditional } |
| enum class | Direction { Forward , Reverse } |
| enum class | Evaluate { Integral , ContainerEmpty } |
Protected Member Functions inherited from Analyzer | |
| Analyzer ()=default | |
Definition at line 3268 of file valueflow.cpp.
|
inline |
Definition at line 3275 of file valueflow.cpp.
References dependOnThis, expr, exprDependsOnThis(), Token::exprId(), ValueFlow::Value::isSymbolicValue(), Token::isUniqueExprId(), isVariableChanged(), Token::Match(), setupExprVarIds(), ValueFlow::Value::tokvalue, uniqueExprId, and SingleValueFlowAnalyzer::value.
|
inlineoverridevirtual |
Reimplemented from ValueFlowAnalyzer.
Definition at line 3358 of file valueflow.cpp.
References dependOnThis.
|
inlineoverridevirtual |
Implements ValueFlowAnalyzer.
Definition at line 3348 of file valueflow.cpp.
References expr, and SingleValueFlowAnalyzer::value.
|
inlineoverridevirtual |
Reimplemented from Analyzer.
Definition at line 3342 of file valueflow.cpp.
References skipUniqueExprIds(), uniqueExprId, and unknown.
|
inlineoverridevirtual |
Reimplemented from ValueFlowAnalyzer.
Definition at line 3370 of file valueflow.cpp.
References Token::exprId(), ValueFlowAnalyzer::isAliasModified(), ValueFlow::Value::isSymbolicValue(), ValueFlow::Value::tokvalue, and SingleValueFlowAnalyzer::value.
|
inlineoverridevirtual |
Reimplemented from SingleValueFlowAnalyzer.
Definition at line 3362 of file valueflow.cpp.
|
inlineoverridevirtual |
Reimplemented from ValueFlowAnalyzer.
Definition at line 3366 of file valueflow.cpp.
References expr, and Token::varId().
Implements ValueFlowAnalyzer.
Reimplemented in ContainerExpressionAnalyzer, SubExpressionAnalyzer, OppositeExpressionAnalyzer, and SameExpressionAnalyzer.
Definition at line 3354 of file valueflow.cpp.
References expr, and Token::exprId().
Definition at line 3291 of file valueflow.cpp.
References Variable::isArgument(), Variable::isExtern(), Variable::isLocal(), Variable::isPointer(), Variable::isReference(), and Variable::isStatic().
Referenced by setupExprVarIds().
|
inline |
Definition at line 3296 of file valueflow.cpp.
References astIsIterator(), astIsPointer(), astIsSmartPointer(), Token::astOperand2(), Token::astParent(), ValueFlow::Value::indirect, isGlobalData(), Token::isIncompleteVar(), Variable::isLocal(), Variable::isReference(), Token::Match(), Variable::nameToken(), Token::next(), none, nonLocal(), op1_and_op2, Token::previous(), Token::simpleMatch(), unknown, SingleValueFlowAnalyzer::value, Token::values(), Token::variable(), Token::varId(), SingleValueFlowAnalyzer::varids, and visitAstNodes().
Referenced by ExpressionAnalyzer().
|
inlinevirtual |
Reimplemented in OppositeExpressionAnalyzer, and SameExpressionAnalyzer.
Definition at line 3338 of file valueflow.cpp.
Referenced by invalid().
| ExpressionAnalyzer::bool = true |
Definition at line 3270 of file valueflow.cpp.
| bool ExpressionAnalyzer::dependOnThis {} |
Definition at line 3272 of file valueflow.cpp.
Referenced by dependsOnThis(), and ExpressionAnalyzer().
| const Token* ExpressionAnalyzer::expr |
Definition at line 3269 of file valueflow.cpp.
Referenced by ExpressionAnalyzer(), getProgramState(), SubExpressionAnalyzer::internalMatch(), SubExpressionAnalyzer::isAlias(), isVariable(), match(), SameExpressionAnalyzer::match(), OppositeExpressionAnalyzer::match(), SubExpressionAnalyzer::match(), and ContainerExpressionAnalyzer::match().
| bool ExpressionAnalyzer::uniqueExprId {} |
Definition at line 3273 of file valueflow.cpp.
Referenced by ExpressionAnalyzer(), and invalid().
| bool ExpressionAnalyzer::unknown {} |
Definition at line 3271 of file valueflow.cpp.
Referenced by invalid(), and setupExprVarIds().