diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-05-19 15:34:36 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-05-20 16:32:28 +0200 |
commit | dc8eb4dc803848ae83b227095a68344211191407 (patch) | |
tree | 993663b41549bdedf9f9b503b7db121a9c6f47ff | |
parent | b3a734f802df6d969b7a3b5f1740444f758bf020 (diff) |
move scanner determination to separate function
Preparation for fixing QBS-566.
Change-Id: I2acdb648dc9fe247458aff76caa716c79058fa84
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r-- | src/lib/corelib/buildgraph/inputartifactscanner.cpp | 57 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/inputartifactscanner.h | 1 |
2 files changed, 32 insertions, 26 deletions
diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp index 173c0c013..f3b57e438 100644 --- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp +++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp @@ -190,9 +190,7 @@ void InputArtifactScanner::scanForFileDependencies(Artifact *inputArtifact) QSet<QString> visitedFilePaths; QList<Artifact*> artifactsToScan; artifactsToScan.append(inputArtifact); - QSet<DependencyScanner*> scanners; - TopLevelProject *project = inputArtifact->product->topLevelProject(); - ScriptEngine* engine = project->buildData->evaluationContext->engine(); + const QSet<DependencyScanner *> scanners = scannersForArtifact(inputArtifact); while (!artifactsToScan.isEmpty()) { Artifact* artifactToBeScanned = artifactsToScan.takeFirst(); const QString &filePathToBeScanned = artifactToBeScanned->filePath(); @@ -200,29 +198,6 @@ void InputArtifactScanner::scanForFileDependencies(Artifact *inputArtifact) continue; visitedFilePaths.insert(filePathToBeScanned); - scanners.clear(); - ResolvedProduct* product = artifactToBeScanned->product.data(); - QHash<FileTag, InputArtifactScannerContext::DependencyScannerCacheItem> &scannerCache = m_context->scannersCache[product]; - foreach (const FileTag &fileTag, artifactToBeScanned->fileTags) { - InputArtifactScannerContext::DependencyScannerCacheItem &cache = scannerCache[fileTag]; - if (!cache.valid) { - cache.valid = true; - foreach (ScannerPlugin *scanner, ScannerPluginManager::scannersForFileTag(fileTag)) { - PluginDependencyScanner *pluginScanner = new PluginDependencyScanner(scanner); - cache.scanners += DependencyScannerPtr(pluginScanner); - } - foreach (const ResolvedScannerConstPtr &scanner, product->scanners) { - if (scanner->inputs.contains(fileTag)) { - UserDependencyScanner *userScanner = new UserDependencyScanner(scanner, m_logger, engine); - cache.scanners += DependencyScannerPtr(userScanner); - break; - } - } - } - foreach (const DependencyScannerPtr &scanner, cache.scanners) { - scanners += scanner.data(); - } - } foreach (DependencyScanner *scanner, scanners) { scanForScannerFileDependencies(scanner, inputArtifact, artifactToBeScanned, scanner->recursive() ? &artifactsToScan : 0, cacheItem[scanner->key()]); @@ -230,6 +205,36 @@ void InputArtifactScanner::scanForFileDependencies(Artifact *inputArtifact) } } +QSet<DependencyScanner *> InputArtifactScanner::scannersForArtifact(const Artifact *artifact) const +{ + QSet<DependencyScanner *> scanners; + ResolvedProduct *product = artifact->product.data(); + ScriptEngine *engine = product->topLevelProject()->buildData->evaluationContext->engine(); + QHash<FileTag, InputArtifactScannerContext::DependencyScannerCacheItem> &scannerCache + = m_context->scannersCache[product]; + foreach (const FileTag &fileTag, artifact->fileTags) { + InputArtifactScannerContext::DependencyScannerCacheItem &cache = scannerCache[fileTag]; + if (!cache.valid) { + cache.valid = true; + foreach (ScannerPlugin *scanner, ScannerPluginManager::scannersForFileTag(fileTag)) { + PluginDependencyScanner *pluginScanner = new PluginDependencyScanner(scanner); + cache.scanners += DependencyScannerPtr(pluginScanner); + } + foreach (const ResolvedScannerConstPtr &scanner, product->scanners) { + if (scanner->inputs.contains(fileTag)) { + cache.scanners += DependencyScannerPtr( + new UserDependencyScanner(scanner, m_logger, engine)); + break; + } + } + } + foreach (const DependencyScannerPtr &scanner, cache.scanners) { + scanners += scanner.data(); + } + } + return scanners; +} + void InputArtifactScanner::scanForScannerFileDependencies(DependencyScanner *scanner, Artifact *inputArtifact, Artifact* artifactToBeScanned, QList<Artifact *> *artifactsToScan, InputArtifactScannerContext::ScannerResolvedDependenciesCache &cache) diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.h b/src/lib/corelib/buildgraph/inputartifactscanner.h index 7f1f81c7d..a1c8a8a18 100644 --- a/src/lib/corelib/buildgraph/inputartifactscanner.h +++ b/src/lib/corelib/buildgraph/inputartifactscanner.h @@ -121,6 +121,7 @@ public: private: void scanForFileDependencies(Artifact *inputArtifact); + QSet<DependencyScanner *> scannersForArtifact(const Artifact *artifact) const; void scanForScannerFileDependencies(DependencyScanner *scanner, Artifact *inputArtifact, Artifact* artifactToBeScanned, QList<Artifact*> *artifactsToScan, |