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

Method checkCoutCerrMisusage

lib/checkio.cpp:61–81  ·  view source on GitHub ↗

--------------------------------------------------------------------------- std::cout << std::cout; ---------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

59// std::cout << std::cout;
60//---------------------------------------------------------------------------
61void CheckIOImpl::checkCoutCerrMisusage()
62{
63 if (mTokenizer->isC())
64 return;
65
66 logChecker("CheckIO::checkCoutCerrMisusage"); // c
67
68 const SymbolDatabase * const symbolDatabase = mTokenizer->getSymbolDatabase();
69 for (const Scope * scope : symbolDatabase->functionScopes) {
70 for (const Token *tok = scope->bodyStart; tok && tok != scope->bodyEnd; tok = tok->next()) {
71 if (Token::Match(tok, "std :: cout|cerr !!.") && tok->next()->astParent() && tok->next()->astParent()->astOperand1() == tok->next()) {
72 const Token* tok2 = tok->next();
73 while (tok2->astParent() && tok2->astParent()->str() == "<<") {
74 tok2 = tok2->astParent();
75 if (tok2->astOperand2() && Token::Match(tok2->astOperand2()->previous(), "std :: cout|cerr"))
76 coutCerrMisusageError(tok, tok2->astOperand2()->strAt(1));
77 }
78 }
79 }
80 }
81}
82
83void CheckIOImpl::coutCerrMisusageError(const Token* tok, const std::string& streamName)
84{

Callers 1

runChecksMethod · 0.80

Calls 6

isCMethod · 0.80
nextMethod · 0.80
astParentMethod · 0.80
astOperand1Method · 0.80
astOperand2Method · 0.80
strMethod · 0.45

Tested by

no test coverage detected