From fbf5858f7663bee37e96abf62373ce0ba378799f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Sat, 2 Jan 2021 19:10:25 +0100 Subject: [PATCH] fixed and enabled several clang-tidy warnings (#2816) --- .clang-tidy | 2 +- cli/threadexecutor.cpp | 2 +- gui/main.cpp | 6 +++--- gui/mainwindow.cpp | 2 +- lib/checkcondition.cpp | 2 +- lib/cppcheck.cpp | 4 ++-- lib/exprengine.cpp | 4 ++-- lib/symboldatabase.cpp | 2 +- lib/templatesimplifier.cpp | 2 +- lib/tokenize.cpp | 4 ++-- test/testsuppressions.cpp | 28 +++++++++++++--------------- 11 files changed, 28 insertions(+), 30 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index b79fa4d24..4b827c77c 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,5 +1,5 @@ --- -Checks: '*,-abseil-*,-android-*,-cert-*,-cppcoreguidelines-*,-fuchsia-*,-google-*,-hicpp-*,-llvm-*,-linuxkernel-*,-mpi-*,-objc-*,-openmp-*,-zircon-*,-readability-braces-around-statements,-readability-magic-numbers,-bugprone-macro-parentheses,-readability-isolate-declaration,-readability-function-size,-modernize-use-trailing-return-type,-readability-implicit-bool-conversion,-readability-uppercase-literal-suffix,-modernize-use-auto,-readability-else-after-return,-modernize-use-default-member-init,-readability-named-parameter,-readability-redundant-member-init,-performance-faster-string-find,-modernize-avoid-c-arrays,-modernize-use-equals-default,-modernize-use-using,-readability-container-size-empty,-readability-simplify-boolean-expr,-modernize-use-override,-modernize-pass-by-value,-bugprone-branch-clone,-bugprone-narrowing-conversions,-modernize-raw-string-literal,-readability-convert-member-functions-to-static,-modernize-loop-convert,-misc-unused-using-decls,-modernize-use-emplace,-readability-const-return-type,-performance-unnecessary-value-param,-readability-static-accessed-through-instance,-modernize-return-braced-init-list,-performance-inefficient-string-concatenation,-performance-for-range-copy,-misc-throw-by-value-catch-by-reference,-modernize-use-bool-literals,-readability-avoid-const-params-in-decls,-readability-redundant-control-flow,-bugprone-argument-comment,-readability-redundant-string-cstr,-readability-non-const-parameter,-misc-non-private-member-variables-in-classes,-performance-unnecessary-copy-initialization,-readability-redundant-string-init,-bugprone-suspicious-string-compare,-bugprone-use-after-move,-readability-misleading-indentation,-misc-unused-parameters-,-clang-analyzer-*,-bugprone-signed-char-misuse,-readability-make-member-function-const,-llvmlibc-*' +Checks: '*,-abseil-*,-android-*,-cert-*,-cppcoreguidelines-*,-fuchsia-*,-google-*,-hicpp-*,-llvm-*,-llvmlibc-*,-linuxkernel-*,-mpi-*,-objc-*,-openmp-*,-zircon-*,-readability-braces-around-statements,-readability-magic-numbers,-bugprone-macro-parentheses,-readability-isolate-declaration,-readability-function-size,-modernize-use-trailing-return-type,-readability-implicit-bool-conversion,-readability-uppercase-literal-suffix,-modernize-use-auto,-readability-else-after-return,-modernize-use-default-member-init,-readability-named-parameter,-readability-redundant-member-init,-performance-faster-string-find,-modernize-avoid-c-arrays,-modernize-use-equals-default,-modernize-use-using,-readability-container-size-empty,-readability-simplify-boolean-expr,-modernize-use-override,-modernize-pass-by-value,-bugprone-branch-clone,-bugprone-narrowing-conversions,-modernize-raw-string-literal,-readability-convert-member-functions-to-static,-modernize-loop-convert,-misc-unused-using-decls,-modernize-use-emplace,-readability-const-return-type,-performance-unnecessary-value-param,-modernize-return-braced-init-list,-performance-inefficient-string-concatenation,-performance-for-range-copy,-misc-throw-by-value-catch-by-reference,-readability-avoid-const-params-in-decls,-readability-redundant-control-flow,-bugprone-argument-comment,-readability-non-const-parameter,-misc-non-private-member-variables-in-classes,-bugprone-suspicious-string-compare,-bugprone-use-after-move,-readability-misleading-indentation,-misc-unused-parameters-,-clang-analyzer-*,-bugprone-signed-char-misuse,-readability-make-member-function-const,-readability-inconsistent-declaration-parameter-name' CheckOptions: - key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic value: '1' \ No newline at end of file diff --git a/cli/threadexecutor.cpp b/cli/threadexecutor.cpp index 8bc57be45..d23d87d11 100644 --- a/cli/threadexecutor.cpp +++ b/cli/threadexecutor.cpp @@ -355,7 +355,7 @@ void ThreadExecutor::reportInfo(const ErrorMessage &msg) void ThreadExecutor::bughuntingReport(const std::string &str) { - writeToPipe(REPORT_VERIFICATION, str.c_str()); + writeToPipe(REPORT_VERIFICATION, str); } void ThreadExecutor::reportInternalChildErr(const std::string &childname, const std::string &msg) diff --git a/gui/main.cpp b/gui/main.cpp index e4822f857..e980c8808 100644 --- a/gui/main.cpp +++ b/gui/main.cpp @@ -73,17 +73,17 @@ int main(int argc, char *argv[]) TranslationHandler* th = new TranslationHandler(&app); th->setLanguage(settings->value(SETTINGS_LANGUAGE, th->suggestLanguage()).toString()); - if (!CheckArgs(app.arguments())) + if (!CheckArgs(QApplication::arguments())) return 0; - app.setWindowIcon(QIcon(":cppcheck-gui.png")); + QApplication::setWindowIcon(QIcon(":cppcheck-gui.png")); // Register this metatype that is used to transfer error info qRegisterMetaType("ErrorItem"); MainWindow window(th, settings); window.show(); - return app.exec(); + return QApplication::exec(); } // Check only arguments needing action before GUI is shown. diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 88caa4731..9a8e38ed6 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -1000,7 +1000,7 @@ Settings MainWindow::getCppcheckSettings() result.jobs = 1; } - result.terminate(false); + Settings::terminate(false); return result; } diff --git a/lib/checkcondition.cpp b/lib/checkcondition.cpp index a5e24ca6e..0da1288fc 100644 --- a/lib/checkcondition.cpp +++ b/lib/checkcondition.cpp @@ -1104,7 +1104,7 @@ void CheckCondition::checkIncorrectLogicOperator() const std::string cond2 = expr1; const std::string cond1VerboseMsg = expr1VerboseMsg + " " + tok->str() + " " + expr2VerboseMsg + " " + tok->astOperand2()->str() + " " + expr3VerboseMsg; - const std::string cond2VerboseMsg = expr1VerboseMsg; + const std::string& cond2VerboseMsg = expr1VerboseMsg; // for the --verbose message, transform the actual condition and print it const std::string msg = tok2->expressionString() + ". '" + cond1 + "' is equivalent to '" + cond2 + "'\n" "The condition '" + cond1VerboseMsg + "' is equivalent to '" + cond2VerboseMsg + "'."; diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 3ce7c8747..96fdd2011 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -88,7 +88,7 @@ namespace { } std::string parseAddonInfo(const picojson::value &json, const std::string &fileName, const std::string &exename) { - std::string json_error = picojson::get_last_error(); + const std::string& json_error = picojson::get_last_error(); if (!json_error.empty()) { return "Loading " + fileName + " failed. " + json_error; } @@ -1434,7 +1434,7 @@ void CppCheck::getErrorMessages() void CppCheck::analyseClangTidy(const ImportProject::FileSettings &fileSettings) { - std::string allIncludes = ""; + std::string allIncludes; for (const std::string &inc : fileSettings.includePaths) { allIncludes = allIncludes + "-I\"" + inc + "\" "; } diff --git a/lib/exprengine.cpp b/lib/exprengine.cpp index c1095a8c4..ef0953216 100644 --- a/lib/exprengine.cpp +++ b/lib/exprengine.cpp @@ -2388,13 +2388,13 @@ static ExprEngine::ValuePtr executeNumber(const Token *tok, Data &data) static ExprEngine::ValuePtr executeStringLiteral(const Token *tok, Data &data) { - std::string s = tok->str(); + const std::string& s = tok->str(); return std::make_shared(data.getNewSymbolName(), s.substr(1, s.size()-2)); } static ExprEngine::ValuePtr executeExpression1(const Token *tok, Data &data) { - if (data.settings->terminated()) + if (Settings::terminated()) throw TerminateExpression(); if (tok->str() == "return") diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index ee918908d..8c3f71120 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -5583,7 +5583,7 @@ void SymbolDatabase::setValueType(Token *tok, const ValueType &valuetype) const Token *op1 = parent->astOperand2()->astOperand1(); while (op1 && op1->str() == "[") op1 = op1->astOperand1(); - ValueType vt(valuetype); + const ValueType& vt(valuetype); if (op1 && op1->variable() && op1->variable()->nameToken() == op1) { setValueType(parent, vt); return; diff --git a/lib/templatesimplifier.cpp b/lib/templatesimplifier.cpp index 87dc5272e..e66c33fbf 100644 --- a/lib/templatesimplifier.cpp +++ b/lib/templatesimplifier.cpp @@ -1509,7 +1509,7 @@ void TemplateSimplifier::addNamespace(const TokenAndName &templateDeclaration, c bool TemplateSimplifier::alreadyHasNamespace(const TokenAndName &templateDeclaration, const Token *tok) { - std::string scope = templateDeclaration.scope(); + const std::string& scope = templateDeclaration.scope(); // get the length in tokens of the namespace std::string::size_type pos = 0; diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index c54c6e8b1..b969f5153 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -5170,7 +5170,7 @@ void Tokenizer::simplifyHeadersAndUnusedTemplates() if (!tok->previous() || Token::Match(tok->previous(), "[;{}]")) { // Remove unused function declarations if (isIncluded && removeUnusedIncludedFunctions) { - while (1) { + while (true) { Token *start = tok; while (start && functionStart.find(start->str()) != functionStart.end()) start = start->next(); @@ -9856,7 +9856,7 @@ void Tokenizer::findGarbageCode() const syntaxError(tok); } if (Token::Match(tok, "%or%|%oror%|~|^|!|%comp%|+|-|/|%")) { - std::string code = ""; + std::string code; if (Token::Match(tok->next(), ")|]|}")) code = tok->str() + tok->next()->str(); if (Token::simpleMatch(tok->next(), "( )")) diff --git a/test/testsuppressions.cpp b/test/testsuppressions.cpp index 6842d2be4..c13bd7c54 100644 --- a/test/testsuppressions.cpp +++ b/test/testsuppressions.cpp @@ -559,33 +559,32 @@ private: } void multi_inlinesuppress() { - Suppressions ss; std::vector suppressions; std::string errMsg; errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId]", &errMsg); ASSERT_EQUALS(1, suppressions.size()); ASSERT_EQUALS("errorId", suppressions[0].errorId); ASSERT_EQUALS("", suppressions[0].symbolName); ASSERT_EQUALS("", errMsg); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId symbolName=arr]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId symbolName=arr]", &errMsg); ASSERT_EQUALS(1, suppressions.size()); ASSERT_EQUALS("errorId", suppressions[0].errorId); ASSERT_EQUALS("arr", suppressions[0].symbolName); ASSERT_EQUALS("", errMsg); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId symbolName=]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId symbolName=]", &errMsg); ASSERT_EQUALS(1, suppressions.size()); ASSERT_EQUALS("errorId", suppressions[0].errorId); ASSERT_EQUALS("", suppressions[0].symbolName); ASSERT_EQUALS("", errMsg); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId1, errorId2 symbolName=arr]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId1, errorId2 symbolName=arr]", &errMsg); ASSERT_EQUALS(2, suppressions.size()); ASSERT_EQUALS("errorId1", suppressions[0].errorId); ASSERT_EQUALS("", suppressions[0].symbolName); @@ -594,53 +593,52 @@ private: ASSERT_EQUALS("", errMsg); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[]", &errMsg); ASSERT_EQUALS(0, suppressions.size()); ASSERT_EQUALS(true, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId", &errMsg); ASSERT_EQUALS(0, suppressions.size()); ASSERT_EQUALS(false, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress errorId", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress errorId", &errMsg); ASSERT_EQUALS(0, suppressions.size()); ASSERT_EQUALS(false, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId1 errorId2 symbolName=arr]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId1 errorId2 symbolName=arr]", &errMsg); ASSERT_EQUALS(0, suppressions.size()); ASSERT_EQUALS(false, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId1, errorId2 symbol=arr]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId1, errorId2 symbol=arr]", &errMsg); ASSERT_EQUALS(0, suppressions.size()); ASSERT_EQUALS(false, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("// cppcheck-suppress[errorId1, errorId2 symbolName]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("// cppcheck-suppress[errorId1, errorId2 symbolName]", &errMsg); ASSERT_EQUALS(0, suppressions.size()); ASSERT_EQUALS(false, errMsg.empty()); } void multi_inlinesuppress_comment() { - Suppressions ss; std::vector suppressions; std::string errMsg; errMsg = ""; - suppressions=ss.parseMultiSuppressComment("//cppcheck-suppress[errorId1, errorId2 symbolName=arr]", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("//cppcheck-suppress[errorId1, errorId2 symbolName=arr]", &errMsg); ASSERT_EQUALS(2, suppressions.size()); ASSERT_EQUALS(true, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("//cppcheck-suppress[errorId1, errorId2 symbolName=arr] some text", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("//cppcheck-suppress[errorId1, errorId2 symbolName=arr] some text", &errMsg); ASSERT_EQUALS(2, suppressions.size()); ASSERT_EQUALS(true, errMsg.empty()); errMsg = ""; - suppressions=ss.parseMultiSuppressComment("/*cppcheck-suppress[errorId1, errorId2 symbolName=arr]*/", &errMsg); + suppressions=Suppressions::parseMultiSuppressComment("/*cppcheck-suppress[errorId1, errorId2 symbolName=arr]*/", &errMsg); ASSERT_EQUALS(2, suppressions.size()); ASSERT_EQUALS(true, errMsg.empty()); }