forked from qt-creator/qt-creator
ClangStaticAnalyzer: Revert to DummyRunConfiguration
This reverts part of a1dd1e4c5b
. We need
the dummy run configuration in order to be able to analyze C++ library
projects.
Change-Id: I927ba1a8944a1d9b437fb46e913ea235edcd3156
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
@@ -60,6 +60,22 @@ using namespace Utils;
|
|||||||
namespace ClangStaticAnalyzer {
|
namespace ClangStaticAnalyzer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
class DummyRunConfiguration : public RunConfiguration
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
DummyRunConfiguration(Target *parent)
|
||||||
|
: RunConfiguration(parent, "ClangStaticAnalyzer.DummyRunConfig")
|
||||||
|
{
|
||||||
|
setDefaultDisplayName(tr("Clang Static Analyzer"));
|
||||||
|
addExtraAspects();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWidget *createConfigurationWidget() override { return 0; }
|
||||||
|
};
|
||||||
|
|
||||||
ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
|
ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, m_diagnosticModel(0)
|
, m_diagnosticModel(0)
|
||||||
@@ -137,7 +153,8 @@ ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
|
|||||||
return createRunControl(runConfiguration, runMode);
|
return createRunControl(runConfiguration, runMode);
|
||||||
});
|
});
|
||||||
desc.setCustomToolStarter([this](RunConfiguration *runConfiguration) {
|
desc.setCustomToolStarter([this](RunConfiguration *runConfiguration) {
|
||||||
startTool(runConfiguration);
|
Q_UNUSED(runConfiguration);
|
||||||
|
startTool();
|
||||||
});
|
});
|
||||||
desc.setMenuGroup(Debugger::Constants::G_ANALYZER_TOOLS);
|
desc.setMenuGroup(Debugger::Constants::G_ANALYZER_TOOLS);
|
||||||
Debugger::registerAction(ClangStaticAnalyzerActionId, desc, m_startAction);
|
Debugger::registerAction(ClangStaticAnalyzerActionId, desc, m_startAction);
|
||||||
@@ -220,7 +237,7 @@ static bool dontStartAfterHintForDebugMode(Project *project)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangStaticAnalyzerTool::startTool(ProjectExplorer::RunConfiguration *runConfiguration)
|
void ClangStaticAnalyzerTool::startTool()
|
||||||
{
|
{
|
||||||
Project *project = SessionManager::startupProject();
|
Project *project = SessionManager::startupProject();
|
||||||
QTC_ASSERT(project, emit finished(false); return);
|
QTC_ASSERT(project, emit finished(false); return);
|
||||||
@@ -236,8 +253,21 @@ void ClangStaticAnalyzerTool::startTool(ProjectExplorer::RunConfiguration *runCo
|
|||||||
m_running = true;
|
m_running = true;
|
||||||
handleStateUpdate();
|
handleStateUpdate();
|
||||||
|
|
||||||
ProjectExplorerPlugin::runRunConfiguration(runConfiguration,
|
Target * const target = project->activeTarget();
|
||||||
Constants::CLANGSTATICANALYZER_RUN_MODE);
|
QTC_ASSERT(target, return);
|
||||||
|
DummyRunConfiguration *& rc = m_runConfigs[target];
|
||||||
|
if (!rc) {
|
||||||
|
rc = new DummyRunConfiguration(target);
|
||||||
|
connect(project, &Project::aboutToRemoveTarget, this,
|
||||||
|
[this](Target *t) { m_runConfigs.remove(t); });
|
||||||
|
const auto onProjectRemoved = [this](Project *p) {
|
||||||
|
foreach (Target * const t, p->targets())
|
||||||
|
m_runConfigs.remove(t);
|
||||||
|
};
|
||||||
|
connect(SessionManager::instance(), &SessionManager::aboutToRemoveProject, this,
|
||||||
|
onProjectRemoved, Qt::UniqueConnection);
|
||||||
|
}
|
||||||
|
ProjectExplorerPlugin::runRunConfiguration(rc, Constants::CLANGSTATICANALYZER_RUN_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfoBeforeBuild() const
|
CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfoBeforeBuild() const
|
||||||
@@ -325,3 +355,5 @@ void ClangStaticAnalyzerTool::handleStateUpdate()
|
|||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace ClangStaticAnalyzer
|
} // namespace ClangStaticAnalyzer
|
||||||
|
|
||||||
|
#include "clangstaticanalyzertool.moc"
|
||||||
|
@@ -38,6 +38,7 @@ class ClangStaticAnalyzerDiagnosticFilterModel;
|
|||||||
class ClangStaticAnalyzerDiagnosticModel;
|
class ClangStaticAnalyzerDiagnosticModel;
|
||||||
class ClangStaticAnalyzerDiagnosticView;
|
class ClangStaticAnalyzerDiagnosticView;
|
||||||
class Diagnostic;
|
class Diagnostic;
|
||||||
|
class DummyRunConfiguration;
|
||||||
|
|
||||||
const char ClangStaticAnalyzerPerspectiveId[] = "ClangStaticAnalyzer.Perspective";
|
const char ClangStaticAnalyzerPerspectiveId[] = "ClangStaticAnalyzer.Perspective";
|
||||||
const char ClangStaticAnalyzerActionId[] = "ClangStaticAnalyzer.Action";
|
const char ClangStaticAnalyzerActionId[] = "ClangStaticAnalyzer.Action";
|
||||||
@@ -58,7 +59,7 @@ public:
|
|||||||
|
|
||||||
Debugger::AnalyzerRunControl *createRunControl(ProjectExplorer::RunConfiguration *runConfiguration,
|
Debugger::AnalyzerRunControl *createRunControl(ProjectExplorer::RunConfiguration *runConfiguration,
|
||||||
Core::Id runMode);
|
Core::Id runMode);
|
||||||
void startTool(ProjectExplorer::RunConfiguration *rc);
|
void startTool();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void finished(bool success); // For testing.
|
void finished(bool success); // For testing.
|
||||||
@@ -83,6 +84,7 @@ private:
|
|||||||
QAction *m_stopAction = 0;
|
QAction *m_stopAction = 0;
|
||||||
QAction *m_goBack;
|
QAction *m_goBack;
|
||||||
QAction *m_goNext;
|
QAction *m_goNext;
|
||||||
|
QHash<ProjectExplorer::Target *, DummyRunConfiguration *> m_runConfigs;
|
||||||
bool m_running;
|
bool m_running;
|
||||||
bool m_toolBusy = false;
|
bool m_toolBusy = false;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user