From ad8c1e26f0bea9026debf21165edf79ee3fbbf64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 20 Nov 2022 12:29:56 +0100 Subject: [PATCH] dump: output language to dumpfile --- cli/cmdlineparser.cpp | 4 ++-- lib/cppcheck.cpp | 18 +++++++++++++++++- lib/settings.cpp | 2 +- lib/tokenlist.cpp | 4 ++-- test/testcmdlineparser.cpp | 16 ++++++++-------- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/cli/cmdlineparser.cpp b/cli/cmdlineparser.cpp index 49a970752..ae4cbe6e7 100644 --- a/cli/cmdlineparser.cpp +++ b/cli/cmdlineparser.cpp @@ -527,9 +527,9 @@ bool CmdLineParser::parseFromArgs(int argc, const char* const argv[]) } if (str == "c") - mSettings->enforcedLang = Settings::C; + mSettings->enforcedLang = Settings::Language::C; else if (str == "c++") - mSettings->enforcedLang = Settings::CPP; + mSettings->enforcedLang = Settings::Language::CPP; else { printError("unknown language '" + str + "' enforced."); return false; diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 57979464e..0d37f8c91 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -260,8 +260,24 @@ static void createDumpFile(const Settings& settings, std::ofstream fout(getCtuInfoFileName(dumpFile)); } + std::string language; + switch (settings.enforcedLang) { + case Settings::Language::C: + language = " language=\"c\""; + break; + case Settings::Language::CPP: + language = " language=\"cpp\""; + break; + case Settings::Language::None: + if (Path::isCPP(filename)) + language = " language=\"cpp\""; + else if (Path::isC(filename)) + language = " language=\"c\""; + break; + } + fdump << "" << std::endl; - fdump << "" << std::endl; + fdump << "" << std::endl; fdump << " enforcedLang == Settings::C || (mSettings->enforcedLang == Settings::None && Path::isC(getSourceFilePath())); - mIsCpp = mSettings->enforcedLang == Settings::CPP || (mSettings->enforcedLang == Settings::None && Path::isCPP(getSourceFilePath())); + mIsC = mSettings->enforcedLang == Settings::Language::C || (mSettings->enforcedLang == Settings::Language::None && Path::isC(getSourceFilePath())); + mIsCpp = mSettings->enforcedLang == Settings::Language::CPP || (mSettings->enforcedLang == Settings::Language::None && Path::isCPP(getSourceFilePath())); } if (mIsCpp) { diff --git a/test/testcmdlineparser.cpp b/test/testcmdlineparser.cpp index c18ba49a3..a547f8e14 100644 --- a/test/testcmdlineparser.cpp +++ b/test/testcmdlineparser.cpp @@ -418,17 +418,17 @@ private: REDIRECT; { const char * const argv[] = {"cppcheck", "file.cpp"}; - settings.enforcedLang = Settings::None; + settings.enforcedLang = Settings::Language::None; ASSERT(defParser.parseFromArgs(2, argv)); - ASSERT_EQUALS(Settings::None, settings.enforcedLang); + ASSERT_EQUALS(Settings::Language::None, settings.enforcedLang); ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } CLEAR_REDIRECT_OUTPUT; { const char * const argv[] = {"cppcheck", "-x", "c++", "file.cpp"}; - settings.enforcedLang = Settings::None; + settings.enforcedLang = Settings::Language::None; ASSERT(defParser.parseFromArgs(4, argv)); - ASSERT_EQUALS(Settings::CPP, settings.enforcedLang); + ASSERT_EQUALS(Settings::Language::CPP, settings.enforcedLang); ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } CLEAR_REDIRECT_OUTPUT; @@ -446,17 +446,17 @@ private: CLEAR_REDIRECT_OUTPUT; { const char * const argv[] = {"cppcheck", "--language=c++", "file.cpp"}; - settings.enforcedLang = Settings::None; + settings.enforcedLang = Settings::Language::None; ASSERT(defParser.parseFromArgs(3, argv)); - ASSERT_EQUALS(Settings::CPP, settings.enforcedLang); + ASSERT_EQUALS(Settings::Language::CPP, settings.enforcedLang); ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } CLEAR_REDIRECT_OUTPUT; { const char * const argv[] = {"cppcheck", "--language=c", "file.cpp"}; - settings.enforcedLang = Settings::None; + settings.enforcedLang = Settings::Language::None; ASSERT(defParser.parseFromArgs(3, argv)); - ASSERT_EQUALS(Settings::C, settings.enforcedLang); + ASSERT_EQUALS(Settings::Language::C, settings.enforcedLang); ASSERT_EQUALS("", GET_REDIRECT_OUTPUT); } CLEAR_REDIRECT_OUTPUT;