diff --git a/cli/cmdlineparser.cpp b/cli/cmdlineparser.cpp index 04187e96d..f9aa89a5c 100644 --- a/cli/cmdlineparser.cpp +++ b/cli/cmdlineparser.cpp @@ -894,6 +894,7 @@ bool CmdLineParser::parseFromArgs(int argc, const char* const argv[]) else if (std::strcmp(argv[i], "--version") == 0) { mShowVersion = true; mExitAfterPrint = true; + mSettings->loadCppcheckCfg(); return true; } diff --git a/cli/cppcheckexecutor.cpp b/cli/cppcheckexecutor.cpp index 182852303..e2b5341d7 100644 --- a/cli/cppcheckexecutor.cpp +++ b/cli/cppcheckexecutor.cpp @@ -109,12 +109,16 @@ bool CppCheckExecutor::parseFromArgs(CppCheck *cppcheck, int argc, const char* c if (success) { if (parser.getShowVersion() && !parser.getShowErrorMessages()) { - const char * const extraVersion = CppCheck::extraVersion(); - if (*extraVersion != 0) - std::cout << "Cppcheck " << CppCheck::version() << " (" - << extraVersion << ')' << std::endl; - else - std::cout << "Cppcheck " << CppCheck::version() << std::endl; + if (!settings.cppcheckCfgProductName.empty()) { + std::cout << settings.cppcheckCfgProductName << std::endl; + } else { + const char * const extraVersion = CppCheck::extraVersion(); + if (*extraVersion != 0) + std::cout << "Cppcheck " << CppCheck::version() << " (" + << extraVersion << ')' << std::endl; + else + std::cout << "Cppcheck " << CppCheck::version() << std::endl; + } } if (parser.getShowErrorMessages()) { diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 815a19ccf..c5078bf1f 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -67,6 +67,13 @@ MainWindow::MainWindow(TranslationHandler* th, QSettings* settings) : mExiting(false), mIsLogfileLoaded(false) { + { + Settings tempSettings; + tempSettings.loadCppcheckCfg(); + mCppcheckCfgProductName = QString::fromStdString(tempSettings.cppcheckCfgProductName); + mCppcheckCfgAbout = QString::fromStdString(tempSettings.cppcheckCfgAbout); + } + mUI.setupUi(this); mThread = new ThreadHandler(this); mThread->setDataDir(getDataDir()); @@ -1356,8 +1363,18 @@ void MainWindow::toggleAllChecked(bool checked) void MainWindow::about() { - AboutDialog *dlg = new AboutDialog(CppCheck::version(), CppCheck::extraVersion(), this); - dlg->exec(); + if (!mCppcheckCfgAbout.isEmpty()) { + QMessageBox msg(QMessageBox::Information, + tr("About"), + mCppcheckCfgAbout, + QMessageBox::Ok, + this); + msg.exec(); + } + else { + AboutDialog *dlg = new AboutDialog(CppCheck::version(), CppCheck::extraVersion(), this); + dlg->exec(); + } } void MainWindow::showLicense() @@ -1445,6 +1462,9 @@ void MainWindow::formatAndSetTitle(const QString &text) nameWithVersion += " (" + extraVersion + ")"; } + if (!mCppcheckCfgProductName.isEmpty()) + nameWithVersion = mCppcheckCfgProductName; + QString title; if (text.isEmpty()) title = nameWithVersion; diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 0ebc13d5f..60da50eab 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -472,6 +472,9 @@ private: * List of MRU menu actions. Needs also to store the separator. */ QAction *mRecentProjectActs[MaxRecentProjects + 1]; + + QString mCppcheckCfgAbout; + QString mCppcheckCfgProductName; }; /// @} #endif // MAINWINDOW_H diff --git a/lib/settings.cpp b/lib/settings.cpp index b580577b6..7c12974de 100644 --- a/lib/settings.cpp +++ b/lib/settings.cpp @@ -92,6 +92,10 @@ void Settings::loadCppcheckCfg(const std::string &executable) if (!picojson::get_last_error().empty()) return; picojson::object obj = json.get(); + if (obj.count("productName") && obj["productName"].is()) + cppcheckCfgProductName = obj["productName"].get(); + if (obj.count("about") && obj["about"].is()) + cppcheckCfgAbout = obj["about"].get(); if (obj.count("addons") && obj["addons"].is()) { for (const picojson::value &v : obj["addons"].get()) { const std::string &s = v.get(); diff --git a/lib/settings.h b/lib/settings.h index fd1d0951a..9f05d11ac 100644 --- a/lib/settings.h +++ b/lib/settings.h @@ -156,6 +156,12 @@ public: /** @brief include paths excluded from checking the configuration */ std::set configExcludePaths; + /** cppcheck.cfg: Custom product name */ + std::string cppcheckCfgProductName; + + /** cppcheck.cfg: About text */ + std::string cppcheckCfgAbout; + /** @brief Are we running from DACA script? */ bool daca;