Travis: Fixed Cppcheck warnings (related to #4547)

This commit is contained in:
Frank Zingsheim 2013-02-05 23:31:53 +01:00
parent 5144307642
commit d9de7f7052
2 changed files with 42 additions and 42 deletions

View File

@ -670,55 +670,57 @@ void CheckNullPointer::nullPointerStructByDeRefAndChec()
// count { and } using tok2 // count { and } using tok2
const Token* const end2 = tok1->scope()->classEnd; const Token* const end2 = tok1->scope()->classEnd;
for (const Token *tok2 = tok1->tokAt(3); tok2 != end2; tok2 = tok2->next()) { for (const Token *tok2 = tok1->tokAt(3); tok2 != end2; tok2 = tok2->next()) {
bool unknown = false;
// label / ?: // label / ?:
if (tok2->str() == ":") if (tok2->str() == ":")
break; break;
// function call.. // function call..
else if (Token::Match(tok2, "[;{}] %var% (") && CanFunctionAssignPointer(tok2->next(), varid1, unknown)) { else {
if (!_settings->inconclusive || !unknown) bool unknown = false;
break; if (Token::Match(tok2, "[;{}] %var% (") && CanFunctionAssignPointer(tok2->next(), varid1, unknown)) {
inconclusive = true; if (!_settings->inconclusive || !unknown)
} break;
inconclusive = true;
}
// Reassignment of the struct // Reassignment of the struct
else if (tok2->varId() == varid1) { else if (tok2->varId() == varid1) {
if (tok2->next()->str() == "=") { if (tok2->next()->str() == "=") {
// Avoid false positives when there is 'else if' // Avoid false positives when there is 'else if'
// TODO: can this be handled better? // TODO: can this be handled better?
if (tok1->strAt(-2) == "if") if (tok1->strAt(-2) == "if")
skipvar.insert(varid1); skipvar.insert(varid1);
break;
}
if (Token::Match(tok2->tokAt(-2), "[,(] &"))
break;
}
// Loop..
/** @todo don't bail out if the variable is not used in the loop */
else if (tok2->str() == "do")
break;
// return/break at base level => stop checking
else if (tok2->scope()->classEnd == end2 && (tok2->str() == "return" || tok2->str() == "break"))
break;
// Function call: If the pointer is not a local variable it
// might be changed by the call.
else if (Token::Match(tok2, "[;{}] %var% (") &&
Token::simpleMatch(tok2->linkAt(2), ") ;") && !isLocal) {
break; break;
} }
if (Token::Match(tok2->tokAt(-2), "[,(] &"))
// Check if pointer is null.
// TODO: false negatives for "if (!p || .."
else if (!tok2->isExpandedMacro() && Token::Match(tok2, "if ( !| %varid% )|&&", varid1)) {
// Is this variable a pointer?
if (var->isPointer())
nullPointerError(tok1, varname, tok2, inconclusive);
break; break;
} }
// Loop..
/** @todo don't bail out if the variable is not used in the loop */
else if (tok2->str() == "do")
break;
// return/break at base level => stop checking
else if (tok2->scope()->classEnd == end2 && (tok2->str() == "return" || tok2->str() == "break"))
break;
// Function call: If the pointer is not a local variable it
// might be changed by the call.
else if (Token::Match(tok2, "[;{}] %var% (") &&
Token::simpleMatch(tok2->linkAt(2), ") ;") && !isLocal) {
break;
}
// Check if pointer is null.
// TODO: false negatives for "if (!p || .."
else if (!tok2->isExpandedMacro() && Token::Match(tok2, "if ( !| %varid% )|&&", varid1)) {
// Is this variable a pointer?
if (var->isPointer())
nullPointerError(tok1, varname, tok2, inconclusive);
break;
} }
} }
} }

View File

@ -71,8 +71,6 @@ std::string Settings::addEnabled(const std::string &str)
return addEnabled(str.substr(prevPos)); return addEnabled(str.substr(prevPos));
} }
bool handled = false;
static std::set<std::string> id; static std::set<std::string> id;
if (id.empty()) { if (id.empty()) {
id.insert("warning"); id.insert("warning");
@ -100,7 +98,7 @@ std::string Settings::addEnabled(const std::string &str)
if (str == "information") { if (str == "information") {
_enabled.insert("missingInclude"); _enabled.insert("missingInclude");
} }
} else if (!handled) { } else {
if (str.empty()) if (str.empty())
return std::string("cppcheck: --enable parameter is empty"); return std::string("cppcheck: --enable parameter is empty");
else else