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

Function isLikelyStreamRead

lib/astutils.cpp:3352–3376  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3350}
3351
3352bool isLikelyStreamRead(const Token *op)
3353{
3354 if (!op)
3355 return false;
3356
3357 if (!op->isCpp())
3358 return false;
3359
3360 if (!Token::Match(op, "&|>>") || !op->isBinaryOp())
3361 return false;
3362
3363 if (!Token::Match(op->astOperand2(), "%name%|.|*|[") && op->str() != op->astOperand2()->str())
3364 return false;
3365
3366 const Token *parent = op;
3367 while (parent->astParent() && parent->astParent()->str() == op->str())
3368 parent = parent->astParent();
3369 if (parent->astParent() && !Token::Match(parent->astParent(), "%oror%|&&|(|,|.|!|;|return"))
3370 return false;
3371 if (op->str() == "&" && parent->astParent())
3372 return false;
3373 if (!parent->astOperand1() || !parent->astOperand2())
3374 return false;
3375 return (!parent->astOperand1()->valueType() || !parent->astOperand1()->valueType()->isIntegral());
3376}
3377
3378bool isCPPCast(const Token* tok)
3379{

Callers 11

valueFlowGlobalStaticVarFunction · 0.85
multiCondition2Method · 0.85
isVariableUsageMethod · 0.85
isModifiedMethod · 0.85
initializeVarListMethod · 0.85
checkConstFuncMethod · 0.85
isConstExpressionFunction · 0.85
isVariableChangedFunction · 0.85
getExprUsageFunction · 0.85

Calls 6

isBinaryOpMethod · 0.80
astOperand2Method · 0.80
astParentMethod · 0.80
astOperand1Method · 0.80
isIntegralMethod · 0.80
strMethod · 0.45

Tested by

no test coverage detected