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

Function isCallFunction

lib/ctu.cpp:283–310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

281}
282
283static int isCallFunction(const Scope *scope, int argnr, const Token *&tok)
284{
285 const Variable * const argvar = scope->function->getArgumentVar(argnr);
286 if (!argvar->isPointer())
287 return -1;
288 for (const Token *tok2 = scope->bodyStart; tok2 != scope->bodyEnd; tok2 = tok2->next()) {
289 if (tok2->variable() != argvar)
290 continue;
291 if (!Token::Match(tok2->previous(), "[(,] %var% [,)]"))
292 break;
293 int argnr2 = 1;
294 const Token *prev = tok2;
295 while (prev && prev->str() != "(") {
296 if (Token::Match(prev,"]|)"))
297 prev = prev->link();
298 else if (prev->str() == ",")
299 ++argnr2;
300 prev = prev->previous();
301 }
302 if (!prev || !Token::Match(prev->previous(), "%name% ("))
303 break;
304 if (!prev->astOperand1() || !prev->astOperand1()->function())
305 break;
306 tok = prev->previous();
307 return argnr2;
308 }
309 return -1;
310}
311
312
313const CTU::FileInfo *CTU::getFileInfo(const Tokenizer &tokenizer)

Callers 1

getFileInfoMethod · 0.85

Calls 6

getArgumentVarMethod · 0.80
nextMethod · 0.80
variableMethod · 0.80
astOperand1Method · 0.80
strMethod · 0.45
functionMethod · 0.45

Tested by

no test coverage detected