From b2dc771d80b4bc69b60ce00741a36b78a9ee9d4c Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 14 May 2021 13:12:46 +0200 Subject: [PATCH] Utils: Simplify QtcProcess::exitMessage() interface This was requiring parameters the process object already knows. This is a slight behavior change in most cases, it now includes always the command line arguments, which previously only happened in gcctoolchain.cpp and iarewtoolchain.cpp. Change-Id: Id25a68c397e2f1d8bf52ab29210e215b1de46c6d Reviewed-by: Christian Kandeler --- src/libs/utils/buildablehelperlibrary.cpp | 2 +- src/libs/utils/qtcprocess.cpp | 14 ++++++++------ src/libs/utils/qtcprocess.h | 4 +--- src/libs/utils/shellcommand.cpp | 4 ++-- .../android/androidcreatekeystorecertificate.cpp | 3 +-- src/plugins/android/androiddeployqtstep.cpp | 3 ++- src/plugins/android/androidmanager.cpp | 2 +- src/plugins/baremetal/iarewtoolchain.cpp | 2 +- src/plugins/baremetal/keiltoolchain.cpp | 2 +- src/plugins/baremetal/sdcctoolchain.cpp | 4 ++-- src/plugins/clangtools/executableinfo.cpp | 2 +- src/plugins/clearcase/clearcaseplugin.cpp | 2 +- src/plugins/cvs/cvsplugin.cpp | 2 +- .../customwizard/customwizardscriptgenerator.cpp | 3 +-- src/plugins/projectexplorer/gcctoolchain.cpp | 2 +- src/plugins/projectexplorer/msvctoolchain.cpp | 4 +--- src/plugins/subversion/subversionplugin.cpp | 2 +- src/plugins/texteditor/formattexteditor.cpp | 2 +- 18 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/libs/utils/buildablehelperlibrary.cpp b/src/libs/utils/buildablehelperlibrary.cpp index 904d50506fa..2b6d3742e16 100644 --- a/src/libs/utils/buildablehelperlibrary.cpp +++ b/src/libs/utils/buildablehelperlibrary.cpp @@ -132,7 +132,7 @@ QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath) qmake.setTimeoutS(5); qmake.runBlocking({qmakePath, {"--version"}}); if (qmake.result() != QtcProcess::Finished) { - qWarning() << qmake.exitMessage(qmakePath, 5); + qWarning() << qmake.exitMessage(); return QString(); } diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 55100929b75..7dad8333925 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -608,20 +608,22 @@ void SynchronousProcessResponse::clear() rawStdErr.clear(); } -QString QtcProcess::exitMessage(const QString &binary, int timeoutS) const +QString QtcProcess::exitMessage() { + const QString fullCmd = commandLine().toUserOutput(); switch (result()) { case Finished: - return QtcProcess::tr("The command \"%1\" finished successfully.").arg(QDir::toNativeSeparators(binary)); + return QtcProcess::tr("The command \"%1\" finished successfully.").arg(fullCmd); case FinishedError: - return QtcProcess::tr("The command \"%1\" terminated with exit code %2.").arg(QDir::toNativeSeparators(binary)).arg(exitCode()); + return QtcProcess::tr("The command \"%1\" terminated with exit code %2.") + .arg(fullCmd).arg(exitCode()); case TerminatedAbnormally: - return QtcProcess::tr("The command \"%1\" terminated abnormally.").arg(QDir::toNativeSeparators(binary)); + return QtcProcess::tr("The command \"%1\" terminated abnormally.").arg(fullCmd); case StartFailed: - return QtcProcess::tr("The command \"%1\" could not be started.").arg(QDir::toNativeSeparators(binary)); + return QtcProcess::tr("The command \"%1\" could not be started.").arg(fullCmd); case Hang: return QtcProcess::tr("The command \"%1\" did not respond within the timeout limit (%2 s).") - .arg(QDir::toNativeSeparators(binary)).arg(timeoutS); + .arg(fullCmd).arg(d->m_hangTimerCount); } return QString(); } diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index 4b4eb667eab..a7a12ce896b 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -118,9 +118,7 @@ public: int exitCode() const; - // Helper to format an exit message. - QString exitMessage(const QString &binary, int timeoutS) const; - + QString exitMessage(); // Helpers to find binaries. Do not use it for other path variables // and file types. diff --git a/src/libs/utils/shellcommand.cpp b/src/libs/utils/shellcommand.cpp index 57b2d779459..b88f8a0b960 100644 --- a/src/libs/utils/shellcommand.cpp +++ b/src/libs/utils/shellcommand.cpp @@ -338,9 +338,9 @@ void ShellCommand::runCommand(SynchronousProcess &proc, // Success/Fail message in appropriate window? if (proc.result() == QtcProcess::Finished) { if (d->m_flags & ShowSuccessMessage) - emit proxy->appendMessage(proc.exitMessage(command.executable().toUserOutput(), timeoutS)); + emit proxy->appendMessage(proc.exitMessage()); } else if (!(d->m_flags & SuppressFailMessage)) { - emit proxy->appendError(proc.exitMessage(command.executable().toUserOutput(), timeoutS)); + emit proxy->appendError(proc.exitMessage()); } } } diff --git a/src/plugins/android/androidcreatekeystorecertificate.cpp b/src/plugins/android/androidcreatekeystorecertificate.cpp index 2423a9882e3..584c3769227 100644 --- a/src/plugins/android/androidcreatekeystorecertificate.cpp +++ b/src/plugins/android/androidcreatekeystorecertificate.cpp @@ -202,8 +202,7 @@ void AndroidCreateKeystoreCertificate::buttonBoxAccepted() if (genKeyCertProc.result() != QtcProcess::Finished || genKeyCertProc.exitCode() != 0) { QMessageBox::critical(this, tr("Error"), - genKeyCertProc.exitMessage(command.executable().toString(), 15) - + '\n' + genKeyCertProc.allOutput()); + genKeyCertProc.exitMessage() + '\n' + genKeyCertProc.allOutput()); return; } accept(); diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 20f76b8823c..9c16d8ad672 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -481,9 +481,10 @@ void AndroidDeployQtStep::runCommand(const CommandLine &command) buildProc.setTimeoutS(2 * 60); emit addOutput(tr("Package deploy: Running command \"%1\".").arg(command.toUserOutput()), OutputFormat::NormalMessage); + buildProc.run(command); if (buildProc.result() != QtcProcess::Finished || buildProc.exitCode() != 0) { - const QString error = buildProc.exitMessage(command.executable().toString(), 2 * 60); + const QString error = buildProc.exitMessage(); emit addOutput(error, OutputFormat::ErrorMessage); TaskHub::addTask(DeploymentTask(Task::Error, error)); } diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index d565884654e..8080c7f680d 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -730,7 +730,7 @@ SdkToolResult AndroidManager::runCommand(const CommandLine &command, << "Success:" << cmdResult.m_success << "Output:" << cmdProc.allRawOutput(); if (!cmdResult.success()) - cmdResult.m_exitMessage = cmdProc.exitMessage(command.executable().toString(), timeoutS); + cmdResult.m_exitMessage = cmdProc.exitMessage(); return cmdResult; } diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index aa1668f2c0c..c8eaca57fc6 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -113,7 +113,7 @@ static Macros dumpPredefinedMacros(const FilePath &compiler, const QStringList & cpp.runBlocking(cmd); if (cpp.result() != QtcProcess::Finished || cpp.exitCode() != 0) { - qWarning() << cpp.exitMessage(cmd.toUserOutput(), 10); + qWarning() << cpp.exitMessage(); return {}; } diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp index a88a7c103d6..a0bbdf7e4f9 100644 --- a/src/plugins/baremetal/keiltoolchain.cpp +++ b/src/plugins/baremetal/keiltoolchain.cpp @@ -288,7 +288,7 @@ static Macros dumpArmPredefinedMacros(const FilePath &compiler, const QStringLis cpp.runBlocking(cmd); if (cpp.result() != QtcProcess::Finished || cpp.exitCode() != 0) { - qWarning() << cpp.exitMessage(compiler.toString(), 10); + qWarning() << cpp.exitMessage(); return {}; } diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp index b67c89ca244..c6cd42d1b33 100644 --- a/src/plugins/baremetal/sdcctoolchain.cpp +++ b/src/plugins/baremetal/sdcctoolchain.cpp @@ -95,7 +95,7 @@ static Macros dumpPredefinedMacros(const FilePath &compiler, const Environment & cpp.runBlocking(cmd); if (cpp.result() != QtcProcess::Finished || cpp.exitCode() != 0) { - qWarning() << cpp.exitMessage(compiler.toString(), 10); + qWarning() << cpp.exitMessage(); return {}; } @@ -117,7 +117,7 @@ static HeaderPaths dumpHeaderPaths(const FilePath &compiler, const Environment & cpp.runBlocking(cmd); if (cpp.result() != QtcProcess::Finished || cpp.exitCode() != 0) { - qWarning() << cpp.exitMessage(compiler.toString(), 10); + qWarning() << cpp.exitMessage(); return {}; } diff --git a/src/plugins/clangtools/executableinfo.cpp b/src/plugins/clangtools/executableinfo.cpp index e7fb0724191..7348e420ba7 100644 --- a/src/plugins/clangtools/executableinfo.cpp +++ b/src/plugins/clangtools/executableinfo.cpp @@ -59,7 +59,7 @@ static QString runExecutable(const Utils::CommandLine &commandLine, if (cpp.result() != QtcProcess::Finished && (failSilently == FailSilently::No || cpp.result() != QtcProcess::FinishedError)) { - Core::MessageManager::writeFlashing(cpp.exitMessage(commandLine.toUserOutput(), 10)); + Core::MessageManager::writeFlashing(cpp.exitMessage()); Core::MessageManager::writeFlashing(QString::fromUtf8(cpp.allRawOutput())); return {}; } diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 4a8e5e64771..63f7e1e54c5 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -1676,7 +1676,7 @@ ClearCasePluginPrivate::runCleartool(const QString &workingDir, response.error = proc.result() != QtcProcess::Finished; if (response.error) - response.message = proc.exitMessage(executable, timeOutS); + response.message = proc.exitMessage(); response.stdErr = proc.stdErr(); response.stdOut = proc.stdOut(); return response; diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 6f83cf30878..5e3aa2252dd 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -1470,7 +1470,7 @@ CvsResponse CvsPluginPrivate::runCvs(const QString &workingDirectory, } if (response.result != CvsResponse::Ok) - response.message = proc.exitMessage(executable.toString(), timeOutS); + response.message = proc.exitMessage(); return response; } diff --git a/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp b/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp index 9304416abea..62c93085276 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp @@ -114,8 +114,7 @@ static bool qPrintable(cmd.toUserOutput())); process.run(cmd); if (process.result() != Utils::QtcProcess::Finished) { - *errorMessage = QString::fromLatin1("Generator script failed: %1") - .arg(process.exitMessage(binary, 30)); + *errorMessage = QString("Generator script failed: %1").arg(process.exitMessage()); const QString stdErr = process.stdErr(); if (!stdErr.isEmpty()) { errorMessage->append(QLatin1Char('\n')); diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index bc909562ca0..80dfa42ca11 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -91,7 +91,7 @@ static QByteArray runGcc(const FilePath &gcc, const QStringList &arguments, cons cpp.runBlocking(cmdLine); if (cpp.result() != QtcProcess::Finished || cpp.exitCode() != 0) { Core::MessageManager::writeFlashing({"Compiler feature detection failure!", - cpp.exitMessage(cmdLine.toUserOutput(), 10), + cpp.exitMessage(), QString::fromUtf8(cpp.allRawOutput())}); return QByteArray(); } diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 955894bf547..c94c9e2a0d3 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -2024,9 +2024,7 @@ Utils::optional MsvcToolChain::generateEnvironmentSettings(const Utils: run.runBlocking(cmd); if (run.result() != QtcProcess::Finished) { - const QString message = !run.stdErr().isEmpty() - ? run.stdErr() - : run.exitMessage(cmdPath.toString(), 10); + const QString message = !run.stdErr().isEmpty() ? run.stdErr() : run.exitMessage(); qWarning().noquote() << message; QString command = QDir::toNativeSeparators(batchFile); if (!batchArgs.isEmpty()) diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 3a878ffa312..ef3ac13d3ae 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -1031,7 +1031,7 @@ SubversionResponse SubversionPluginPrivate::runSvn(const QString &workingDir, response.error = proc.result() != QtcProcess::Finished; if (response.error) - response.message = proc.exitMessage(m_settings.binaryPath.value(), timeOutS); + response.message = proc.exitMessage(); response.stdErr = proc.stdErr(); response.stdOut = proc.stdOut(); return response; diff --git a/src/plugins/texteditor/formattexteditor.cpp b/src/plugins/texteditor/formattexteditor.cpp index 54fa4dcb146..2170a2fce80 100644 --- a/src/plugins/texteditor/formattexteditor.cpp +++ b/src/plugins/texteditor/formattexteditor.cpp @@ -93,7 +93,7 @@ static FormatTask format(FormatTask task) process.runBlocking({executable, options}); if (process.result() != QtcProcess::Finished) { task.error = QString(QT_TRANSLATE_NOOP("TextEditor", "Failed to format: %1.")) - .arg(process.exitMessage(executable, 5)); + .arg(process.exitMessage()); return task; } const QString output = process.stdErr();