diff options
-rw-r--r-- | plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp | 39 | ||||
-rw-r--r-- | plugins/clangstaticanalyzer/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; |