summaryrefslogtreecommitdiff
path: root/src/plugins/clangstaticanalyzer
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-07-04 13:24:38 +0200
committerhjk <hjk@qt.io>2017-07-18 07:52:21 +0000
commitc5cc3e25947a1e215627142b9947f83bad948869 (patch)
tree963394f1d9f788982d2b00106250aac56a0ec611 /src/plugins/clangstaticanalyzer
parentba7f7bcf0f8a89d0f1ca9cf8a619b9cb5f2c7918 (diff)
downloadqt-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>
Diffstat (limited to 'src/plugins/clangstaticanalyzer')
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp1
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp19
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzertool.h3
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);