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 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)
|
||||
: QObject(parent)
|
||||
, m_diagnosticModel(0)
|
||||
@@ -137,7 +153,8 @@ ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
|
||||
return createRunControl(runConfiguration, runMode);
|
||||
});
|
||||
desc.setCustomToolStarter([this](RunConfiguration *runConfiguration) {
|
||||
startTool(runConfiguration);
|
||||
Q_UNUSED(runConfiguration);
|
||||
startTool();
|
||||
});
|
||||
desc.setMenuGroup(Debugger::Constants::G_ANALYZER_TOOLS);
|
||||
Debugger::registerAction(ClangStaticAnalyzerActionId, desc, m_startAction);
|
||||
@@ -220,7 +237,7 @@ static bool dontStartAfterHintForDebugMode(Project *project)
|
||||
return false;
|
||||
}
|
||||
|
||||
void ClangStaticAnalyzerTool::startTool(ProjectExplorer::RunConfiguration *runConfiguration)
|
||||
void ClangStaticAnalyzerTool::startTool()
|
||||
{
|
||||
Project *project = SessionManager::startupProject();
|
||||
QTC_ASSERT(project, emit finished(false); return);
|
||||
@@ -236,8 +253,21 @@ void ClangStaticAnalyzerTool::startTool(ProjectExplorer::RunConfiguration *runCo
|
||||
m_running = true;
|
||||
handleStateUpdate();
|
||||
|
||||
ProjectExplorerPlugin::runRunConfiguration(runConfiguration,
|
||||
Constants::CLANGSTATICANALYZER_RUN_MODE);
|
||||
Target * const target = project->activeTarget();
|
||||
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
|
||||
@@ -325,3 +355,5 @@ void ClangStaticAnalyzerTool::handleStateUpdate()
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClangStaticAnalyzer
|
||||
|
||||
#include "clangstaticanalyzertool.moc"
|
||||
|
@@ -38,6 +38,7 @@ class ClangStaticAnalyzerDiagnosticFilterModel;
|
||||
class ClangStaticAnalyzerDiagnosticModel;
|
||||
class ClangStaticAnalyzerDiagnosticView;
|
||||
class Diagnostic;
|
||||
class DummyRunConfiguration;
|
||||
|
||||
const char ClangStaticAnalyzerPerspectiveId[] = "ClangStaticAnalyzer.Perspective";
|
||||
const char ClangStaticAnalyzerActionId[] = "ClangStaticAnalyzer.Action";
|
||||
@@ -58,7 +59,7 @@ public:
|
||||
|
||||
Debugger::AnalyzerRunControl *createRunControl(ProjectExplorer::RunConfiguration *runConfiguration,
|
||||
Core::Id runMode);
|
||||
void startTool(ProjectExplorer::RunConfiguration *rc);
|
||||
void startTool();
|
||||
|
||||
signals:
|
||||
void finished(bool success); // For testing.
|
||||
@@ -83,6 +84,7 @@ private:
|
||||
QAction *m_stopAction = 0;
|
||||
QAction *m_goBack;
|
||||
QAction *m_goNext;
|
||||
QHash<ProjectExplorer::Target *, DummyRunConfiguration *> m_runConfigs;
|
||||
bool m_running;
|
||||
bool m_toolBusy = false;
|
||||
};
|
||||
|
Reference in New Issue
Block a user