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

Method checkZeroDivision

lib/checkother.cpp:2468–2487  ·  view source on GitHub ↗

--------------------------------------------------------------------------- Detect division by zero. ---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

2466// Detect division by zero.
2467//---------------------------------------------------------------------------
2468void CheckOtherImpl::checkZeroDivision()
2469{
2470 logChecker("CheckOther::checkZeroDivision");
2471
2472 for (const Token *tok = mTokenizer->tokens(); tok; tok = tok->next()) {
2473 if (!tok->astOperand2() || !tok->astOperand1())
2474 continue;
2475 if (tok->str() != "%" && tok->str() != "/" && tok->str() != "%=" && tok->str() != "/=")
2476 continue;
2477 if (!tok->valueType() || !tok->valueType()->isIntegral())
2478 continue;
2479 if (tok->scope() && tok->scope()->type == ScopeType::eEnum) // don't warn for compile-time error
2480 continue;
2481
2482 // Value flow..
2483 const ValueFlow::Value *value = tok->astOperand2()->getValue(0LL);
2484 if (value && mSettings.isEnabled(value, false))
2485 zerodivError(tok, value);
2486 }
2487}
2488
2489void CheckOtherImpl::zerodivError(const Token *tok, const ValueFlow::Value *value)
2490{

Callers 1

runChecksMethod · 0.80

Calls 8

nextMethod · 0.80
astOperand2Method · 0.80
astOperand1Method · 0.80
isIntegralMethod · 0.80
scopeMethod · 0.80
strMethod · 0.45
getValueMethod · 0.45
isEnabledMethod · 0.45

Tested by

no test coverage detected