diff options
-rw-r--r-- | src/plugins/memcheck/memcheckconfigwidget.cpp | 2 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckconfigwidget.h | 8 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckconfigwidget.ui | 8 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckengine.cpp | 10 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckengine.h | 18 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckerrorview.cpp | 16 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckerrorview.h | 18 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckplugin.cpp | 4 | ||||
-rw-r--r-- | src/plugins/memcheck/memcheckplugin.h | 4 | ||||
-rw-r--r-- | src/plugins/memcheck/memchecksettings.cpp | 6 | ||||
-rw-r--r-- | src/plugins/memcheck/memchecksettings.h | 4 | ||||
-rw-r--r-- | src/plugins/memcheck/memchecktool.cpp | 55 | ||||
-rw-r--r-- | src/plugins/memcheck/memchecktool.h | 28 | ||||
-rw-r--r-- | src/plugins/memcheck/suppressiondialog.cpp | 6 | ||||
-rw-r--r-- | src/plugins/memcheck/suppressiondialog.h | 18 | ||||
-rw-r--r-- | src/plugins/memcheck/suppressiondialog.ui | 8 |
16 files changed, 125 insertions, 88 deletions
diff --git a/src/plugins/memcheck/memcheckconfigwidget.cpp b/src/plugins/memcheck/memcheckconfigwidget.cpp index a60f452a3de..e2000d5c1d2 100644 --- a/src/plugins/memcheck/memcheckconfigwidget.cpp +++ b/src/plugins/memcheck/memcheckconfigwidget.cpp @@ -45,7 +45,7 @@ #include <QtGui/QFileDialog> #include <QtCore/QDebug> -using namespace Analyzer::Internal; +using namespace Memcheck::Internal; MemcheckConfigWidget::MemcheckConfigWidget(AbstractMemcheckSettings *settings, QWidget *parent) : QWidget(parent), diff --git a/src/plugins/memcheck/memcheckconfigwidget.h b/src/plugins/memcheck/memcheckconfigwidget.h index a62ffc5dd48..2e7af7435e8 100644 --- a/src/plugins/memcheck/memcheckconfigwidget.h +++ b/src/plugins/memcheck/memcheckconfigwidget.h @@ -41,14 +41,14 @@ QT_BEGIN_NAMESPACE class QStandardItemModel; +QT_END_NAMESPACE + +namespace Memcheck { +namespace Internal { namespace Ui { class MemcheckConfigWidget; } -QT_END_NAMESPACE - -namespace Analyzer { -namespace Internal { class AbstractMemcheckSettings; diff --git a/src/plugins/memcheck/memcheckconfigwidget.ui b/src/plugins/memcheck/memcheckconfigwidget.ui index fbc111cf354..8b0ebf6de50 100644 --- a/src/plugins/memcheck/memcheckconfigwidget.ui +++ b/src/plugins/memcheck/memcheckconfigwidget.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>MemcheckConfigWidget</class> - <widget class="QWidget" name="MemcheckConfigWidget"> + <class>Memcheck::Internal::MemcheckConfigWidget</class> + <widget class="QWidget" name="Memcheck::Internal::MemcheckConfigWidget"> <property name="geometry"> <rect> <x>0</x> @@ -39,7 +39,7 @@ <item row="3" column="0"> <widget class="QLabel" name="label"> <property name="text"> - <string>Suppressions:</string> + <string>Suppression files:</string> </property> <property name="buddy"> <cstring>suppressionList</cstring> @@ -66,7 +66,7 @@ <item> <widget class="QPushButton" name="addSuppression"> <property name="text"> - <string>Add</string> + <string>Add...</string> </property> </widget> </item> diff --git a/src/plugins/memcheck/memcheckengine.cpp b/src/plugins/memcheck/memcheckengine.cpp index 6e87b5105d3..67581fd2d5d 100644 --- a/src/plugins/memcheck/memcheckengine.cpp +++ b/src/plugins/memcheck/memcheckengine.cpp @@ -44,11 +44,15 @@ #include <utils/qtcassert.h> -using namespace Analyzer::Internal; +using namespace Analyzer; +using namespace Memcheck; using namespace Valgrind::XmlProtocol; -MemcheckEngine::MemcheckEngine(ProjectExplorer::RunConfiguration *runConfiguration) - : ValgrindEngine(runConfiguration) +using namespace Memcheck::Internal; + +MemcheckEngine::MemcheckEngine(const Analyzer::AnalyzerStartParameters &sp, + ProjectExplorer::RunConfiguration *runConfiguration) + : ValgrindEngine(sp, runConfiguration) { connect(&m_parser, SIGNAL(error(const Valgrind::XmlProtocol::Error &)), SIGNAL(parserError(const Valgrind::XmlProtocol::Error &))); diff --git a/src/plugins/memcheck/memcheckengine.h b/src/plugins/memcheck/memcheckengine.h index 2a89ed7f99c..36705e1583e 100644 --- a/src/plugins/memcheck/memcheckengine.h +++ b/src/plugins/memcheck/memcheckengine.h @@ -41,14 +41,15 @@ #include <valgrindtoolbase/valgrindengine.h> -namespace Analyzer { +namespace Memcheck { namespace Internal { -class MemcheckEngine : public ValgrindEngine +class MemcheckEngine : public Valgrind::Internal::ValgrindEngine { Q_OBJECT public: - explicit MemcheckEngine(ProjectExplorer::RunConfiguration *runConfiguration); + explicit MemcheckEngine(const Analyzer::AnalyzerStartParameters &sp, + ProjectExplorer::RunConfiguration *runConfiguration); void start(); void stop(); @@ -60,20 +61,21 @@ signals: void parserError(const Valgrind::XmlProtocol::Error &error); void suppressionCount(const QString &name, qint64 count); +protected: + virtual QString progressTitle() const; + virtual QStringList toolArguments() const; + virtual Valgrind::ValgrindRunner *runner(); + private slots: void receiveLogMessage(const QByteArray &); void status(const Valgrind::XmlProtocol::Status &status); private: - QString progressTitle() const; - QStringList toolArguments() const; - Valgrind::ValgrindRunner *runner(); - Valgrind::XmlProtocol::ThreadedParser m_parser; Valgrind::Memcheck::MemcheckRunner m_runner; }; } // namespace Internal -} // namespace Analyzer +} // namespace Memcheck #endif // MEMCHECKENGINE_H diff --git a/src/plugins/memcheck/memcheckerrorview.cpp b/src/plugins/memcheck/memcheckerrorview.cpp index d5c262cc813..c38757fe483 100644 --- a/src/plugins/memcheck/memcheckerrorview.cpp +++ b/src/plugins/memcheck/memcheckerrorview.cpp @@ -68,8 +68,8 @@ #include <QtGui/QApplication> #include <QtGui/QMenu> -using namespace Analyzer; -using namespace Analyzer::Internal; +using namespace Memcheck; +using namespace Memcheck::Internal; using namespace Valgrind::XmlProtocol; MemcheckErrorDelegate::MemcheckErrorDelegate(QListView *parent) @@ -152,7 +152,7 @@ static QString makeFrameName(const Frame &frame, const QString &relativeTo, } if (!fn.isEmpty()) - return QCoreApplication::translate("Analyzer::Internal", "%1 in %2").arg(Qt::escape(fn), path); + return QCoreApplication::translate("Memcheck::Internal", "%1 in %2").arg(Qt::escape(fn), path); else if (!path.isEmpty()) return path; else @@ -176,14 +176,14 @@ QString errorLocation(const QModelIndex &index, const Error &error, bool link = false, const QString &linkAttr = QString()) { const ErrorListModel *model = 0; - const QAbstractProxyModel *proxy = qobject_cast<const QAbstractProxyModel*>(index.model()); + const QAbstractProxyModel *proxy = qobject_cast<const QAbstractProxyModel *>(index.model()); while(!model && proxy) { - model = qobject_cast<const ErrorListModel*>(proxy->sourceModel()); - proxy = qobject_cast<const QAbstractProxyModel*>(proxy->sourceModel()); + model = qobject_cast<const ErrorListModel *>(proxy->sourceModel()); + proxy = qobject_cast<const QAbstractProxyModel *>(proxy->sourceModel()); }; QTC_ASSERT(model, return QString()); - return QCoreApplication::translate("Analyzer::Internal", "in %1"). + return QCoreApplication::translate("Memcheck::Internal", "in %1"). arg(makeFrameName(model->findRelevantFrame(error), relativeToPath(), link, linkAttr)); } @@ -474,7 +474,7 @@ QString MemcheckErrorView::defaultSuppressionFile() const // slot, can (for now) be invoked either when the settings were modified *or* when the active // settings object has changed. -void MemcheckErrorView::settingsChanged(AnalyzerSettings *settings) +void MemcheckErrorView::settingsChanged(Analyzer::AnalyzerSettings *settings) { QTC_ASSERT(settings, return); diff --git a/src/plugins/memcheck/memcheckerrorview.h b/src/plugins/memcheck/memcheckerrorview.h index b303164cc8c..6f9036db815 100644 --- a/src/plugins/memcheck/memcheckerrorview.h +++ b/src/plugins/memcheck/memcheckerrorview.h @@ -45,14 +45,16 @@ class QListView; class QVBoxLayout; QT_END_NAMESPACE +namespace Analyzer +{ +class AnalyzerSettings; +} + namespace ProjectExplorer { class Project; } -namespace Analyzer { - -class AnalyzerSettings; - +namespace Memcheck { namespace Internal { class MemcheckErrorDelegate : public QStyledItemDelegate @@ -103,13 +105,13 @@ public: void setDefaultSuppressionFile(const QString &suppFile); QString defaultSuppressionFile() const; - AnalyzerSettings *settings() const { return m_settings; } + Analyzer::AnalyzerSettings *settings() const { return m_settings; } signals: void resized(); public slots: - void settingsChanged(AnalyzerSettings *settings); + void settingsChanged(Analyzer::AnalyzerSettings *settings); private slots: void suppressError(); @@ -122,10 +124,10 @@ private: QAction *m_copyAction; QAction *m_suppressAction; QString m_defaultSuppFile; - AnalyzerSettings *m_settings; + Analyzer::AnalyzerSettings *m_settings; }; } // namespace Internal -} // namespace Analyzer +} // namespace Memcheck #endif // MEMCHECKERRORVIEW_H diff --git a/src/plugins/memcheck/memcheckplugin.cpp b/src/plugins/memcheck/memcheckplugin.cpp index 7c66ab53fec..aff4f38f9ed 100644 --- a/src/plugins/memcheck/memcheckplugin.cpp +++ b/src/plugins/memcheck/memcheckplugin.cpp @@ -45,7 +45,9 @@ #include <QtCore/QtPlugin> using namespace Analyzer; -using namespace Analyzer::Internal; +using namespace Memcheck; + +using namespace Memcheck::Internal; MemcheckPlugin::MemcheckPlugin() { diff --git a/src/plugins/memcheck/memcheckplugin.h b/src/plugins/memcheck/memcheckplugin.h index 3848204bfa5..275222b87f1 100644 --- a/src/plugins/memcheck/memcheckplugin.h +++ b/src/plugins/memcheck/memcheckplugin.h @@ -38,7 +38,7 @@ #include <extensionsystem/iplugin.h> -namespace Analyzer { +namespace Memcheck { namespace Internal { class MemcheckPlugin : public ExtensionSystem::IPlugin @@ -54,6 +54,6 @@ public: }; } // namespace Internal -} // namespace Analyzer +} // namespace Memcheck #endif // MEMCHECKPLUGIN_H diff --git a/src/plugins/memcheck/memchecksettings.cpp b/src/plugins/memcheck/memchecksettings.cpp index 5d645558190..c6d68315e52 100644 --- a/src/plugins/memcheck/memchecksettings.cpp +++ b/src/plugins/memcheck/memchecksettings.cpp @@ -40,8 +40,10 @@ #include <utils/qtcassert.h> -using namespace Analyzer::Internal; using namespace Analyzer; +using namespace Memcheck; + +using namespace Memcheck::Internal; static const QLatin1String numCallersC("Analyzer.Valgrind.NumCallers"); static const QLatin1String trackOriginsC("Analyzer.Valgrind.TrackOrigins"); @@ -152,7 +154,7 @@ QString AbstractMemcheckSettings::displayName() const return tr("Memory Analysis"); } -QWidget* AbstractMemcheckSettings::createConfigWidget(QWidget *parent) +QWidget *AbstractMemcheckSettings::createConfigWidget(QWidget *parent) { return new MemcheckConfigWidget(this, parent); } diff --git a/src/plugins/memcheck/memchecksettings.h b/src/plugins/memcheck/memchecksettings.h index 5e0644125fa..22bf1a3b9ce 100644 --- a/src/plugins/memcheck/memchecksettings.h +++ b/src/plugins/memcheck/memchecksettings.h @@ -38,13 +38,13 @@ #include <analyzerbase/analyzersettings.h> -namespace Analyzer { +namespace Memcheck { namespace Internal { /** * Generic memcheck settings */ -class AbstractMemcheckSettings : public AbstractAnalyzerSubConfig +class AbstractMemcheckSettings : public Analyzer::AbstractAnalyzerSubConfig { Q_OBJECT public: diff --git a/src/plugins/memcheck/memchecktool.cpp b/src/plugins/memcheck/memchecktool.cpp index e6d0f4ddd74..3adb0b82108 100644 --- a/src/plugins/memcheck/memchecktool.cpp +++ b/src/plugins/memcheck/memchecktool.cpp @@ -40,6 +40,7 @@ #include <analyzerbase/analyzermanager.h> #include <analyzerbase/analyzerconstants.h> +#include <analyzerbase/ianalyzeroutputpaneadapter.h> #include <valgrind/xmlprotocol/errorlistmodel.h> #include <valgrind/xmlprotocol/stackmodel.h> @@ -91,9 +92,10 @@ #include <QtGui/QCheckBox> #include <utils/stylehelper.h> +using namespace Analyzer; using namespace Valgrind::XmlProtocol; -namespace Analyzer { +namespace Memcheck { namespace Internal { // Adapter for output pane. @@ -243,7 +245,7 @@ MemcheckTool::MemcheckTool(QObject *parent) : void MemcheckTool::settingsDestroyed(QObject *settings) { - Q_ASSERT(m_settings == settings); + QTC_ASSERT(m_settings == settings, return); m_settings = AnalyzerGlobalSettings::instance(); } @@ -331,14 +333,16 @@ public: return Frame(); //find the first frame belonging to the project - foreach(const Frame &frame, frames) { - if (frame.directory().isEmpty() || frame.file().isEmpty()) - continue; - - //filepaths can contain "..", clean them: - const QString f = QFileInfo(frame.directory() + QLatin1Char('/') + frame.file()).absoluteFilePath(); - if (m_projectFiles.contains(f)) - return frame; + if (!m_projectFiles.isEmpty()) { + foreach(const Frame &frame, frames) { + if (frame.directory().isEmpty() || frame.file().isEmpty()) + continue; + + //filepaths can contain "..", clean them: + const QString f = QFileInfo(frame.directory() + QLatin1Char('/') + frame.file()).absoluteFilePath(); + if (m_projectFiles.contains(f)) + return frame; + } } //if no frame belonging to the project was found, return the first one that is not malloc/new @@ -418,14 +422,15 @@ void MemcheckTool::initialize(ExtensionSystem::IPlugin */*plugin*/) maybeActiveRunConfigurationChanged(); } -IAnalyzerEngine *MemcheckTool::createEngine(ProjectExplorer::RunConfiguration *runConfiguration) +IAnalyzerEngine *MemcheckTool::createEngine(const AnalyzerStartParameters &sp, + ProjectExplorer::RunConfiguration *runConfiguration) { - m_frameFinder->setFiles(runConfiguration->target()->project()->files(ProjectExplorer::Project::AllFiles)); + m_frameFinder->setFiles(runConfiguration ? runConfiguration->target()->project()->files(ProjectExplorer::Project::AllFiles) : QStringList()); - MemcheckEngine *engine = new MemcheckEngine(runConfiguration); + MemcheckEngine *engine = new MemcheckEngine(sp, runConfiguration); - connect(engine, SIGNAL(starting(const IAnalyzerEngine*)), - this, SLOT(engineStarting(const IAnalyzerEngine*))); + connect(engine, SIGNAL(starting(const Analyzer::IAnalyzerEngine*)), + this, SLOT(engineStarting(const Analyzer::IAnalyzerEngine*))); connect(engine, SIGNAL(parserError(Valgrind::XmlProtocol::Error)), this, SLOT(parserError(Valgrind::XmlProtocol::Error))); connect(engine, SIGNAL(internalParserError(QString)), @@ -439,12 +444,15 @@ void MemcheckTool::engineStarting(const IAnalyzerEngine *engine) { clearErrorView(); - const QString dir = engine->runConfiguration()->target()->project()->projectDirectory(); - const MemcheckEngine *mEngine = dynamic_cast<const MemcheckEngine*>(engine); + QString dir; + if (ProjectExplorer::RunConfiguration *rc = engine->runConfiguration()) + dir = rc->target()->project()->projectDirectory() + QDir::separator(); + + const MemcheckEngine *mEngine = dynamic_cast<const MemcheckEngine *>(engine); QTC_ASSERT(mEngine, return); const QString name = QFileInfo(mEngine->executable()).fileName(); - m_errorView->setDefaultSuppressionFile(dir + QDir::separator() + name + QLatin1String(".supp")); + m_errorView->setDefaultSuppressionFile(dir + name + QLatin1String(".supp")); QMenu *menu = filterMenu(); QTC_ASSERT(menu, return); @@ -462,14 +470,14 @@ QMenu *MemcheckTool::filterMenu() const { QTC_ASSERT(m_suppressionSeparator, return 0; ) foreach (QWidget *w, m_suppressionSeparator->associatedWidgets()) - if (QMenu *menu = qobject_cast<QMenu*>(w)) + if (QMenu *menu = qobject_cast<QMenu *>(w)) return menu; return 0; } void MemcheckTool::suppressionActionTriggered() { - QAction *action = qobject_cast<QAction*>(sender()); + QAction *action = qobject_cast<QAction *>(sender()); QTC_ASSERT(action, return); const QString file = action->data().toString(); QTC_ASSERT(!file.isEmpty(), return); @@ -531,5 +539,10 @@ void MemcheckTool::finished() AnalyzerManager::instance()->showStatusMessage(msg); } +bool MemcheckTool::canRunRemotely() const +{ + return true; +} + } // namespace Internal -} // namespace Analyzer +} // namespace Memcheck diff --git a/src/plugins/memcheck/memchecktool.h b/src/plugins/memcheck/memchecktool.h index 658c7bf822d..bc1dff5f16e 100644 --- a/src/plugins/memcheck/memchecktool.h +++ b/src/plugins/memcheck/memchecktool.h @@ -58,8 +58,12 @@ class Error; } } -namespace Analyzer { +namespace Analyzer +{ class AnalyzerSettings; +} + +namespace Memcheck { namespace Internal { class MemCheckOutputPaneAdapter; class MemcheckErrorView; @@ -82,7 +86,7 @@ private: bool m_filterExternalIssues; }; -class MemcheckTool : public IAnalyzerTool +class MemcheckTool : public Analyzer::IAnalyzerTool { Q_OBJECT public: @@ -93,29 +97,35 @@ public: ToolMode mode() const; void initialize(ExtensionSystem::IPlugin *plugin); + virtual void extensionsInitialized() {} - virtual IAnalyzerOutputPaneAdapter *outputPaneAdapter(); - IAnalyzerEngine *createEngine(ProjectExplorer::RunConfiguration *runConfiguration); + virtual Analyzer::IAnalyzerOutputPaneAdapter *outputPaneAdapter(); + virtual Analyzer::IAnalyzerEngine *createEngine(const Analyzer::AnalyzerStartParameters &sp, + ProjectExplorer::RunConfiguration *runConfiguration = 0); // For the output pane adapter. MemcheckErrorView *ensurePaneErrorView(); QWidget *createPaneToolBarWidget(); void clearErrorView(); + virtual bool canRunRemotely() const; + private slots: void settingsDestroyed(QObject *settings); void maybeActiveRunConfigurationChanged(); - void engineStarting(const IAnalyzerEngine *engine); + void engineStarting(const Analyzer::IAnalyzerEngine *engine); + void finished(); + void parserError(const Valgrind::XmlProtocol::Error &error); void internalParserError(const QString &errorString); void updateErrorFilter(); void suppressionActionTriggered(); - void finished(); - QMenu *filterMenu() const; private: - AnalyzerSettings *m_settings; + QMenu *filterMenu() const; + + Analyzer::AnalyzerSettings *m_settings; FrameFinder *m_frameFinder; Valgrind::XmlProtocol::ErrorListModel *m_errorModel; @@ -130,6 +140,6 @@ private: }; } // namespace Internal -} // namespace Analyzer +} // namespace Memcheck #endif // MEMCHECKTOOL_H diff --git a/src/plugins/memcheck/suppressiondialog.cpp b/src/plugins/memcheck/suppressiondialog.cpp index dcdae5b2f23..947655c559b 100644 --- a/src/plugins/memcheck/suppressiondialog.cpp +++ b/src/plugins/memcheck/suppressiondialog.cpp @@ -35,8 +35,8 @@ #include "suppressiondialog.h" - #include "ui_suppressiondialog.h" + #include "memcheckerrorview.h" #include "memchecksettings.h" @@ -57,9 +57,11 @@ #include <valgrind/xmlprotocol/frame.h> using namespace Analyzer; -using namespace Analyzer::Internal; +using namespace Memcheck; using namespace Valgrind::XmlProtocol; +using namespace Memcheck::Internal; + namespace { QString suppressionText(const Error &error) { diff --git a/src/plugins/memcheck/suppressiondialog.h b/src/plugins/memcheck/suppressiondialog.h index 72ed3aaa96d..dce64fcc33f 100644 --- a/src/plugins/memcheck/suppressiondialog.h +++ b/src/plugins/memcheck/suppressiondialog.h @@ -41,18 +41,18 @@ #include <valgrind/xmlprotocol/error.h> -QT_BEGIN_NAMESPACE -namespace Ui { -class SuppressionDialog; -} -QT_END_NAMESPACE - -namespace Analyzer { - +namespace Analyzer +{ class AnalyzerSettings; +} +namespace Memcheck { namespace Internal { +namespace Ui { +class SuppressionDialog; +} + class MemcheckErrorView; class SuppressionDialog : public QDialog @@ -73,7 +73,7 @@ private slots: private: MemcheckErrorView *m_view; Ui::SuppressionDialog *m_ui; - AnalyzerSettings *m_settings; + Analyzer::AnalyzerSettings *m_settings; bool m_cleanupIfCanceled; QList<Valgrind::XmlProtocol::Error> m_errors; }; diff --git a/src/plugins/memcheck/suppressiondialog.ui b/src/plugins/memcheck/suppressiondialog.ui index ad3e6df70c3..30302034a0e 100644 --- a/src/plugins/memcheck/suppressiondialog.ui +++ b/src/plugins/memcheck/suppressiondialog.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>SuppressionDialog</class> - <widget class="QDialog" name="SuppressionDialog"> + <class>Memcheck::Internal::SuppressionDialog</class> + <widget class="QDialog" name="Memcheck::Internal::SuppressionDialog"> <property name="geometry"> <rect> <x>0</x> @@ -74,7 +74,7 @@ <connection> <sender>buttonBox</sender> <signal>rejected()</signal> - <receiver>SuppressionDialog</receiver> + <receiver>Memcheck::Internal::SuppressionDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> @@ -90,7 +90,7 @@ <connection> <sender>buttonBox</sender> <signal>accepted()</signal> - <receiver>SuppressionDialog</receiver> + <receiver>Memcheck::Internal::SuppressionDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> |