From 290121bc218d5a310449a9efe026888d83276cc6 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Sun, 21 Jan 2024 17:17:46 +0100 Subject: [PATCH] Process: Use more rawStd{Out,Err} const methods instead of mutable ones Avoid using readAllStandard{Output,Error} mutable methods if possible. Use non-mutable methods when we are not connected to readyReadStandard{Output,Error} signals. Change-Id: I2e830e571b9eab2177fd856bbe06dfc5137d9c01 Reviewed-by: Orgad Shaneh --- src/libs/utils/devicefileaccess.cpp | 2 +- src/libs/utils/deviceshell.cpp | 4 ++-- src/plugins/android/androidavdmanager.cpp | 2 +- src/plugins/android/androidconfigurations.cpp | 2 +- src/plugins/axivion/axivionquery.cpp | 4 ++-- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 3 +-- src/plugins/cppcheck/cppcheckrunner.cpp | 2 +- src/plugins/cppeditor/cppcodemodelsettings.cpp | 2 +- src/plugins/cppeditor/cppmodelmanager.cpp | 2 +- src/plugins/gitlab/queryrunner.cpp | 2 +- src/plugins/mesonprojectmanager/mesonwrapper.h | 2 +- src/plugins/perfprofiler/perfsettings.cpp | 5 ++--- .../devicesupport/deviceusedportsgatherer.cpp | 2 +- src/plugins/qbsprojectmanager/qbsprofilemanager.cpp | 4 ++-- src/plugins/qbsprojectmanager/qbssettings.cpp | 2 +- src/plugins/qtsupport/baseqtversion.cpp | 2 +- src/plugins/qtsupport/qtsupportplugin.cpp | 4 ++-- src/plugins/qtsupport/qtversionmanager.cpp | 2 +- src/plugins/remotelinux/remotelinuxsignaloperation.cpp | 3 +-- src/plugins/remotelinux/sshkeycreationdialog.cpp | 2 +- src/plugins/screenrecorder/cropandtrim.cpp | 3 +-- src/plugins/valgrind/memchecktool.cpp | 2 +- src/plugins/webassembly/webassemblyrunconfiguration.cpp | 2 +- tests/auto/utils/commandline/tst_commandline.cpp | 2 +- tests/auto/utils/process/tst_process.cpp | 6 +++--- 25 files changed, 32 insertions(+), 36 deletions(-) diff --git a/src/libs/utils/devicefileaccess.cpp b/src/libs/utils/devicefileaccess.cpp index 713861bc5a8..0486ece19e9 100644 --- a/src/libs/utils/devicefileaccess.cpp +++ b/src/libs/utils/devicefileaccess.cpp @@ -1035,7 +1035,7 @@ expected_str UnixDeviceFileAccess::fileContents(const FilePath &file return make_unexpected(Tr::tr("Failed reading file \"%1\": %2") .arg(filePath.toUserOutput(), p.readAllStandardError())); } - return p.readAllRawStandardOutput(); + return p.rawStdOut(); #else return make_unexpected(QString("Not implemented")); #endif diff --git a/src/libs/utils/deviceshell.cpp b/src/libs/utils/deviceshell.cpp index 8cc100f9aa8..94860af4589 100644 --- a/src/libs/utils/deviceshell.cpp +++ b/src/libs/utils/deviceshell.cpp @@ -90,8 +90,8 @@ RunResult DeviceShell::run(const CommandLine &cmd, const QByteArray &stdInData) return RunResult{ proc.exitCode(), - proc.readAllRawStandardOutput(), - proc.readAllRawStandardError() + proc.rawStdOut(), + proc.rawStdErr() }; } diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index dfb78ed29cd..ed98a37bffd 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -253,7 +253,7 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const avdProcess->setProcessChannelMode(QProcess::MergedChannels); QObject::connect(avdProcess, &Process::done, avdProcess, [avdProcess] { if (avdProcess->exitCode()) { - const QString errorOutput = QString::fromLatin1(avdProcess->readAllRawStandardOutput()); + const QString errorOutput = QString::fromLatin1(avdProcess->rawStdOut()); QMetaObject::invokeMethod(Core::ICore::mainWindow(), [errorOutput] { const QString title = Tr::tr("AVD Start Error"); QMessageBox::critical(Core::ICore::dialogParent(), title, errorOutput); diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 409b05db904..40b331a654c 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -1525,7 +1525,7 @@ FilePath AndroidConfig::getJdkPath() findJdkPathProc.setCommand({"sh", args}); findJdkPathProc.start(); findJdkPathProc.waitForFinished(); - QByteArray jdkPath = findJdkPathProc.readAllRawStandardOutput().trimmed(); + QByteArray jdkPath = findJdkPathProc.rawStdOut().trimmed(); if (HostOsInfo::isMacHost()) { jdkHome = FilePath::fromUtf8(jdkPath); diff --git a/src/plugins/axivion/axivionquery.cpp b/src/plugins/axivion/axivionquery.cpp index 59dc73c71b4..07bf01684ff 100644 --- a/src/plugins/axivion/axivionquery.cpp +++ b/src/plugins/axivion/axivionquery.cpp @@ -79,9 +79,9 @@ AxivionQueryRunner::AxivionQueryRunner(const AxivionQuery &query, QObject *paren start(); return; } - emit resultRetrieved(m_process.readAllRawStandardError()); + emit resultRetrieved(m_process.rawStdErr()); } else { - emit resultRetrieved(m_process.readAllRawStandardOutput()); + emit resultRetrieved(m_process.rawStdOut()); } emit finished(); }); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index c7a52daefcb..09141159a68 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1892,8 +1892,7 @@ void CMakeBuildSystem::runCTest() m_ctestProcess->setCommand({m_ctestPath, { "-N", "--show-only=json-v1"}}); connect(m_ctestProcess.get(), &Process::done, this, [this] { if (m_ctestProcess->result() == ProcessResult::FinishedWithSuccess) { - const QJsonDocument json - = QJsonDocument::fromJson(m_ctestProcess->readAllRawStandardOutput()); + const QJsonDocument json = QJsonDocument::fromJson(m_ctestProcess->rawStdOut()); if (!json.isEmpty() && json.isObject()) { const QJsonObject jsonObj = json.object(); const QJsonObject btGraph = jsonObj.value("backtraceGraph").toObject(); diff --git a/src/plugins/cppcheck/cppcheckrunner.cpp b/src/plugins/cppcheck/cppcheckrunner.cpp index 436c8ab392c..95ab4e5eb63 100644 --- a/src/plugins/cppcheck/cppcheckrunner.cpp +++ b/src/plugins/cppcheck/cppcheckrunner.cpp @@ -20,7 +20,7 @@ CppcheckRunner::CppcheckRunner(CppcheckTool &tool) : m_tool(tool) getConf.setCommand({"getconf", {"ARG_MAX"}}); getConf.start(); getConf.waitForFinished(2000); - const QByteArray argMax = getConf.readAllRawStandardOutput().replace("\n", ""); + const QByteArray argMax = getConf.rawStdOut().replace("\n", ""); m_maxArgumentsLength = std::max(argMax.toInt(), m_maxArgumentsLength); } diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index 2d94e1c86ec..58271ff6e32 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -363,7 +363,7 @@ static FilePath getClangHeadersPathFromClang(const FilePath &clangdFilePath) if (!clang.waitForFinished()) return {}; const FilePath resourceDir = FilePath::fromUserInput(QString::fromLocal8Bit( - clang.readAllRawStandardOutput().trimmed())); + clang.rawStdOut().trimmed())); if (resourceDir.isEmpty() || !resourceDir.exists()) return {}; const FilePath includeDir = resourceDir.pathAppended("include"); diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp index ed2c0419ab1..27aab615b71 100644 --- a/src/plugins/cppeditor/cppmodelmanager.cpp +++ b/src/plugins/cppeditor/cppmodelmanager.cpp @@ -475,7 +475,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit) return; } if (isMsvc) - saveAndOpen(outFilePath, compiler->readAllRawStandardOutput(), inNextSplit); + saveAndOpen(outFilePath, compiler->rawStdOut(), inNextSplit); else openEditor(outFilePath, inNextSplit, Core::Constants::K_DEFAULT_TEXT_EDITOR_ID); }); diff --git a/src/plugins/gitlab/queryrunner.cpp b/src/plugins/gitlab/queryrunner.cpp index e6e7e59b7b8..a266e164db6 100644 --- a/src/plugins/gitlab/queryrunner.cpp +++ b/src/plugins/gitlab/queryrunner.cpp @@ -110,7 +110,7 @@ QueryRunner::QueryRunner(const Query &query, const Id &id, QObject *parent) } VcsBase::VcsOutputWindow::appendError(m_process.exitMessage()); } else { - emit resultRetrieved(m_process.readAllRawStandardOutput()); + emit resultRetrieved(m_process.rawStdOut()); } emit finished(); }); diff --git a/src/plugins/mesonprojectmanager/mesonwrapper.h b/src/plugins/mesonprojectmanager/mesonwrapper.h index 7cf194a2736..9b2e2bdbeb1 100644 --- a/src/plugins/mesonprojectmanager/mesonwrapper.h +++ b/src/plugins/mesonprojectmanager/mesonwrapper.h @@ -42,7 +42,7 @@ inline bool run_meson(const Command &command, QIODevice *output = nullptr) if (!process.waitForFinished()) return false; if (output) { - output->write(process.readAllRawStandardOutput()); + output->write(process.rawStdOut()); } return process.exitCode() == 0; } diff --git a/src/plugins/perfprofiler/perfsettings.cpp b/src/plugins/perfprofiler/perfsettings.cpp index 3918e8969a7..4527ceb9203 100644 --- a/src/plugins/perfprofiler/perfsettings.cpp +++ b/src/plugins/perfprofiler/perfsettings.cpp @@ -165,9 +165,8 @@ void PerfConfigWidget::handleProcessDone() useTracePointsButton->setEnabled(true); return; } - const QList lines = - m_process->readAllRawStandardOutput().append(m_process->readAllRawStandardError()) - .split('\n'); + const QList lines + = m_process->rawStdOut().append(m_process->rawStdErr()).split('\n'); auto model = eventsView->model(); const int previousRows = model->rowCount(); QHash tracePoints; diff --git a/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp b/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp index c3f3f195ca1..df92005d4bd 100644 --- a/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp +++ b/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp @@ -88,7 +88,7 @@ void DeviceUsedPortsGatherer::setupUsedPorts() { d->usedPorts.clear(); const QList usedPorts = d->portsGatheringMethod.parsePorts( - d->process->readAllRawStandardOutput()); + d->process->rawStdOut()); for (const Port port : usedPorts) { if (d->device->freePorts().contains(port)) d->usedPorts << port; diff --git a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp index ecab48bc4f9..dc04e29b261 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprofilemanager.cpp @@ -235,9 +235,9 @@ QString QbsProfileManager::runQbsConfig(QbsConfigOp op, const QString &key, cons } else if (qbsConfig.exitCode() != 0) { Core::MessageManager::writeFlashing( Tr::tr("Failed to run qbs config: %1") - .arg(QString::fromLocal8Bit(qbsConfig.readAllRawStandardError()))); + .arg(QString::fromLocal8Bit(qbsConfig.rawStdErr()))); } - return QString::fromLocal8Bit(qbsConfig.readAllRawStandardOutput()).trimmed(); + return QString::fromLocal8Bit(qbsConfig.rawStdOut()).trimmed(); } QVariant fromJSLiteral(const QString &str) diff --git a/src/plugins/qbsprojectmanager/qbssettings.cpp b/src/plugins/qbsprojectmanager/qbssettings.cpp index 317bbf92c9c..147a1037fd6 100644 --- a/src/plugins/qbsprojectmanager/qbssettings.cpp +++ b/src/plugins/qbsprojectmanager/qbssettings.cpp @@ -37,7 +37,7 @@ static QString getQbsVersion(const FilePath &qbsExe) qbsProc.start(); if (!qbsProc.waitForFinished(5000) || qbsProc.exitCode() != 0) return {}; - return QString::fromLocal8Bit(qbsProc.readAllRawStandardOutput()).trimmed(); + return QString::fromLocal8Bit(qbsProc.rawStdOut()).trimmed(); } static bool operator==(const QbsSettingsData &s1, const QbsSettingsData &s2) diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index da669423e3a..23a947c45f2 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -1817,7 +1817,7 @@ static QByteArray runQmakeQuery(const FilePath &binary, const Environment &env, return {}; } - const QByteArray out = process.readAllRawStandardOutput(); + const QByteArray out = process.rawStdOut(); if (out.isEmpty()) { *error = Tr::tr("\"%1\" produced no output: %2.") .arg(binary.displayName(), process.cleanedStdErr()); diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index da8aee2d3ab..6a34e466d14 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -59,8 +59,8 @@ static void processRunnerCallback(ProcessData *data) data->exitCode = proc.exitCode(); data->exitStatus = proc.exitStatus(); - data->stdErr = proc.readAllRawStandardError(); - data->stdOut = proc.readAllRawStandardOutput(); + data->stdErr = proc.rawStdErr(); + data->stdOut = proc.rawStdOut(); } class QtSupportPlugin final : public ExtensionSystem::IPlugin diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 729ee215c6e..715eec8aa2d 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -410,7 +410,7 @@ QList QtVersionManagerImpl::runQtChooser(const QString &qtchooser, c p.start(); p.waitForFinished(); const bool success = p.exitCode() == 0; - return success ? p.readAllRawStandardOutput().split('\n') : QList(); + return success ? p.rawStdOut().split('\n') : QList(); } // Asks qtchooser for the qmake path of a given version diff --git a/src/plugins/remotelinux/remotelinuxsignaloperation.cpp b/src/plugins/remotelinux/remotelinuxsignaloperation.cpp index 816e0e38696..a4cd369ca4b 100644 --- a/src/plugins/remotelinux/remotelinuxsignaloperation.cpp +++ b/src/plugins/remotelinux/remotelinuxsignaloperation.cpp @@ -88,8 +88,7 @@ void RemoteLinuxSignalOperation::runnerDone() m_errorMessage = m_process->errorString(); } else if (m_process->exitCode() != 0) { m_errorMessage = Tr::tr("Exit code is %1. stderr:").arg(m_process->exitCode()) - + QLatin1Char(' ') - + QString::fromLatin1(m_process->readAllRawStandardError()); + + QLatin1Char(' ') + QString::fromLatin1(m_process->rawStdErr()); } m_process.release()->deleteLater(); emit finished(m_errorMessage); diff --git a/src/plugins/remotelinux/sshkeycreationdialog.cpp b/src/plugins/remotelinux/sshkeycreationdialog.cpp index 441edab8898..ca00cca76af 100644 --- a/src/plugins/remotelinux/sshkeycreationdialog.cpp +++ b/src/plugins/remotelinux/sshkeycreationdialog.cpp @@ -118,7 +118,7 @@ void SshKeyCreationDialog::generateKeys() if (!keygen.waitForFinished()) errorMsg = keygen.errorString(); else if (keygen.exitCode() != 0) - errorMsg = QString::fromLocal8Bit(keygen.readAllRawStandardError()); + errorMsg = QString::fromLocal8Bit(keygen.rawStdErr()); if (!errorMsg.isEmpty()) { showError(Tr::tr("The ssh-keygen tool at \"%1\" failed: %2") .arg(SshSettings::keygenFilePath().toUserOutput(), errorMsg)); diff --git a/src/plugins/screenrecorder/cropandtrim.cpp b/src/plugins/screenrecorder/cropandtrim.cpp index 53be6a267b5..cdd63994a89 100644 --- a/src/plugins/screenrecorder/cropandtrim.cpp +++ b/src/plugins/screenrecorder/cropandtrim.cpp @@ -662,8 +662,7 @@ CropAndTrimDialog::CropAndTrimDialog(const ClipInfo &clip, QWidget *parent) m_process = new Process(this); connect(m_process, &Process::done, this, [this] { if (m_process->exitCode() != 0) { - FFmpegUtils::reportError(m_process->commandLine(), - m_process->readAllRawStandardError()); + FFmpegUtils::reportError(m_process->commandLine(), m_process->rawStdErr()); return; } const QByteArray &imageData = m_process->rawStdOut(); diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 3abd299852e..742d648caf1 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -129,7 +129,7 @@ public: reportFailure(); return; } - const QByteArrayList data = m_process->readAllRawStandardOutput().split(' '); + const QByteArrayList data = m_process->rawStdOut().split(' '); if (data.size() != 3) { reportFailure(); return; diff --git a/src/plugins/webassembly/webassemblyrunconfiguration.cpp b/src/plugins/webassembly/webassemblyrunconfiguration.cpp index a1bb5199873..e78222c0a6d 100644 --- a/src/plugins/webassembly/webassemblyrunconfiguration.cpp +++ b/src/plugins/webassembly/webassemblyrunconfiguration.cpp @@ -103,7 +103,7 @@ static WebBrowserEntries emrunBrowsers(Target *target) browserLister.start(); if (browserLister.waitForFinished()) - result.append(parseEmrunOutput(browserLister.readAllRawStandardOutput())); + result.append(parseEmrunOutput(browserLister.rawStdOut())); } return result; } diff --git a/tests/auto/utils/commandline/tst_commandline.cpp b/tests/auto/utils/commandline/tst_commandline.cpp index c8b29ff6586..fff0879148a 100644 --- a/tests/auto/utils/commandline/tst_commandline.cpp +++ b/tests/auto/utils/commandline/tst_commandline.cpp @@ -34,7 +34,7 @@ private: p.setCommand(cmd); p.setEnvironment(testEnv); p.runBlocking(); - return QString::fromUtf8(p.readAllRawStandardOutput()); + return QString::fromUtf8(p.rawStdOut()); } private slots: diff --git a/tests/auto/utils/process/tst_process.cpp b/tests/auto/utils/process/tst_process.cpp index 8747286953f..78df7eb4d51 100644 --- a/tests/auto/utils/process/tst_process.cpp +++ b/tests/auto/utils/process/tst_process.cpp @@ -114,7 +114,7 @@ private slots: proc.setCommand({envPath, {}}); proc.runBlocking(); QCOMPARE(proc.exitCode(), 0); - const QByteArray output = proc.readAllRawStandardOutput() + proc.readAllRawStandardError(); + const QByteArray output = proc.rawStdOut() + proc.rawStdErr(); qDebug() << "Process output:" << output; QCOMPARE(output.size() > 0, qoutput.size() > 0); @@ -1211,8 +1211,8 @@ void tst_Process::channelForwarding() process.start(); QVERIFY(process.waitForFinished()); - const QByteArray output = process.readAllRawStandardOutput(); - const QByteArray error = process.readAllRawStandardError(); + const QByteArray output = process.rawStdOut(); + const QByteArray error = process.rawStdErr(); QCOMPARE(output.contains(QByteArray(s_outputData)), outputForwarded); QCOMPARE(error.contains(QByteArray(s_errorData)), errorForwarded);