From 272d455e2d0205f6c20b9fb68fce670141b76f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 20 Mar 2009 20:09:44 +0100 Subject: [PATCH] refactoring: generate error message in the class --- src/check.h | 7 ++++--- src/checkstl.cpp | 13 +++++++++++-- src/checkstl.h | 3 +++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/check.h b/src/check.h index b9cf53296..cf63eb458 100644 --- a/src/check.h +++ b/src/check.h @@ -29,14 +29,14 @@ class Check { public: - // This constructor is used when registering the CheckClass + /** This constructor is used when registering the CheckClass */ Check() : _tokenizer(0), _settings(0), _errorLogger(0) { instances().push_back(this); } - // This constructor is used when running checks.. + /** This constructor is used when running checks.. */ Check(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) : _tokenizer(tokenizer), _settings(settings), _errorLogger(errorLogger) { } @@ -61,7 +61,8 @@ protected: const Settings * const _settings; ErrorLogger * const _errorLogger; - void reportError(const Token *tok, const char severity[], const char id[], const char msg[]) + /** report an error */ + void reportError(const Token *tok, const std::string severity, const std::string id, const std::string msg) { ErrorLogger::ErrorMessage::FileLocation loc; loc.line = tok->linenr(); diff --git a/src/checkstl.cpp b/src/checkstl.cpp index 1aa15a6ae..78c118ae0 100644 --- a/src/checkstl.cpp +++ b/src/checkstl.cpp @@ -28,6 +28,14 @@ namespace CheckStl instance; } + +// Error message for bad iterator usage.. +void CheckStl::iteratorsError(const Token *tok, const std::string &container1, const std::string &container2) +{ + reportError(tok, "error", "Same iterator is used with both " + container1 + " and " + container2, "iterators"); +} + + void CheckStl::iterators() { for (const Token *tok = _tokenizer->tokens(); tok; tok = tok->next()) @@ -41,7 +49,7 @@ void CheckStl::iterators() // Same container.. if (tok->tokAt(2)->str() == tok->tokAt(10)->str()) continue; - _errorLogger->iteratorUsage(_tokenizer, tok, tok->strAt(2), tok->strAt(10)); + iteratorsError(tok, tok->strAt(2), tok->strAt(10)); } // it = foo.begin(); @@ -54,7 +62,8 @@ void CheckStl::iterators() // Same container.. if (tok->tokAt(2)->str() == tok->tokAt(12)->str()) continue; - _errorLogger->iteratorUsage(_tokenizer, tok, tok->strAt(2), tok->strAt(12)); + + iteratorsError(tok, tok->strAt(2), tok->strAt(12)); } } } diff --git a/src/checkstl.h b/src/checkstl.h index 26b715913..940f06f43 100644 --- a/src/checkstl.h +++ b/src/checkstl.h @@ -78,6 +78,9 @@ private: * @param it iterator token */ void eraseCheckLoop(const Token *it); + + void iteratorsError(const Token *tok, const std::string &container1, const std::string &container2); + }; //---------------------------------------------------------------------------