1)internal check found a 'findmatch' with simple string argument;

2)Style: uniform 'while (...)' when inside it there's an assignment;
3)Replace '0' with 'NULL' where there's comparison with a pointer.
This commit is contained in:
Edoardo Prezioso 2011-12-01 10:48:14 +01:00
parent c5695503b3
commit 767413adad
8 changed files with 19 additions and 17 deletions

View File

@ -251,7 +251,7 @@ bool CheckAutoVariables::returnTemporary(const Token *tok) const
{ {
if (!Token::Match(tok, "return %var% (")) if (!Token::Match(tok, "return %var% ("))
return false; return false;
return bool(0 != Token::findmatch(_tokenizer->tokens(), ("std :: string " + tok->next()->str() + " (").c_str())); return bool(NULL != Token::findmatch(_tokenizer->tokens(), ("std :: string " + tok->next()->str() + " (").c_str()));
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@ -1345,7 +1345,7 @@ static unsigned int countParameters(const Token *tok)
return 0; return 0;
unsigned int numpar = 1; unsigned int numpar = 1;
while ((tok = tok->nextArgument())) while (NULL != (tok = tok->nextArgument()))
numpar++; numpar++;
return numpar; return numpar;

View File

@ -445,7 +445,7 @@ CheckMemoryLeak::AllocType CheckMemoryLeak::functionReturnType(const Token *tok,
// Check if return pointer is allocated.. // Check if return pointer is allocated..
AllocType allocType = No; AllocType allocType = No;
while (0 != (tok = tok->next())) { while (NULL != (tok = tok->next())) {
if (Token::Match(tok, "%varid% =", varid)) { if (Token::Match(tok, "%varid% =", varid)) {
allocType = getAllocationType(tok->tokAt(2), varid, callstack); allocType = getAllocationType(tok->tokAt(2), varid, callstack);
} }
@ -516,7 +516,7 @@ const char *CheckMemoryLeak::functionArgAlloc(const Token *tok, unsigned int tar
// Check if pointer is allocated. // Check if pointer is allocated.
unsigned int indentlevel = 0; unsigned int indentlevel = 0;
int realloc = 0; int realloc = 0;
while (0 != (tok = tok->next())) { while (NULL != (tok = tok->next())) {
if (tok->str() == "{") if (tok->str() == "{")
++indentlevel; ++indentlevel;
else if (tok->str() == "}") { else if (tok->str() == "}") {
@ -608,7 +608,7 @@ static unsigned int countParameters(const Token *tok)
return 0; return 0;
unsigned int numpar = 1; unsigned int numpar = 1;
while ((tok = tok->nextArgument())) while (NULL != (tok = tok->nextArgument()))
numpar++; numpar++;
return numpar; return numpar;
@ -1670,7 +1670,7 @@ void CheckMemoryLeakInFunction::simplifycode(Token *tok)
// Delete "if { dealloc|assign|use ; return ; }" // Delete "if { dealloc|assign|use ; return ; }"
else if (Token::Match(tok2, "[;{}] if { dealloc|assign|use ; return ; }") && else if (Token::Match(tok2, "[;{}] if { dealloc|assign|use ; return ; }") &&
!Token::findmatch(tok, "if alloc ;")) { !Token::findsimplematch(tok, "if alloc ;")) {
Token::eraseTokens(tok2, tok2->tokAt(8)); Token::eraseTokens(tok2, tok2->tokAt(8));
if (Token::simpleMatch(tok2->next(), "else")) if (Token::simpleMatch(tok2->next(), "else"))
tok2->deleteNext(); tok2->deleteNext();
@ -2356,7 +2356,7 @@ void CheckMemoryLeakInFunction::parseFunctionScope(const Token *tok, const Token
const Token *vartok = tok->tokAt(2); const Token *vartok = tok->tokAt(2);
checkScope(tok->next(), vartok->str(), vartok->varId(), classmember, sz); checkScope(tok->next(), vartok->str(), vartok->varId(), classmember, sz);
} }
} while (0 != (tok = tok->next())); } while (NULL != (tok = tok->next()));
} }
void CheckMemoryLeakInFunction::check() void CheckMemoryLeakInFunction::check()

View File

@ -308,8 +308,10 @@ void CheckNullPointer::nullPointerAfterLoop()
// Is this checking inconclusive? // Is this checking inconclusive?
bool inconclusive = false; bool inconclusive = false;
if (!tok2)
continue;
// Check if the variable is dereferenced after the while loop // Check if the variable is dereferenced after the while loop
while (0 != (tok2 = tok2 ? tok2->next() : 0)) { while (NULL != (tok2 = tok2->next())) {
// inner and outer scopes // inner and outer scopes
if (tok2->str() == "{" || tok2->str() == "}") { if (tok2->str() == "{" || tok2->str() == "}") {
// Not inconclusive: bail out // Not inconclusive: bail out

View File

@ -1143,7 +1143,7 @@ void CheckOther::invalidFunctionUsage()
sprintfOverlappingDataError(tok2->next(), tok2->next()->str()); sprintfOverlappingDataError(tok2->next(), tok2->next()->str());
break; break;
} }
} while ((tok2 = tok2->nextArgument()) != NULL); } while (NULL != (tok2 = tok2->nextArgument()));
} }
} }

View File

@ -668,7 +668,7 @@ private:
if (Token::Match(tok2->tokAt(-2), "[(,] *") || Token::Match(tok2->next(), ". %var%")) { if (Token::Match(tok2->tokAt(-2), "[(,] *") || Token::Match(tok2->next(), ". %var%")) {
// find function call.. // find function call..
const Token *functionCall = tok2; const Token *functionCall = tok2;
while (0 != (functionCall = functionCall ? functionCall->previous() : 0)) { while (NULL != (functionCall = functionCall ? functionCall->previous() : 0)) {
if (functionCall->str() == "(") if (functionCall->str() == "(")
break; break;
if (functionCall->str() == ")") if (functionCall->str() == ")")

View File

@ -2334,7 +2334,7 @@ public:
tok = tok->next(); tok = tok->next();
if (tok) { if (tok) {
bool optcomma = false; bool optcomma = false;
while ((tok = tok->next()) != NULL) { while (NULL != (tok = tok->next())) {
std::string str = tok->str(); std::string str = tok->str();
if (str == "##") if (str == "##")
continue; continue;

View File

@ -2554,7 +2554,7 @@ void Tokenizer::labels()
// Simplify labels in the executable scope.. // Simplify labels in the executable scope..
unsigned int indentlevel = 0; unsigned int indentlevel = 0;
unsigned int indentroundbraces = 0; unsigned int indentroundbraces = 0;
while (0 != (tok = tok->next())) { while (NULL != (tok = tok->next())) {
if (tok->str() == "{") if (tok->str() == "{")
++indentlevel; ++indentlevel;
else if (tok->str() == "}") { else if (tok->str() == "}") {
@ -2571,7 +2571,7 @@ void Tokenizer::labels()
--indentroundbraces; --indentroundbraces;
} }
if (!indentroundbraces && tok->str() == "case") { if (!indentroundbraces && tok->str() == "case") {
while (0 != (tok = tok->next())) { while (NULL != (tok = tok->next())) {
if (Token::Match(tok->previous(), "%any% :")) if (Token::Match(tok->previous(), "%any% :"))
break; break;
} }
@ -2737,7 +2737,7 @@ std::set<std::string> Tokenizer::simplifyTemplatesExpandSpecialized()
tok->deleteThis(); tok->deleteThis();
// Use this special template in the code.. // Use this special template in the code..
while (0 != (tok2 = const_cast<Token *>(Token::findmatch(tok2, pattern.c_str())))) { while (NULL != (tok2 = const_cast<Token *>(Token::findmatch(tok2, pattern.c_str())))) {
Token::eraseTokens(tok2, Token::findsimplematch(tok2, "(")); Token::eraseTokens(tok2, Token::findsimplematch(tok2, "("));
tok2->str(name); tok2->str(name);
} }
@ -4797,7 +4797,7 @@ bool Tokenizer::simplifyIfAddBraces()
// * if (cond) for (;;) break; // * if (cond) for (;;) break;
// * if (cond1) if (cond2) { } // * if (cond1) if (cond2) { }
// * if (cond1) if (cond2) ; else ; // * if (cond1) if (cond2) ; else ;
while ((tempToken = tempToken->next()) != NULL) { while (NULL != (tempToken = tempToken->next())) {
if (tempToken->str() == "{") { if (tempToken->str() == "{") {
if (Token::simpleMatch(tempToken->previous(),"else {")) { if (Token::simpleMatch(tempToken->previous(),"else {")) {
if (innerIf) if (innerIf)
@ -5779,7 +5779,7 @@ void Tokenizer::simplifyVarDecl(bool only_k_r_fpar)
insertTokens(tok2, type0, typelen); insertTokens(tok2, type0, typelen);
std::stack<Token *> link1; std::stack<Token *> link1;
std::stack<Token *> link2; std::stack<Token *> link2;
while (((typelen--) > 0) && (0 != (tok2 = tok2->next()))) { while (((typelen--) > 0) && (NULL != (tok2 = tok2->next()))) {
if (tok2->str() == "(") if (tok2->str() == "(")
link1.push(tok2); link1.push(tok2);
else if (tok2->str() == ")" && !link1.empty()) { else if (tok2->str() == ")" && !link1.empty()) {
@ -6357,7 +6357,7 @@ bool Tokenizer::simplifyLogicalOperators()
continue; continue;
const Token *tok2 = tok; const Token *tok2 = tok;
while (0 != (tok2 = tok2->previous())) { while (NULL != (tok2 = tok2->previous())) {
if (tok2->str() == ")") if (tok2->str() == ")")
tok2 = tok2->link(); tok2 = tok2->link();
else if (Token::Match(tok2, "(|;|{|}")) else if (Token::Match(tok2, "(|;|{|}"))