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

Method checkSizeofForArrayParameter

lib/checksizeof.cpp:72–95  ·  view source on GitHub ↗

--------------------------------------------------------------------------- ---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

70//---------------------------------------------------------------------------
71//---------------------------------------------------------------------------
72void CheckSizeofImpl::checkSizeofForArrayParameter()
73{
74 if (!mSettings.severity.isEnabled(Severity::warning))
75 return;
76
77 logChecker("CheckSizeof::checkSizeofForArrayParameter"); // warning
78
79 const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase();
80 for (const Scope * scope : symbolDatabase->functionScopes) {
81 for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
82 if (Token::Match(tok, "sizeof ( %var% )") ||
83 Token::Match(tok, "sizeof %var% !![")) {
84 const Token* varTok = tok->next();
85 if (varTok->str() == "(") {
86 varTok = varTok->next();
87 }
88
89 const Variable *var = varTok->variable();
90 if (var && var->isArray() && var->isArgument() && !var->isReference())
91 sizeofForArrayParameterError(tok);
92 }
93 }
94 }
95}
96
97void CheckSizeofImpl::sizeofForArrayParameterError(const Token *tok)
98{

Callers 1

runChecksMethod · 0.80

Calls 5

nextMethod · 0.80
variableMethod · 0.80
isArrayMethod · 0.80
isEnabledMethod · 0.45
strMethod · 0.45

Tested by

no test coverage detected