aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-06-05 15:35:15 +0200
committerhjk <hjk@qt.io>2019-06-06 12:22:47 +0000
commit611e1ea837c7589ee4467f4c3c0416b8793f9fc7 (patch)
treed5cc5b793d83aa7cb3ce2f96d39bdde2567587ef
parent27dee4dc5c221ea9006514515acd3239efc36bf1 (diff)
Utils: Encourage marking of raw command line parameters
Change-Id: Id66ac07732c66ab8c1232fe1f58042de8a61abb0 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/libs/utils/fileutils.cpp18
-rw-r--r--src/libs/utils/fileutils.h12
-rw-r--r--src/plugins/android/androiddeployqtstep.cpp4
-rw-r--r--src/plugins/android/androidsdkmanager.cpp2
-rw-r--r--src/plugins/baremetal/openocdgdbserverprovider.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildstep.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/tealeafreader.cpp2
-rw-r--r--src/plugins/coreplugin/externaltool.cpp8
-rw-r--r--src/plugins/coreplugin/locator/executefilter.cpp2
-rw-r--r--src/plugins/cppcheck/cppcheckrunner.cpp2
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp2
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp2
-rw-r--r--src/plugins/projectexplorer/abstractprocessstep.cpp4
-rw-r--r--src/plugins/projectexplorer/runcontrol.cpp2
-rw-r--r--src/plugins/pythoneditor/pythoneditorplugin.cpp5
-rw-r--r--src/plugins/remotelinux/linuxdeviceprocess.cpp12
-rw-r--r--src/plugins/winrt/winrtdevice.cpp9
-rw-r--r--src/plugins/winrt/winrtrunnerhelper.cpp18
-rw-r--r--src/plugins/winrt/winrtrunnerhelper.h2
19 files changed, 65 insertions, 47 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp
index e08a812856..c402c8dae1 100644
--- a/src/libs/utils/fileutils.cpp
+++ b/src/libs/utils/fileutils.cpp
@@ -74,6 +74,22 @@ namespace Utils {
*/
+CommandLine::CommandLine(const FilePath &executable)
+ : m_executable(executable)
+{}
+
+CommandLine::CommandLine(const FilePath &exe, const QStringList &args)
+ : m_executable(exe)
+{
+ addArgs(args);
+}
+
+CommandLine::CommandLine(const FilePath &exe, const QString &args, RawType)
+ : m_executable(exe)
+{
+ addArgs(args, Raw);
+}
+
void CommandLine::addArg(const QString &arg, OsType osType)
{
QtcProcess::addArg(&m_arguments, arg, osType);
@@ -85,7 +101,7 @@ void CommandLine::addArgs(const QStringList &inArgs, OsType osType)
addArg(arg, osType);
}
-void CommandLine::addArgs(const QString &inArgs)
+void CommandLine::addArgs(const QString &inArgs, RawType)
{
QtcProcess::addArgs(&m_arguments, inArgs);
}
diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h
index 8193ae915f..15f119646e 100644
--- a/src/libs/utils/fileutils.h
+++ b/src/libs/utils/fileutils.h
@@ -131,15 +131,17 @@ using FileNameList = FilePathList;
class QTCREATOR_UTILS_EXPORT CommandLine
{
public:
- CommandLine() {}
+ enum RawType { Raw };
- CommandLine(const FilePath &executable, const QString &arguments)
- : m_executable(executable), m_arguments(arguments)
- {}
+ CommandLine() {}
+ explicit CommandLine(const FilePath &executable);
+ CommandLine(const FilePath &exe, const QStringList &args);
+ CommandLine(const FilePath &exe, const QString &unparsedArgs, RawType);
void addArg(const QString &arg, OsType osType = HostOsInfo::hostOs());
void addArgs(const QStringList &inArgs, OsType osType = HostOsInfo::hostOs());
- void addArgs(const QString &inArgs);
+
+ void addArgs(const QString &inArgs, RawType);
QString toUserOutput() const;
diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp
index 7994c85b6a..04e94614d3 100644
--- a/src/plugins/android/androiddeployqtstep.cpp
+++ b/src/plugins/android/androiddeployqtstep.cpp
@@ -297,9 +297,9 @@ bool AndroidDeployQtStep::init()
AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::runDeploy()
{
- CommandLine cmd(m_command, {});
+ CommandLine cmd(m_command);
if (m_useAndroiddeployqt && m_apkPath.isEmpty()) {
- cmd.addArgs(m_androiddeployqtArgs.arguments());
+ cmd.addArgs(m_androiddeployqtArgs.arguments(), CommandLine::Raw);
if (m_uninstallPreviousPackageRun)
cmd.addArg("--install");
else
diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp
index 8b58cdd1ad..a17170c609 100644
--- a/src/plugins/android/androidsdkmanager.cpp
+++ b/src/plugins/android/androidsdkmanager.cpp
@@ -930,7 +930,7 @@ void AndroidSdkManagerPrivate::getPendingLicense(SdkCmdFutureInterface &fi)
QtcProcess licenseCommand;
licenseCommand.setProcessEnvironment(AndroidConfigurations::toolsEnvironment(m_config));
bool reviewingLicenses = false;
- licenseCommand.setCommand(CommandLine(m_config.sdkManagerToolPath(), "--licenses"));
+ licenseCommand.setCommand(CommandLine(m_config.sdkManagerToolPath(), {"--licenses"}));
if (Utils::HostOsInfo::isWindowsHost())
licenseCommand.setUseCtrlCStub(true);
licenseCommand.start();
diff --git a/src/plugins/baremetal/openocdgdbserverprovider.cpp b/src/plugins/baremetal/openocdgdbserverprovider.cpp
index b7044defe0..69397e7871 100644
--- a/src/plugins/baremetal/openocdgdbserverprovider.cpp
+++ b/src/plugins/baremetal/openocdgdbserverprovider.cpp
@@ -112,7 +112,7 @@ QString OpenOcdGdbServerProvider::channel() const
CommandLine OpenOcdGdbServerProvider::command() const
{
- CommandLine cmd{m_executableFile, {}};
+ CommandLine cmd{m_executableFile};
cmd.addArg("-c");
if (startupMode() == StartupOnPipe)
@@ -127,7 +127,7 @@ CommandLine OpenOcdGdbServerProvider::command() const
cmd.addArgs({"-f", m_configurationFile});
if (!m_additionalArguments.isEmpty())
- cmd.addArgs(m_additionalArguments);
+ cmd.addArgs(m_additionalArguments, CommandLine::Raw);
return cmd;
}
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
index 364337308b..641a6a7f43 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
@@ -361,7 +361,7 @@ Utils::CommandLine CMakeBuildStep::cmakeCommand(CMakeRunConfiguration *rc) const
if (!m_toolArguments.isEmpty()) {
cmd.addArg("--");
- cmd.addArgs(m_toolArguments);
+ cmd.addArgs(m_toolArguments, Utils::CommandLine::Raw);
}
return cmd;
diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp
index d336d9e8cf..cc8e8a01b2 100644
--- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp
+++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp
@@ -519,7 +519,7 @@ void TeaLeafReader::startCMake(const QStringList &configurationArguments)
tr("Configuring \"%1\"").arg(m_parameters.projectName),
"CMake.Configure");
- m_cmakeProcess->setCommand(CommandLine(cmake->cmakeExecutable(), args));
+ m_cmakeProcess->setCommand(CommandLine(cmake->cmakeExecutable(), args, CommandLine::Raw));
emit configurationStarted();
m_cmakeProcess->start();
}
diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp
index b339dddd3d..0ef88fb3fa 100644
--- a/src/plugins/coreplugin/externaltool.cpp
+++ b/src/plugins/coreplugin/externaltool.cpp
@@ -663,11 +663,11 @@ void ExternalToolRunner::run()
this, &ExternalToolRunner::readStandardError);
if (!m_resolvedWorkingDirectory.isEmpty())
m_process->setWorkingDirectory(m_resolvedWorkingDirectory);
- m_process->setCommand(CommandLine(m_resolvedExecutable, m_resolvedArguments));
+ const CommandLine cmd{m_resolvedExecutable, m_resolvedArguments, CommandLine::Raw};
+ m_process->setCommand(cmd);
m_process->setEnvironment(m_resolvedEnvironment);
- MessageManager::write(tr("Starting external tool \"%1\" %2")
- .arg(m_resolvedExecutable.toUserOutput(), m_resolvedArguments),
- MessageManager::Silent);
+ MessageManager::write(tr("Starting external tool \"%1\"")
+ .arg(cmd.toUserOutput()), MessageManager::Silent);
m_process->start();
}
diff --git a/src/plugins/coreplugin/locator/executefilter.cpp b/src/plugins/coreplugin/locator/executefilter.cpp
index bc4a4b65a7..f98beae687 100644
--- a/src/plugins/coreplugin/locator/executefilter.cpp
+++ b/src/plugins/coreplugin/locator/executefilter.cpp
@@ -169,7 +169,7 @@ void ExecuteFilter::runHeadCommand()
}
MessageManager::write(tr("Starting command \"%1\".").arg(headCommand()));
m_process->setWorkingDirectory(d.workingDirectory);
- m_process->setCommand(Utils::CommandLine(fullPath, d.arguments));
+ m_process->setCommand({fullPath, d.arguments, Utils::CommandLine::Raw});
m_process->start();
m_process->closeWriteChannel();
if (!m_process->waitForStarted(1000)) {
diff --git a/src/plugins/cppcheck/cppcheckrunner.cpp b/src/plugins/cppcheck/cppcheckrunner.cpp
index 9b9872097a..bf0a85a6e1 100644
--- a/src/plugins/cppcheck/cppcheckrunner.cpp
+++ b/src/plugins/cppcheck/cppcheckrunner.cpp
@@ -155,7 +155,7 @@ void CppcheckRunner::checkQueued()
else
m_queue.begin().value() = files;
- m_process->setCommand(CommandLine(FilePath::fromString(m_binary), arguments));
+ m_process->setCommand(CommandLine(FilePath::fromString(m_binary), arguments, CommandLine::Raw));
m_process->start();
}
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 204a11698d..48ca22f1b0 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -3551,7 +3551,7 @@ void GdbEngine::setupEngine()
return;
}
- gdbCommand.addArgs("-i mi");
+ gdbCommand.addArgs({"-i", "mi"});
if (!boolSetting(LoadGdbInit))
gdbCommand.addArg("-n");
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index 3047fb8ad4..8a00d51cf8 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -207,7 +207,7 @@ void LldbEngine::setupEngine()
if (QFileInfo(runParameters().debugger.workingDirectory).isDir())
m_lldbProc.setWorkingDirectory(runParameters().debugger.workingDirectory);
- m_lldbProc.setCommand(CommandLine(FilePath::fromString(lldbCmd), QString()));
+ m_lldbProc.setCommand(CommandLine(FilePath::fromString(lldbCmd)));
m_lldbProc.start();
if (!m_lldbProc.waitForStarted()) {
diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp
index 1d92fa9280..ba1c590fe4 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.cpp
+++ b/src/plugins/projectexplorer/abstractprocessstep.cpp
@@ -213,7 +213,9 @@ void AbstractProcessStep::doRun()
}
}
- const CommandLine effectiveCommand{d->m_param.effectiveCommand(), d->m_param.effectiveArguments()};
+ const CommandLine effectiveCommand(d->m_param.effectiveCommand(),
+ d->m_param.effectiveArguments(),
+ CommandLine::Raw);
if (!effectiveCommand.executable().exists()) {
processStartupFailed();
finish(false);
diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp
index f90a8fd48c..188c54af7a 100644
--- a/src/plugins/projectexplorer/runcontrol.cpp
+++ b/src/plugins/projectexplorer/runcontrol.cpp
@@ -1551,7 +1551,7 @@ void RunWorker::stop()
CommandLine Runnable::commandLine() const
{
- return CommandLine(FilePath::fromString(executable), commandLineArguments);
+ return CommandLine(FilePath::fromString(executable), commandLineArguments, CommandLine::Raw);
}
void Runnable::setCommandLine(const CommandLine &cmdLine)
diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp
index d07c68cd9a..9a494b47b0 100644
--- a/src/plugins/pythoneditor/pythoneditorplugin.cpp
+++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp
@@ -299,9 +299,8 @@ void PythonRunConfiguration::updateTargetInformation()
Runnable PythonRunConfiguration::runnable() const
{
- CommandLine cmd{executable(), {}};
- cmd.addArg(mainScript());
- cmd.addArgs(aspect<ArgumentsAspect>()->arguments(macroExpander()));
+ CommandLine cmd{executable(), {mainScript()}};
+ cmd.addArgs(aspect<ArgumentsAspect>()->arguments(macroExpander()), CommandLine::Raw);
Runnable r;
r.setCommandLine(cmd);
diff --git a/src/plugins/remotelinux/linuxdeviceprocess.cpp b/src/plugins/remotelinux/linuxdeviceprocess.cpp
index ca08b44ec9..6c0e8febf3 100644
--- a/src/plugins/remotelinux/linuxdeviceprocess.cpp
+++ b/src/plugins/remotelinux/linuxdeviceprocess.cpp
@@ -79,28 +79,28 @@ QString LinuxDeviceProcess::fullCommandLine(const Runnable &runnable) const
for (const QString &filePath : rcFilesToSource()) {
cmd.addArgs({"test", "-f", filePath});
- cmd.addArgs("&&");
+ cmd.addArgs("&&", CommandLine::Raw);
cmd.addArgs({".", filePath});
- cmd.addArgs(";");
+ cmd.addArgs(";", CommandLine::Raw);
}
if (!runnable.workingDirectory.isEmpty()) {
cmd.addArgs({"cd", runnable.workingDirectory});
- cmd.addArgs("&&");
+ cmd.addArgs("&&", CommandLine::Raw);
}
if (!runInTerminal())
- cmd.addArgs("echo $$ && ");
+ cmd.addArgs("echo $$ && ", CommandLine::Raw);
const Environment &env = runnable.environment;
for (auto it = env.constBegin(); it != env.constEnd(); ++it)
- cmd.addArgs(env.key(it) + "='" + env.value(it) + '\'');
+ cmd.addArgs(env.key(it) + "='" + env.value(it) + '\'', CommandLine::Raw);
if (!runInTerminal())
cmd.addArg("exec");
cmd.addArg(runnable.executable);
- cmd.addArgs(runnable.commandLineArguments);
+ cmd.addArgs(runnable.commandLineArguments, CommandLine::Raw);
return cmd.arguments();
}
diff --git a/src/plugins/winrt/winrtdevice.cpp b/src/plugins/winrt/winrtdevice.cpp
index 9ceba3b323..b291ef3177 100644
--- a/src/plugins/winrt/winrtdevice.cpp
+++ b/src/plugins/winrt/winrtdevice.cpp
@@ -159,11 +159,10 @@ void WinRtDeviceFactory::autoDetect()
this, &WinRtDeviceFactory::onProcessFinished);
}
- const QString args = QStringLiteral("--list-devices");
- m_process->setCommand(CommandLine(FilePath::fromString(runnerFilePath), args));
- qCDebug(winrtDeviceLog) << __FUNCTION__ << "Starting process" << runnerFilePath
- << "with arguments" << args;
- MessageManager::write(runnerFilePath + QLatin1Char(' ') + args);
+ const CommandLine cmd(FilePath::fromString(runnerFilePath), {"--list-devices"});
+ m_process->setCommand(cmd);
+ qCDebug(winrtDeviceLog) << __FUNCTION__ << "Starting process" << cmd.toUserOutput();
+ MessageManager::write(cmd.toUserOutput());
m_process->start();
qCDebug(winrtDeviceLog) << __FUNCTION__ << "Process started";
}
diff --git a/src/plugins/winrt/winrtrunnerhelper.cpp b/src/plugins/winrt/winrtrunnerhelper.cpp
index 3ab8461f32..3e29aeb9df 100644
--- a/src/plugins/winrt/winrtrunnerhelper.cpp
+++ b/src/plugins/winrt/winrtrunnerhelper.cpp
@@ -94,11 +94,11 @@ WinRtRunnerHelper::WinRtRunnerHelper(ProjectExplorer::RunWorker *runWorker, QStr
if (auto aspect = runControl->aspect<LoopbackExemptServerAspect>())
loopbackExemptServer = aspect->value();
if (loopbackExemptClient && loopbackExemptServer)
- m_loopbackArguments = "--loopbackexempt clientserver";
+ m_loopbackArguments = QStringList{"--loopbackexempt", "clientserver"};
else if (loopbackExemptClient)
- m_loopbackArguments = "--loopbackexempt client";
+ m_loopbackArguments = QStringList{"--loopbackexempt", "client"};
else if (loopbackExemptServer)
- m_loopbackArguments = "--loopbackexempt server";
+ m_loopbackArguments = QStringList{"--loopbackexempt", "server"};
if (BuildConfiguration *bc = runControl->target()->activeBuildConfiguration())
m_environment = bc->environment();
@@ -190,29 +190,29 @@ void WinRtRunnerHelper::startWinRtRunner(const RunConf &conf)
}
Q_FALLTHROUGH();
case Start:
- cmdLine.addArgs("--start --stop --wait 0");
+ cmdLine.addArgs({"--start", "--stop", "--wait", "0"});
connectProcess = true;
QTC_ASSERT(!m_process, m_process->deleteLater());
m_process = new QtcProcess(this);
process = m_process;
break;
case Stop:
- cmdLine.addArgs("--stop");
+ cmdLine.addArg("--stop");
process = new QtcProcess(this);
break;
}
if (m_device->type() == Constants::WINRT_DEVICE_TYPE_LOCAL)
- cmdLine.addArgs("--profile appx");
+ cmdLine.addArgs({"--profile", "appx"});
else if (m_device->type() == Constants::WINRT_DEVICE_TYPE_PHONE ||
m_device->type() == Constants::WINRT_DEVICE_TYPE_EMULATOR)
- cmdLine.addArgs("--profile appxphone");
+ cmdLine.addArgs({"--profile", "appxphone"});
cmdLine.addArgs(m_loopbackArguments);
cmdLine.addArg(m_executableFilePath);
- cmdLine.addArgs(m_arguments);
+ cmdLine.addArgs(m_arguments, CommandLine::Raw);
- appendMessage("winrtrunner " + cmdLine.arguments() + '\n', NormalMessageFormat);
+ appendMessage(cmdLine.toUserOutput(), NormalMessageFormat);
if (connectProcess) {
connect(process, &QProcess::started, this, &WinRtRunnerHelper::started);
diff --git a/src/plugins/winrt/winrtrunnerhelper.h b/src/plugins/winrt/winrtrunnerhelper.h
index f900dd1772..785946e985 100644
--- a/src/plugins/winrt/winrtrunnerhelper.h
+++ b/src/plugins/winrt/winrtrunnerhelper.h
@@ -77,7 +77,7 @@ private:
QString m_debuggerExecutable;
QString m_debuggerArguments;
QString m_arguments;
- QString m_loopbackArguments;
+ QStringList m_loopbackArguments;
bool m_uninstallAfterStop = false;
Utils::QtcProcess *m_process = nullptr;
};