From d8d5bff0711d0f76092d0f0520e00fc44227dd2f Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 9 Jul 2015 15:28:09 +0200 Subject: Handle zero files to process The analyzer was stuck in the running mode (busy cursor, progress bar) for zero files. Change-Id: I9e520dc65b6d027b82e6e31043c0401ebb9f3673 Reviewed-by: Christian Kandeler --- .../clangstaticanalyzerruncontrol.cpp | 39 ++++++++++++++-------- .../clangstaticanalyzerruncontrol.h | 2 ++ 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp index 2fa5542960..9ca6a1dfa1 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp @@ -349,6 +349,11 @@ bool ClangStaticAnalyzerRunControl::startEngine() const int parallelRuns = ClangStaticAnalyzerSettings::instance()->simultaneousProcesses(); QTC_ASSERT(parallelRuns >= 1, emit finished(); return false); m_success = true; + + if (m_unitsToProcess.isEmpty()) { + finalize(); + return false; + } while (m_runners.size() < parallelRuns && !m_unitsToProcess.isEmpty()) analyzeNextFile(); return true; @@ -376,20 +381,8 @@ void ClangStaticAnalyzerRunControl::analyzeNextFile() return; // The previous call already reported that we are finished. if (m_unitsToProcess.isEmpty()) { - if (m_runners.size() == 0) { - appendMessage(tr("Clang Static Analyzer finished: " - "Processed %1 files successfully, %2 failed.") - .arg(m_filesAnalyzed) - .arg(m_filesNotAnalyzed) - + QLatin1Char('\n'), - Utils::NormalMessageFormat); - if (m_filesAnalyzed == 0 && m_filesNotAnalyzed != 0) { - AnalyzerUtils::logToIssuesPane(Task::Error, - tr("Clang Static Analyzer: Failed to analyze any files.")); - } - m_progress.reportFinished(); - emit finished(); - } + if (m_runners.isEmpty()) + finalize(); return; } @@ -480,5 +473,23 @@ void ClangStaticAnalyzerRunControl::updateProgressValue() m_progress.setProgressValue(m_initialFilesToProcessSize - m_unitsToProcess.size()); } +void ClangStaticAnalyzerRunControl::finalize() +{ + appendMessage(tr("Clang Static Analyzer finished: " + "Processed %1 files successfully, %2 failed.") + .arg(m_filesAnalyzed) + .arg(m_filesNotAnalyzed) + + QLatin1Char('\n'), + Utils::NormalMessageFormat); + + if (m_filesAnalyzed == 0 && m_filesNotAnalyzed != 0) { + AnalyzerUtils::logToIssuesPane(Task::Error, + tr("Clang Static Analyzer: Failed to analyze any files.")); + } + + m_progress.reportFinished(); + emit finished(); +} + } // namespace Internal } // namespace ClangStaticAnalyzer diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h index f9419e21c3..0bffb4d788 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h @@ -69,6 +69,8 @@ private: void onProgressCanceled(); void updateProgressValue(); + void finalize(); + private: const CppTools::ProjectInfo m_projectInfo; const unsigned char m_wordWidth; -- cgit v1.2.3