diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
index 80338bdd7767138bda2ef7432cad25ebba350b84..1ec5e6d26485d863971a95e595186c63ff53eeb8 100644
--- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
+++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
@@ -197,16 +197,24 @@ static AnalyzeUnits unitsToAnalyzeFromProjectParts(const QList<ProjectPart::Ptr>
     return unitsToAnalyze;
 }
 
-AnalyzeUnits ClangStaticAnalyzerRunControl::unitsToAnalyze()
+AnalyzeUnits ClangStaticAnalyzerRunControl::sortedUnitsToAnalyze()
 {
     QTC_ASSERT(m_projectInfo.isValid(), return AnalyzeUnits());
 
+    AnalyzeUnits units;
     const ProjectInfo::CompilerCallData compilerCallData = m_projectInfo.compilerCallData();
-    if (!compilerCallData.isEmpty())
-        return unitsToAnalyzeFromCompilerCallData(compilerCallData, m_wordWidth);
-    return unitsToAnalyzeFromProjectParts(m_projectInfo.projectParts(),
-                                          m_toolchainType,
-                                          m_wordWidth);
+    if (compilerCallData.isEmpty()) {
+        units = unitsToAnalyzeFromProjectParts(m_projectInfo.projectParts(),
+                                               m_toolchainType,
+                                               m_wordWidth);
+    } else {
+        units = unitsToAnalyzeFromCompilerCallData(compilerCallData, m_wordWidth);
+    }
+
+    Utils::sort(units, [](const AnalyzeUnit &a1, const AnalyzeUnit &a2) -> bool {
+        return a1.file < a2.file;
+    });
+    return units;
 }
 
 static QDebug operator<<(QDebug debug, const Utils::Environment &environment)
@@ -216,6 +224,13 @@ static QDebug operator<<(QDebug debug, const Utils::Environment &environment)
     return debug;
 }
 
+static QDebug operator<<(QDebug debug, const AnalyzeUnits &analyzeUnits)
+{
+    foreach (const AnalyzeUnit &unit, analyzeUnits)
+        debug << "\n  " << unit.file;
+    return debug;
+}
+
 bool ClangStaticAnalyzerRunControl::startEngine()
 {
     emit starting(this);
@@ -253,14 +268,8 @@ bool ClangStaticAnalyzerRunControl::startEngine()
     m_clangLogFileDir = temporaryDir.path();
 
     // Collect files
-    AnalyzeUnits unitsToProcess = unitsToAnalyze();
-    Utils::sort(unitsToProcess, [](const AnalyzeUnit &a1, const AnalyzeUnit &a2) -> bool {
-        return a1.file < a2.file;
-    });
-
-    qCDebug(LOG) << "Files to process:";
-    foreach (const AnalyzeUnit &fileConfig, unitsToProcess)
-        qCDebug(LOG) << fileConfig.file;
+    const AnalyzeUnits unitsToProcess = sortedUnitsToAnalyze();
+    qCDebug(LOG) << "Files to process:" << unitsToProcess;
     m_unitsToProcess = unitsToProcess;
     m_initialFilesToProcessSize = m_unitsToProcess.count();
     m_filesAnalyzed = 0;
diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h
index 167539b2a90c4d0f73c1f4c324901ab752241954..783713535df5457660c6e60f11d8ef13448b489e 100644
--- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h
+++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h
@@ -56,7 +56,7 @@ signals:
     void newDiagnosticsAvailable(const QList<Diagnostic> &diagnostics);
 
 private:
-    AnalyzeUnits unitsToAnalyze();
+    AnalyzeUnits sortedUnitsToAnalyze();
     void analyzeNextFile();
     ClangStaticAnalyzerRunner *createRunner();