diff --git a/src/checkclass.cpp b/src/checkclass.cpp index fc27b8220..7537e5df8 100644 --- a/src/checkclass.cpp +++ b/src/checkclass.cpp @@ -650,11 +650,10 @@ void CheckClass::noMemset() void CheckClass::operatorEq() { - if (const Token *tok = Token::findmatch(_tokenizer->tokens(), "void operator = (")) + const Token *tok = Token::findmatch(_tokenizer->tokens(), "void operator = ("); + if (tok) { - std::ostringstream ostr; - ostr << _tokenizer->fileLine(tok) << ": 'operator=' should return something"; - _errorLogger->reportErr(ostr.str()); + _errorLogger->reportErr(ErrorMessage::operatorEq(_tokenizer, tok)); } } //--------------------------------------------------------------------------- diff --git a/src/cppcheck.cpp b/src/cppcheck.cpp index 8c00404fd..c17a0f5c9 100644 --- a/src/cppcheck.cpp +++ b/src/cppcheck.cpp @@ -310,12 +310,12 @@ void CppCheck::checkFile(const std::string &code, const char FileName[]) if (ErrorMessage::unusedPrivateFunction(_settings)) checkClass.privateFunctions(); - + // 'operator=' should return something.. + if (ErrorMessage::operatorEq(_settings)) + checkClass.operatorEq(); if (_settings._checkCodingStyle) { - checkClass.operatorEq(); - // if (condition); checkOther.WarningIf(); diff --git a/src/errormessage.h b/src/errormessage.h index a6b793756..1b720200c 100644 --- a/src/errormessage.h +++ b/src/errormessage.h @@ -57,24 +57,33 @@ public: return s._checkCodingStyle; } - static std::string memsetClass(const Tokenizer *tokenizer, const Token *Location, const std::string &funcname) + static std::string memsetClass(const Tokenizer *tokenizer, const Token *Location, const std::string &memfunc) { - return msg1(tokenizer, Location) + "Using '" + funcname + "' on class"; + return msg1(tokenizer, Location) + "Using '" + memfunc + "' on class"; } static bool memsetClass(const Settings &s) { return true; } - static std::string memsetStruct(const Tokenizer *tokenizer, const Token *Location, const std::string &funcname, const std::string &classname) + static std::string memsetStruct(const Tokenizer *tokenizer, const Token *Location, const std::string &memfunc, const std::string &classname) { - return msg1(tokenizer, Location) + "Using '" + funcname + "' on struct that contains a 'std::" + classname + "'"; + return msg1(tokenizer, Location) + "Using '" + memfunc + "' on struct that contains a 'std::" + classname + "'"; } static bool memsetStruct(const Settings &s) { return true; } + static std::string operatorEq(const Tokenizer *tokenizer, const Token *Location) + { + return msg1(tokenizer, Location) + "'operator=' should return something"; + } + static bool operatorEq(const Settings &s) + { + return s._checkCodingStyle; + } + static std::string memleak(const Tokenizer *tokenizer, const Token *Location, const std::string &varname) { return msg1(tokenizer, Location) + "Memory leak: " + varname + ""; diff --git a/tools/errmsg.cpp b/tools/errmsg.cpp index c9d90f4e0..4ed916577 100644 --- a/tools/errmsg.cpp +++ b/tools/errmsg.cpp @@ -57,8 +57,9 @@ int main() err.push_back(Message("noConstructor", Message::STYLE, "The class '%1' has no constructor", "classname")); err.push_back(Message("uninitVar", 0, "Uninitialized member variable '%1::%2'", "classname", "varname")); err.push_back(Message("unusedPrivateFunction", Message::STYLE, "Unused private function '%1::%2'", "classname", "funcname")); - err.push_back(Message("memsetClass", 0, "Using '%1' on class", "funcname")); - err.push_back(Message("memsetStruct", 0, "Using '%1' on struct that contains a 'std::%2'", "funcname", "classname")); + err.push_back(Message("memsetClass", 0, "Using '%1' on class", "memfunc")); + err.push_back(Message("memsetStruct", 0, "Using '%1' on struct that contains a 'std::%2'", "memfunc", "classname")); + err.push_back(Message("operatorEq", Message::STYLE, "'operator=' should return something")); // checkmemoryleak.cpp.. err.push_back(Message("memleak", 0, "Memory leak: %1", "varname"));