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

Function isMemberAssignment

lib/checkautovariables.cpp:260–281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258}
259
260static bool isMemberAssignment(const Token* tok, const Token*& rhs, const Settings& settings)
261{
262 const Token *endBracket = nullptr;
263 if (!Token::Match(tok, "[;{}] %var% . %var%")) {
264 if (!Token::Match(tok, "[;{}] %var% ["))
265 return false;
266 endBracket = tok->linkAt(2);
267 if (!Token::Match(endBracket, "] . %var%"))
268 return false;
269 }
270 if (!isPtrArg(tok->next()))
271 return false;
272 const Token* assign = (endBracket ? endBracket->next() : tok->tokAt(2))->astParent();
273 while (Token::simpleMatch(assign, "["))
274 assign = assign->astParent();
275 if (!Token::simpleMatch(assign, "="))
276 return false;
277 if (!isAutoVariableRHS(assign->astOperand2(), settings))
278 return false;
279 rhs = assign->astOperand2();
280 return true;
281}
282
283void CheckAutoVariablesImpl::autoVariables()
284{

Callers 2

checkStructVariableMethod · 0.85
autoVariablesMethod · 0.85

Calls 8

isPtrArgFunction · 0.85
isAutoVariableRHSFunction · 0.85
linkAtMethod · 0.80
nextMethod · 0.80
astParentMethod · 0.80
astOperand2Method · 0.80
simpleMatchFunction · 0.70
tokAtMethod · 0.45

Tested by

no test coverage detected