Commit 2ba88d1c authored by hjk's avatar hjk

Analyzer: Remove IAnalizerTool::createStartParameters

That's a needless indirection. The run control factories know pretty
well what kind of start parameters they need.

Change-Id: Ia2d92beb6512cd99254fe22e215950cc67d5d0ed
Reviewed-by: default avatarAurindam Jana <aurindam.jana@digia.com>
Reviewed-by: default avatarChristiaan Janssen <christiaan.janssen@digia.com>
parent db2dc342
...@@ -123,11 +123,6 @@ public: ...@@ -123,11 +123,6 @@ public:
virtual bool canRun(ProjectExplorer::RunConfiguration *runConfiguration, virtual bool canRun(ProjectExplorer::RunConfiguration *runConfiguration,
ProjectExplorer::RunMode mode) const = 0; ProjectExplorer::RunMode mode) const = 0;
/// Create the start parameters for the run control factory
virtual AnalyzerStartParameters createStartParameters(
ProjectExplorer::RunConfiguration *runConfiguration,
ProjectExplorer::RunMode mode) const = 0;
virtual void startTool(StartMode mode) = 0; virtual void startTool(StartMode mode) = 0;
/// Called when tools gets selected. /// Called when tools gets selected.
......
...@@ -37,11 +37,22 @@ ...@@ -37,11 +37,22 @@
#include <analyzerbase/analyzerruncontrol.h> #include <analyzerbase/analyzerruncontrol.h>
#include <analyzerbase/analyzersettings.h> #include <analyzerbase/analyzersettings.h>
#include <debugger/debuggerrunconfigurationaspect.h>
#include <projectexplorer/environmentaspect.h>
#include <projectexplorer/kitinformation.h> #include <projectexplorer/kitinformation.h>
#include <projectexplorer/localapplicationrunconfiguration.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/project.h>
#include <projectexplorer/session.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <qmlprojectmanager/qmlprojectrunconfiguration.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QTcpServer>
using namespace Analyzer; using namespace Analyzer;
using namespace ProjectExplorer; using namespace ProjectExplorer;
...@@ -63,6 +74,51 @@ bool QmlProfilerRunControlFactory::canRun(RunConfiguration *runConfiguration, Ru ...@@ -63,6 +74,51 @@ bool QmlProfilerRunControlFactory::canRun(RunConfiguration *runConfiguration, Ru
return false; return false;
} }
static AnalyzerStartParameters createQmlProfilerStartParameters(RunConfiguration *runConfiguration)
{
AnalyzerStartParameters sp;
EnvironmentAspect *environment = runConfiguration->extraAspect<EnvironmentAspect>();
Debugger::DebuggerRunConfigurationAspect *debugger
= runConfiguration->extraAspect<Debugger::DebuggerRunConfigurationAspect>();
QTC_ASSERT(debugger, return sp);
// FIXME: This is only used to communicate the connParams settings.
if (QmlProjectManager::QmlProjectRunConfiguration *rc1 =
qobject_cast<QmlProjectManager::QmlProjectRunConfiguration *>(runConfiguration)) {
// This is a "plain" .qmlproject.
if (environment)
sp.environment = environment->environment();
sp.workingDirectory = rc1->workingDirectory();
sp.debuggee = rc1->observerPath();
sp.debuggeeArgs = rc1->viewerArguments();
sp.displayName = rc1->displayName();
} else if (LocalApplicationRunConfiguration *rc2 =
qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) {
if (environment)
sp.environment = environment->environment();
sp.workingDirectory = rc2->workingDirectory();
sp.debuggee = rc2->executable();
sp.debuggeeArgs = rc2->commandLineArguments();
sp.displayName = rc2->displayName();
} else {
// What could that be?
QTC_ASSERT(false, return sp);
}
const IDevice::ConstPtr device = DeviceKitInformation::device(runConfiguration->target()->kit());
if (device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
QTcpServer server;
if (!server.listen(QHostAddress::LocalHost) && !server.listen(QHostAddress::LocalHostIPv6)) {
qWarning() << "Cannot open port on host for QML profiling.";
return sp;
}
sp.analyzerHost = server.serverAddress().toString();
sp.analyzerPort = server.serverPort();
}
sp.startMode = StartQml;
sp.toolId = "QmlProfiler";
return sp;
}
RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfiguration, RunMode mode, QString *errorMessage) RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfiguration, RunMode mode, QString *errorMessage)
{ {
IAnalyzerTool *tool = AnalyzerManager::toolFromRunMode(mode); IAnalyzerTool *tool = AnalyzerManager::toolFromRunMode(mode);
...@@ -74,12 +130,10 @@ RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfigurat ...@@ -74,12 +130,10 @@ RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfigurat
QTC_ASSERT(canRun(runConfiguration, mode), return 0); QTC_ASSERT(canRun(runConfiguration, mode), return 0);
AnalyzerStartParameters sp = tool->createStartParameters(runConfiguration, mode); AnalyzerStartParameters sp = createQmlProfilerStartParameters(runConfiguration);
sp.toolId = tool->id();
// only desktop device is supported // only desktop device is supported
const ProjectExplorer::IDevice::ConstPtr device = const IDevice::ConstPtr device = DeviceKitInformation::device(runConfiguration->target()->kit());
ProjectExplorer::DeviceKitInformation::device(runConfiguration->target()->kit());
QTC_ASSERT(device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE, return 0); QTC_ASSERT(device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE, return 0);
AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, runConfiguration); AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, runConfiguration);
......
...@@ -70,8 +70,6 @@ ...@@ -70,8 +70,6 @@
#include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/actioncontainer.h>
#include <debugger/debuggerrunconfigurationaspect.h>
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <QApplication> #include <QApplication>
...@@ -285,54 +283,6 @@ static QString sysroot(RunConfiguration *runConfig) ...@@ -285,54 +283,6 @@ static QString sysroot(RunConfiguration *runConfig)
return QString(); return QString();
} }
AnalyzerStartParameters QmlProfilerTool::createStartParameters(RunConfiguration *runConfiguration, RunMode mode) const
{
Q_UNUSED(mode);
AnalyzerStartParameters sp;
ProjectExplorer::EnvironmentAspect *environment
= runConfiguration->extraAspect<ProjectExplorer::EnvironmentAspect>();
Debugger::DebuggerRunConfigurationAspect *debugger
= runConfiguration->extraAspect<Debugger::DebuggerRunConfigurationAspect>();
QTC_ASSERT(debugger, return sp);
// FIXME: This is only used to communicate the connParams settings.
if (QmlProjectRunConfiguration *rc1 =
qobject_cast<QmlProjectRunConfiguration *>(runConfiguration)) {
// This is a "plain" .qmlproject.
if (environment)
sp.environment = environment->environment();
sp.workingDirectory = rc1->workingDirectory();
sp.debuggee = rc1->observerPath();
sp.debuggeeArgs = rc1->viewerArguments();
sp.displayName = rc1->displayName();
} else if (LocalApplicationRunConfiguration *rc2 =
qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) {
if (environment)
sp.environment = environment->environment();
sp.workingDirectory = rc2->workingDirectory();
sp.debuggee = rc2->executable();
sp.debuggeeArgs = rc2->commandLineArguments();
sp.displayName = rc2->displayName();
} else {
// What could that be?
QTC_ASSERT(false, return sp);
}
const ProjectExplorer::IDevice::ConstPtr device =
ProjectExplorer::DeviceKitInformation::device(runConfiguration->target()->kit());
if (device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
QTcpServer server;
if (!server.listen(QHostAddress::LocalHost) && !server.listen(QHostAddress::LocalHostIPv6)) {
qWarning() << "Cannot open port on host for QML profiling.";
return sp;
}
sp.analyzerHost = server.serverAddress().toString();
sp.analyzerPort = server.serverPort();
}
sp.startMode = StartQml;
return sp;
}
QWidget *QmlProfilerTool::createWidgets() QWidget *QmlProfilerTool::createWidgets()
{ {
QTC_ASSERT(!d->m_viewContainer, return 0); QTC_ASSERT(!d->m_viewContainer, return 0);
......
...@@ -62,10 +62,6 @@ public: ...@@ -62,10 +62,6 @@ public:
bool canRun(ProjectExplorer::RunConfiguration *runConfiguration, bool canRun(ProjectExplorer::RunConfiguration *runConfiguration,
ProjectExplorer::RunMode mode) const; ProjectExplorer::RunMode mode) const;
Analyzer::AnalyzerStartParameters createStartParameters(
ProjectExplorer::RunConfiguration *runConfiguration,
ProjectExplorer::RunMode mode) const;
QWidget *createWidgets(); QWidget *createWidgets();
void startTool(Analyzer::StartMode mode); void startTool(Analyzer::StartMode mode);
......
...@@ -35,8 +35,19 @@ ...@@ -35,8 +35,19 @@
#include <analyzerbase/analyzerruncontrol.h> #include <analyzerbase/analyzerruncontrol.h>
#include <analyzerbase/analyzersettings.h> #include <analyzerbase/analyzersettings.h>
#include <remotelinux/remotelinuxrunconfiguration.h>
#include <debugger/debuggerrunconfigurationaspect.h>
#include <projectexplorer/environmentaspect.h>
#include <projectexplorer/localapplicationrunconfiguration.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/target.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QTcpServer>
using namespace Analyzer; using namespace Analyzer;
using namespace ProjectExplorer; using namespace ProjectExplorer;
...@@ -58,6 +69,45 @@ bool ValgrindRunControlFactory::canRun(RunConfiguration *runConfiguration, RunMo ...@@ -58,6 +69,45 @@ bool ValgrindRunControlFactory::canRun(RunConfiguration *runConfiguration, RunMo
return false; return false;
} }
static AnalyzerStartParameters createValgrindStartParameters(RunConfiguration *runConfiguration)
{
Analyzer::AnalyzerStartParameters sp;
sp.displayName = runConfiguration->displayName();
if (LocalApplicationRunConfiguration *rc1 =
qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) {
EnvironmentAspect *aspect = runConfiguration->extraAspect<EnvironmentAspect>();
if (aspect)
sp.environment = aspect->environment();
sp.workingDirectory = rc1->workingDirectory();
sp.debuggee = rc1->executable();
sp.debuggeeArgs = rc1->commandLineArguments();
const IDevice::ConstPtr device =
DeviceKitInformation::device(runConfiguration->target()->kit());
QTC_ASSERT(device, return sp);
QTC_ASSERT(device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE, return sp);
QTcpServer server;
if (!server.listen(QHostAddress::LocalHost) && !server.listen(QHostAddress::LocalHostIPv6)) {
qWarning() << "Cannot open port on host for profiling.";
return sp;
}
sp.connParams.host = server.serverAddress().toString();
sp.connParams.port = server.serverPort();
sp.startMode = Analyzer::StartLocal;
} else if (RemoteLinux::RemoteLinuxRunConfiguration *rc2 =
qobject_cast<RemoteLinux::RemoteLinuxRunConfiguration *>(runConfiguration)) {
sp.startMode = Analyzer::StartRemote;
sp.debuggee = rc2->remoteExecutableFilePath();
sp.connParams = DeviceKitInformation::device(rc2->target()->kit())->sshParameters();
sp.analyzerCmdPrefix = rc2->commandPrefix();
sp.debuggeeArgs = rc2->arguments();
} else {
// Might be S60DeviceRunfiguration, or something else ...
//sp.startMode = StartRemote;
sp.startMode = Analyzer::StartRemote;
}
return sp;
}
RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration, RunMode mode, QString *errorMessage) RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration, RunMode mode, QString *errorMessage)
{ {
IAnalyzerTool *tool = AnalyzerManager::toolFromRunMode(mode); IAnalyzerTool *tool = AnalyzerManager::toolFromRunMode(mode);
...@@ -69,7 +119,7 @@ RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration ...@@ -69,7 +119,7 @@ RunControl *ValgrindRunControlFactory::create(RunConfiguration *runConfiguration
QTC_ASSERT(canRun(runConfiguration, mode), return 0); QTC_ASSERT(canRun(runConfiguration, mode), return 0);
AnalyzerStartParameters sp = tool->createStartParameters(runConfiguration, mode); AnalyzerStartParameters sp = createValgrindStartParameters(runConfiguration);
sp.toolId = tool->id(); sp.toolId = tool->id();
AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, runConfiguration); AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, runConfiguration);
......
...@@ -29,21 +29,7 @@ ...@@ -29,21 +29,7 @@
#include "valgrindtool.h" #include "valgrindtool.h"
#include <remotelinux/remotelinuxrunconfiguration.h>
#include <debugger/debuggerrunconfigurationaspect.h>
#include <projectexplorer/environmentaspect.h>
#include <projectexplorer/localapplicationrunconfiguration.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/target.h>
#include <utils/qtcassert.h>
#include <QTcpServer>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace RemoteLinux;
namespace Valgrind { namespace Valgrind {
namespace Internal { namespace Internal {
...@@ -58,47 +44,5 @@ bool ValgrindTool::canRun(RunConfiguration *, RunMode mode) const ...@@ -58,47 +44,5 @@ bool ValgrindTool::canRun(RunConfiguration *, RunMode mode) const
return mode == runMode(); return mode == runMode();
} }
Analyzer::AnalyzerStartParameters ValgrindTool::createStartParameters(
RunConfiguration *runConfiguration, RunMode mode) const
{
Q_UNUSED(mode);
Analyzer::AnalyzerStartParameters sp;
sp.displayName = runConfiguration->displayName();
if (LocalApplicationRunConfiguration *rc1 =
qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) {
EnvironmentAspect *aspect = runConfiguration->extraAspect<EnvironmentAspect>();
if (aspect)
sp.environment = aspect->environment();
sp.workingDirectory = rc1->workingDirectory();
sp.debuggee = rc1->executable();
sp.debuggeeArgs = rc1->commandLineArguments();
const IDevice::ConstPtr device =
DeviceKitInformation::device(runConfiguration->target()->kit());
QTC_ASSERT(device, return sp);
QTC_ASSERT(device->type() == Constants::DESKTOP_DEVICE_TYPE, return sp);
QTcpServer server;
if (!server.listen(QHostAddress::LocalHost) && !server.listen(QHostAddress::LocalHostIPv6)) {
qWarning() << "Cannot open port on host for profiling.";
return sp;
}
sp.connParams.host = server.serverAddress().toString();
sp.connParams.port = server.serverPort();
sp.startMode = Analyzer::StartLocal;
} else if (RemoteLinuxRunConfiguration *rc2 =
qobject_cast<RemoteLinuxRunConfiguration *>(runConfiguration)) {
sp.startMode = Analyzer::StartRemote;
sp.debuggee = rc2->remoteExecutableFilePath();
sp.connParams = DeviceKitInformation::device(rc2->target()->kit())->sshParameters();
sp.analyzerCmdPrefix = rc2->commandPrefix();
sp.debuggeeArgs = rc2->arguments();
} else {
// Might be S60DeviceRunfiguration, or something else ...
//sp.startMode = StartRemote;
sp.startMode = Analyzer::StartRemote;
}
return sp;
}
} // namespace Internal } // namespace Internal
} // namespace Valgrind } // namespace Valgrind
...@@ -43,10 +43,6 @@ public: ...@@ -43,10 +43,6 @@ public:
bool canRun(ProjectExplorer::RunConfiguration *runConfiguration, bool canRun(ProjectExplorer::RunConfiguration *runConfiguration,
ProjectExplorer::RunMode mode) const; ProjectExplorer::RunMode mode) const;
Analyzer::AnalyzerStartParameters createStartParameters(
ProjectExplorer::RunConfiguration *runConfiguration,
ProjectExplorer::RunMode mode) const;
}; };
} // namespace Internal } // namespace Internal
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment