diff options
author | hjk <hjk@qt.io> | 2017-07-04 13:24:38 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-07-18 07:52:21 +0000 |
commit | c5cc3e25947a1e215627142b9947f83bad948869 (patch) | |
tree | 963394f1d9f788982d2b00106250aac56a0ec611 | |
parent | ba7f7bcf0f8a89d0f1ca9cf8a619b9cb5f2c7918 (diff) | |
download | qt-creator-c5cc3e25947a1e215627142b9947f83bad948869.tar.gz |
ClangStaticAnalyzer: Don't get stuck if project is not buildable
Task-number: QTCREATORBUG-18495
Change-Id: I6621ceebd05be2fabcdcd3061e41e4674e5fbb26
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
3 files changed, 15 insertions, 8 deletions
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp index 33b7f4f807..98a0788ebc 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp @@ -81,6 +81,7 @@ ClangStaticAnalyzerToolRunner::ClangStaticAnalyzerToolRunner(RunControl *runCont auto tool = ClangStaticAnalyzerTool::instance(); tool->stopAction()->disconnect(); connect(tool->stopAction(), &QAction::triggered, runControl, &RunControl::initiateStop); + tool->handleWorkerStart(this); ProjectInfo projectInfoBeforeBuild = tool->projectInfoBeforeBuild(); QTC_ASSERT(projectInfoBeforeBuild.isValid(), return); diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp index c8f1f6c8ba..461f31049b 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp @@ -145,7 +145,6 @@ ClangStaticAnalyzerTool::ClangStaticAnalyzerTool() {{ClangStaticAnalyzerDockId, m_diagnosticView, {}, Perspective::SplitVertical}} )); - //Debugger::registerAction(Constants::CLANGSTATICANALYZER_RUN_MODE, {}); action = new QAction(tr("Clang Static Analyzer"), this); action->setToolTip(toolTip); menu->addAction(ActionManager::registerAction(action, "ClangStaticAnalyzer.Action"), @@ -211,14 +210,12 @@ static bool dontStartAfterHintForDebugMode(Project *project) return false; } -void ClangStaticAnalyzerTool::startTool() +void ClangStaticAnalyzerTool::handleWorkerStart(RunWorker *runWorker) { - Project *project = SessionManager::startupProject(); + RunControl *runControl = runWorker->runControl(); + Project *project = runControl->project(); QTC_ASSERT(project, emit finished(false); return); - if (dontStartAfterHintForDebugMode(project)) - return; - Debugger::selectPerspective(ClangStaticAnalyzerPerspectiveId); m_diagnosticModel->clear(); setBusyCursor(true); @@ -230,8 +227,13 @@ void ClangStaticAnalyzerTool::startTool() m_toolBusy = true; updateRunActions(); +} - Target * const target = project->activeTarget(); +void ClangStaticAnalyzerTool::startTool() +{ + Project *project = SessionManager::startupProject(); + QTC_ASSERT(project, return); + Target *target = project->activeTarget(); QTC_ASSERT(target, return); DummyRunConfiguration *& rc = m_runConfigs[target]; if (!rc) { @@ -245,6 +247,9 @@ void ClangStaticAnalyzerTool::startTool() connect(SessionManager::instance(), &SessionManager::aboutToRemoveProject, this, onProjectRemoved, Qt::UniqueConnection); } + if (dontStartAfterHintForDebugMode(project)) + return; + ProjectExplorerPlugin::runRunConfiguration(rc, Constants::CLANGSTATICANALYZER_RUN_MODE); } diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.h b/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.h index b3f05843d6..06550bce31 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.h +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.h @@ -58,9 +58,10 @@ public: // For testing. QList<Diagnostic> diagnostics() const; - void startTool(); + void handleWorkerStart(ProjectExplorer::RunWorker *runWorker); + void onEngineIsStarting(); void onNewDiagnosticsAvailable(const QList<Diagnostic> &diagnostics); void onEngineFinished(bool success); |