diff options
Diffstat (limited to 'src/lib/corelib/buildgraph')
41 files changed, 170 insertions, 160 deletions
diff --git a/src/lib/corelib/buildgraph/abstractcommandexecutor.cpp b/src/lib/corelib/buildgraph/abstractcommandexecutor.cpp index 4626c6a1a..1a1d51f11 100644 --- a/src/lib/corelib/buildgraph/abstractcommandexecutor.cpp +++ b/src/lib/corelib/buildgraph/abstractcommandexecutor.cpp @@ -49,14 +49,14 @@ namespace qbs { namespace Internal { -AbstractCommandExecutor::AbstractCommandExecutor(const Logger &logger, QObject *parent) +AbstractCommandExecutor::AbstractCommandExecutor(Logger logger, QObject *parent) : QObject(parent) , m_echoMode(defaultCommandEchoMode()) , m_command(nullptr) , m_transformer(nullptr) , m_mainThreadScriptEngine(nullptr) , m_dryRun(false) - , m_logger(logger) + , m_logger(std::move(logger)) { } diff --git a/src/lib/corelib/buildgraph/abstractcommandexecutor.h b/src/lib/corelib/buildgraph/abstractcommandexecutor.h index f140b5d82..60b2b40b2 100644 --- a/src/lib/corelib/buildgraph/abstractcommandexecutor.h +++ b/src/lib/corelib/buildgraph/abstractcommandexecutor.h @@ -58,7 +58,7 @@ class AbstractCommandExecutor : public QObject { Q_OBJECT public: - explicit AbstractCommandExecutor(const Internal::Logger &logger, QObject *parent = nullptr); + explicit AbstractCommandExecutor(Internal::Logger logger, QObject *parent = nullptr); void setMainThreadScriptEngine(ScriptEngine *engine) { m_mainThreadScriptEngine = engine; } void setDryRunEnabled(bool enabled) { m_dryRun = enabled; } diff --git a/src/lib/corelib/buildgraph/artifact.h b/src/lib/corelib/buildgraph/artifact.h index 32527caf3..ee3acea59 100644 --- a/src/lib/corelib/buildgraph/artifact.h +++ b/src/lib/corelib/buildgraph/artifact.h @@ -72,7 +72,7 @@ class QBS_AUTOTEST_EXPORT Artifact : public FileResourceBase, public BuildGraphN { public: Artifact(); - ~Artifact(); + ~Artifact() override; Type type() const override { return ArtifactNodeType; } FileType fileType() const override { return FileTypeArtifact; } diff --git a/src/lib/corelib/buildgraph/artifactcleaner.cpp b/src/lib/corelib/buildgraph/artifactcleaner.cpp index 232591e10..000dfda02 100644 --- a/src/lib/corelib/buildgraph/artifactcleaner.cpp +++ b/src/lib/corelib/buildgraph/artifactcleaner.cpp @@ -1,3 +1,5 @@ +#include <utility> + /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. @@ -98,12 +100,12 @@ static void removeArtifactFromDisk(Artifact *artifact, bool dryRun, const Logger class CleanupVisitor : public ArtifactVisitor { public: - CleanupVisitor(const CleanOptions &options, const ProgressObserver *observer, - const Logger &logger) + CleanupVisitor(CleanOptions options, const ProgressObserver *observer, + Logger logger) : ArtifactVisitor(Artifact::Generated) - , m_options(options) + , m_options(std::move(options)) , m_observer(observer) - , m_logger(logger) + , m_logger(std::move(logger)) , m_hasError(false) { } @@ -154,8 +156,8 @@ private: Set<QString> m_directories; }; -ArtifactCleaner::ArtifactCleaner(const Logger &logger, ProgressObserver *observer) - : m_logger(logger), m_observer(observer) +ArtifactCleaner::ArtifactCleaner(Logger logger, ProgressObserver *observer) + : m_logger(std::move(logger)), m_observer(observer) { } diff --git a/src/lib/corelib/buildgraph/artifactcleaner.h b/src/lib/corelib/buildgraph/artifactcleaner.h index 4d8c86ea8..5112a75d6 100644 --- a/src/lib/corelib/buildgraph/artifactcleaner.h +++ b/src/lib/corelib/buildgraph/artifactcleaner.h @@ -53,7 +53,7 @@ class ProgressObserver; class ArtifactCleaner { public: - ArtifactCleaner(const Logger &logger, ProgressObserver *observer); + ArtifactCleaner(Logger logger, ProgressObserver *observer); void cleanup(const TopLevelProjectPtr &project, const QList<ResolvedProductPtr> &products, const CleanOptions &options); @@ -62,8 +62,8 @@ private: bool *isEmpty = nullptr); Logger m_logger; - bool m_hasError; - ProgressObserver *m_observer; + bool m_hasError = false; + ProgressObserver *m_observer = nullptr; }; } // namespace Internal diff --git a/src/lib/corelib/buildgraph/buildgraph.cpp b/src/lib/corelib/buildgraph/buildgraph.cpp index 616658a18..283e8dc2a 100644 --- a/src/lib/corelib/buildgraph/buildgraph.cpp +++ b/src/lib/corelib/buildgraph/buildgraph.cpp @@ -572,13 +572,10 @@ Artifact *lookupArtifact(const ResolvedProductConstPtr &product, const ProjectBuildData *projectBuildData, const QString &dirPath, const QString &fileName, bool compareByName) { - const QList<FileResourceBase *> lookupResults - = projectBuildData->lookupFiles(dirPath, fileName); - for (QList<FileResourceBase *>::const_iterator it = lookupResults.constBegin(); - it != lookupResults.constEnd(); ++it) { - if ((*it)->fileType() != FileResourceBase::FileTypeArtifact) + for (const auto &fileResource : projectBuildData->lookupFiles(dirPath, fileName)) { + if (fileResource->fileType() != FileResourceBase::FileTypeArtifact) continue; - auto artifact = static_cast<Artifact *>(*it); + const auto artifact = static_cast<Artifact *>(fileResource); if (compareByName ? artifact->product->uniqueName() == product->uniqueName() : artifact->product == product) { diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index fc0492ef3..bf6c30dcd 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -76,8 +76,8 @@ namespace qbs { namespace Internal { -BuildGraphLoader::BuildGraphLoader(const Logger &logger) : - m_logger(logger) +BuildGraphLoader::BuildGraphLoader(Logger logger) : + m_logger(std::move(logger)) { } @@ -438,11 +438,10 @@ void BuildGraphLoader::trackProjectChanges() allNewlyResolvedProducts); } - for (auto it = m_changedSourcesByProduct.cbegin(); it != m_changedSourcesByProduct.cend(); - ++it) { - const ResolvedProductPtr product = m_freshProductsByName.value(it->first); + for (const auto &kv : m_changedSourcesByProduct) { + const ResolvedProductPtr product = m_freshProductsByName.value(kv.first); QBS_CHECK(!!product); - for (const SourceArtifactConstPtr &sa : it->second) + for (const SourceArtifactConstPtr &sa : kv.second) updateArtifactFromSourceArtifact(product, sa); } diff --git a/src/lib/corelib/buildgraph/buildgraphloader.h b/src/lib/corelib/buildgraph/buildgraphloader.h index 94eb01c5d..9363b8358 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.h +++ b/src/lib/corelib/buildgraph/buildgraphloader.h @@ -72,7 +72,7 @@ public: class BuildGraphLoader { public: - BuildGraphLoader(const Logger &logger); + BuildGraphLoader(Logger logger); ~BuildGraphLoader(); BuildGraphLoadResult load(const TopLevelProjectPtr &existingProject, @@ -141,8 +141,8 @@ private: QStringList m_artifactsRemovedFromDisk; std::unordered_map<QString, std::vector<SourceArtifactConstPtr>> m_changedSourcesByProduct; Set<QString> m_productsWhoseArtifactsNeedUpdate; - qint64 m_wildcardExpansionEffort; - qint64 m_propertyComparisonEffort; + qint64 m_wildcardExpansionEffort = 0; + qint64 m_propertyComparisonEffort = 0; // These must only be deleted at the end so we can still peek into the old look-up table. QList<FileResourceBase *> m_objectsToDelete; diff --git a/src/lib/corelib/buildgraph/buildgraphvisitor.h b/src/lib/corelib/buildgraph/buildgraphvisitor.h index 216e16a8c..cc2dde792 100644 --- a/src/lib/corelib/buildgraph/buildgraphvisitor.h +++ b/src/lib/corelib/buildgraph/buildgraphvisitor.h @@ -55,6 +55,7 @@ class RuleNode; class BuildGraphVisitor { public: + virtual ~BuildGraphVisitor() = default; virtual bool visit(Artifact *) { return true; } virtual void endVisit(Artifact *) { } virtual bool visit(RuleNode *) { return true; } diff --git a/src/lib/corelib/buildgraph/cycledetector.cpp b/src/lib/corelib/buildgraph/cycledetector.cpp index 95afba87d..5daed55fd 100644 --- a/src/lib/corelib/buildgraph/cycledetector.cpp +++ b/src/lib/corelib/buildgraph/cycledetector.cpp @@ -51,8 +51,8 @@ namespace qbs { namespace Internal { -CycleDetector::CycleDetector(const Logger &logger) - : m_parent(nullptr), m_logger(logger) +CycleDetector::CycleDetector(Logger logger) + : m_parent(nullptr), m_logger(std::move(logger)) { } @@ -80,7 +80,8 @@ bool CycleDetector::visitNode(BuildGraphNode *node) { if (Q_UNLIKELY(m_nodesInCurrentPath.contains(node))) { ErrorInfo error(Tr::tr("Cycle in build graph detected.")); - for (const BuildGraphNode * const n : cycle(node)) + const auto nodes = cycle(node); + for (const BuildGraphNode * const n : nodes) error.append(n->toString()); throw error; } diff --git a/src/lib/corelib/buildgraph/cycledetector.h b/src/lib/corelib/buildgraph/cycledetector.h index fffe6ed2f..5bfb44ef8 100644 --- a/src/lib/corelib/buildgraph/cycledetector.h +++ b/src/lib/corelib/buildgraph/cycledetector.h @@ -52,7 +52,7 @@ class BuildGraphNode; class QBS_AUTOTEST_EXPORT CycleDetector : private BuildGraphVisitor { public: - CycleDetector(const Logger &logger); + CycleDetector(Logger logger); void visitProject(const TopLevelProjectConstPtr &project); void visitProduct(const ResolvedProductConstPtr &product); diff --git a/src/lib/corelib/buildgraph/depscanner.cpp b/src/lib/corelib/buildgraph/depscanner.cpp index a2a39e4b2..0bf644286 100644 --- a/src/lib/corelib/buildgraph/depscanner.cpp +++ b/src/lib/corelib/buildgraph/depscanner.cpp @@ -154,9 +154,9 @@ bool PluginDependencyScanner::areModulePropertiesCompatible(const PropertyMapCon return true; } -UserDependencyScanner::UserDependencyScanner(const ResolvedScannerConstPtr &scanner, +UserDependencyScanner::UserDependencyScanner(ResolvedScannerConstPtr scanner, ScriptEngine *engine) - : m_scanner(scanner), + : m_scanner(std::move(scanner)), m_engine(engine), m_product(nullptr) { diff --git a/src/lib/corelib/buildgraph/depscanner.h b/src/lib/corelib/buildgraph/depscanner.h index b8f8721aa..ffc0b83de 100644 --- a/src/lib/corelib/buildgraph/depscanner.h +++ b/src/lib/corelib/buildgraph/depscanner.h @@ -102,7 +102,7 @@ private: class UserDependencyScanner : public DependencyScanner { public: - UserDependencyScanner(const ResolvedScannerConstPtr &scanner, ScriptEngine *engine); + UserDependencyScanner(ResolvedScannerConstPtr scanner, ScriptEngine *engine); private: QStringList collectSearchPaths(Artifact *artifact) override; diff --git a/src/lib/corelib/buildgraph/emptydirectoriesremover.cpp b/src/lib/corelib/buildgraph/emptydirectoriesremover.cpp index b3cc6c840..ebbcf67a7 100644 --- a/src/lib/corelib/buildgraph/emptydirectoriesremover.cpp +++ b/src/lib/corelib/buildgraph/emptydirectoriesremover.cpp @@ -49,8 +49,8 @@ namespace qbs { namespace Internal { EmptyDirectoriesRemover::EmptyDirectoriesRemover(const TopLevelProject *project, - const Logger &logger) - : m_project(project), m_logger(logger) + Logger logger) + : m_project(project), m_logger(std::move(logger)) { } diff --git a/src/lib/corelib/buildgraph/emptydirectoriesremover.h b/src/lib/corelib/buildgraph/emptydirectoriesremover.h index 6ec42c627..7d73fb819 100644 --- a/src/lib/corelib/buildgraph/emptydirectoriesremover.h +++ b/src/lib/corelib/buildgraph/emptydirectoriesremover.h @@ -53,7 +53,7 @@ class TopLevelProject; class EmptyDirectoriesRemover { public: - EmptyDirectoriesRemover(const TopLevelProject *project, const Logger &logger); + EmptyDirectoriesRemover(const TopLevelProject *project, Logger logger); void removeEmptyParentDirectories(const QStringList &artifactFilePaths); void removeEmptyParentDirectories(const ArtifactSet &artifacts); diff --git a/src/lib/corelib/buildgraph/environmentscriptrunner.h b/src/lib/corelib/buildgraph/environmentscriptrunner.h index 344a764d0..221314798 100644 --- a/src/lib/corelib/buildgraph/environmentscriptrunner.h +++ b/src/lib/corelib/buildgraph/environmentscriptrunner.h @@ -69,7 +69,7 @@ private: const QProcessEnvironment m_env; QStringList m_runEnvConfig; - enum EnvType { BuildEnv, RunEnv } m_envType; + enum EnvType { BuildEnv, RunEnv } m_envType = EnvType::BuildEnv; }; } // namespace Internal diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp index 8f71e1ea3..de81ada20 100644 --- a/src/lib/corelib/buildgraph/executor.cpp +++ b/src/lib/corelib/buildgraph/executor.cpp @@ -86,10 +86,10 @@ bool Executor::ComparePriority::operator() (const BuildGraphNode *x, const Build } -Executor::Executor(const Logger &logger, QObject *parent) +Executor::Executor(Logger logger, QObject *parent) : QObject(parent) , m_productInstaller(nullptr) - , m_logger(logger) + , m_logger(std::move(logger)) , m_progressObserver(nullptr) , m_state(ExecutorIdle) , m_cancelationTimer(new QTimer(this)) @@ -105,7 +105,8 @@ Executor::~Executor() // jobs must be destroyed before deleting the shared scan result cache for (ExecutorJob *job : qAsConst(m_availableJobs)) delete job; - for (ExecutorJob *job : m_processingJobs.keys()) + const auto processingJobs = m_processingJobs.keys(); + for (ExecutorJob *job : processingJobs) delete job; delete m_inputArtifactScanContext; delete m_productInstaller; @@ -180,7 +181,7 @@ void Executor::setProducts(const std::vector<ResolvedProductPtr> &productsToBuil class ProductPrioritySetter { const std::vector<ResolvedProductPtr> &m_allProducts; - unsigned int m_priority; + unsigned int m_priority = 0; Set<ResolvedProductPtr> m_seenProducts; public: ProductPrioritySetter(const std::vector<ResolvedProductPtr> &allProducts) // TODO: Use only products to build? @@ -242,8 +243,7 @@ void Executor::doBuild() const QStringList &filesToConsider = m_buildOptions.filesToConsider(); if (!filesToConsider.empty()) { for (const QString &fileToConsider : filesToConsider) { - const QList<FileResourceBase *> &files - = m_project->buildData->lookupFiles(fileToConsider); + const auto &files = m_project->buildData->lookupFiles(fileToConsider); for (const FileResourceBase * const file : files) { if (file->fileType() != FileResourceBase::FileTypeArtifact) continue; @@ -392,7 +392,7 @@ bool Executor::schedulingBlockedByJobLimit(const BuildGraphNode *node) { if (node->type() != BuildGraphNode::ArtifactNodeType) return false; - const Artifact * const artifact = static_cast<const Artifact *>(node); + const auto artifact = static_cast<const Artifact *>(node); if (artifact->artifactType == Artifact::SourceFile) return false; @@ -412,7 +412,8 @@ bool Executor::schedulingBlockedByJobLimit(const BuildGraphNode *node) // running transformers. if (jobLimitIsExceeded(transformer)) return true; - for (const ExecutorJob * const runningJob : m_processingJobs.keys()) { + const auto runningJobs = m_processingJobs.keys(); + for (const ExecutorJob * const runningJob : runningJobs) { if (!runningJob->jobPools().contains(jobPool)) continue; const Transformer * const runningTransformer = runningJob->transformer(); @@ -684,7 +685,8 @@ bool Executor::transformerHasMatchingInputFiles(const TransformerConstPtr &trans if (transformer->inputs.empty()) return true; for (const Artifact * const input : qAsConst(transformer->inputs)) { - for (const QString &filePath : m_buildOptions.filesToConsider()) { + const auto files = m_buildOptions.filesToConsider(); + for (const QString &filePath : files) { if (input->filePath() == filePath || input->fileTags().intersects(m_tagsNeededForFilesToConsider)) { return true; @@ -725,7 +727,8 @@ void Executor::cancelJobs() return; qCDebug(lcExec) << "Canceling all jobs."; setState(ExecutorCanceling); - for (ExecutorJob *job : m_processingJobs.keys()) + const auto jobs = m_processingJobs.keys(); + for (ExecutorJob *job : jobs) job->cancel(); } @@ -734,7 +737,7 @@ void Executor::setupProgressObserver() if (!m_progressObserver) return; int totalEffort = 1; // For the effort after the last rule application; - for (const ResolvedProductConstPtr &product : m_productsToBuild) { + for (const ResolvedProductConstPtr &product : qAsConst(m_productsToBuild)) { QBS_CHECK(product->buildData); const auto filtered = filterByType<RuleNode>(product->buildData->allNodes()); totalEffort += std::distance(filtered.begin(), filtered.end()); @@ -746,7 +749,7 @@ void Executor::doSanityChecks() { QBS_CHECK(m_project); QBS_CHECK(!m_productsToBuild.empty()); - for (const ResolvedProductConstPtr &product : m_productsToBuild) { + for (const ResolvedProductConstPtr &product : qAsConst(m_productsToBuild)) { QBS_CHECK(product->buildData); QBS_CHECK(product->topLevelProject() == m_project.get()); } @@ -754,7 +757,8 @@ void Executor::doSanityChecks() void Executor::handleError(const ErrorInfo &error) { - for (const ErrorItem &ei : error.items()) + const auto items = error.items(); + for (const ErrorItem &ei : items) m_error.append(ei); if (m_processingJobs.empty()) finish(); @@ -833,7 +837,7 @@ void Executor::rescueOldBuildData(Artifact *artifact, bool *childrenAdded = null childrenToConnect.push_back(child); } for (const QString &depPath : rad.fileDependencies) { - const QList<FileResourceBase *> depList = m_project->buildData->lookupFiles(depPath); + const auto &depList = m_project->buildData->lookupFiles(depPath); if (depList.empty()) { canRescue = false; qCDebug(lcBuildGraph) << "File dependency" << depPath @@ -1079,7 +1083,7 @@ void Executor::checkForUnbuiltProducts() { if (m_buildOptions.executeRulesOnly()) return; - QList<ResolvedProductPtr> unbuiltProducts; + std::vector<ResolvedProductPtr> unbuiltProducts; for (const ResolvedProductPtr &product : m_productsToBuild) { bool productBuilt = true; for (BuildGraphNode *rootNode : qAsConst(product->buildData->rootNodes())) { diff --git a/src/lib/corelib/buildgraph/executor.h b/src/lib/corelib/buildgraph/executor.h index 003ba9a22..895e066a7 100644 --- a/src/lib/corelib/buildgraph/executor.h +++ b/src/lib/corelib/buildgraph/executor.h @@ -77,8 +77,8 @@ class Executor : public QObject, private BuildGraphVisitor public: void build(); - Executor(const Logger &logger, QObject *parent = nullptr); - ~Executor(); + Executor(Logger logger, QObject *parent = nullptr); + ~Executor() override; void setProject(const TopLevelProjectPtr &project); void setProducts(const std::vector<ResolvedProductPtr> &productsToBuild); @@ -180,17 +180,17 @@ private: Leaves m_leaves; InputArtifactScannerContext *m_inputArtifactScanContext; ErrorInfo m_error; - bool m_explicitlyCanceled; + bool m_explicitlyCanceled = false; FileTags m_activeFileTags; FileTags m_tagsOfFilesToConsider; FileTags m_tagsNeededForFilesToConsider; QList<ResolvedProductPtr> m_productsOfFilesToConsider; - QTimer * const m_cancelationTimer; + QTimer * const m_cancelationTimer = nullptr; QStringList m_artifactsRemovedFromDisk; - bool m_partialBuild; - qint64 m_elapsedTimeRules; - qint64 m_elapsedTimeScanners; - qint64 m_elapsedTimeInstalling; + bool m_partialBuild = false; + qint64 m_elapsedTimeRules = 0; + qint64 m_elapsedTimeScanners = 0; + qint64 m_elapsedTimeInstalling = 0; }; } // namespace Internal diff --git a/src/lib/corelib/buildgraph/executorjob.h b/src/lib/corelib/buildgraph/executorjob.h index e28d42f7f..bc8954072 100644 --- a/src/lib/corelib/buildgraph/executorjob.h +++ b/src/lib/corelib/buildgraph/executorjob.h @@ -66,7 +66,7 @@ class ExecutorJob : public QObject Q_OBJECT public: ExecutorJob(const Logger &logger, QObject *parent); - ~ExecutorJob(); + ~ExecutorJob() override; void setMainThreadScriptEngine(ScriptEngine *engine); void setDryRun(bool enabled); @@ -88,12 +88,12 @@ private: void setFinished(); void reset(); - AbstractCommandExecutor *m_currentCommandExecutor; - ProcessCommandExecutor *m_processCommandExecutor; - JsCommandExecutor *m_jsCommandExecutor; - Transformer *m_transformer; + AbstractCommandExecutor *m_currentCommandExecutor = nullptr; + ProcessCommandExecutor *m_processCommandExecutor = nullptr; + JsCommandExecutor *m_jsCommandExecutor = nullptr; + Transformer *m_transformer = nullptr; Set<QString> m_jobPools; - int m_currentCommandIdx; + int m_currentCommandIdx = 0; ErrorInfo m_error; }; diff --git a/src/lib/corelib/buildgraph/filedependency.h b/src/lib/corelib/buildgraph/filedependency.h index b9a7caf57..802654e9f 100644 --- a/src/lib/corelib/buildgraph/filedependency.h +++ b/src/lib/corelib/buildgraph/filedependency.h @@ -85,7 +85,7 @@ class FileDependency : public FileResourceBase { public: FileDependency(); - ~FileDependency(); + ~FileDependency() override; FileType fileType() const override { return FileTypeDependency; } }; diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp index 68f3b744b..c8b2cb779 100644 --- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp +++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp @@ -77,8 +77,9 @@ static void resolveDepencency(const RawScannedDependency &dependency, FileDependency *fileDependencyArtifact = nullptr; Artifact *dependencyInProduct = nullptr; Artifact *dependencyInOtherProduct = nullptr; - for (FileResourceBase *lookupResult : project->topLevelProject() - ->buildData->lookupFiles(absDirPath, dependency.fileName())) { + const auto files = project->topLevelProject() + ->buildData->lookupFiles(absDirPath, dependency.fileName()); + for (FileResourceBase *lookupResult : files) { switch (lookupResult->fileType()) { case FileResourceBase::FileTypeDependency: fileDependencyArtifact = static_cast<FileDependency *>(lookupResult); @@ -115,12 +116,12 @@ static void resolveDepencency(const RawScannedDependency &dependency, } InputArtifactScanner::InputArtifactScanner(Artifact *artifact, InputArtifactScannerContext *ctx, - const Logger &logger) + Logger logger) : m_artifact(artifact), m_rawScanResults(artifact->product->topLevelProject()->buildData->rawScanResults), m_context(ctx), m_newDependencyAdded(false), - m_logger(logger) + m_logger(std::move(logger)) { } @@ -274,7 +275,7 @@ void InputArtifactScanner::resolveScanResultDependencies(const Artifact *inputAr } // try include paths - for (const QString &includePath : cache.searchPaths) { + for (const QString &includePath : qAsConst(cache.searchPaths)) { resolveDepencency(dependency, inputArtifact->product.get(), &resolvedDependency, includePath); if (resolvedDependency.isValid()) diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.h b/src/lib/corelib/buildgraph/inputartifactscanner.h index 92d5f516f..ac51af579 100644 --- a/src/lib/corelib/buildgraph/inputartifactscanner.h +++ b/src/lib/corelib/buildgraph/inputartifactscanner.h @@ -118,7 +118,7 @@ class InputArtifactScanner { public: InputArtifactScanner(Artifact *artifact, InputArtifactScannerContext *ctx, - const Logger &logger); + Logger logger); void scan(); bool newDependencyAdded() const { return m_newDependencyAdded; } diff --git a/src/lib/corelib/buildgraph/jscommandexecutor.cpp b/src/lib/corelib/buildgraph/jscommandexecutor.cpp index 4b7adb221..30970779c 100644 --- a/src/lib/corelib/buildgraph/jscommandexecutor.cpp +++ b/src/lib/corelib/buildgraph/jscommandexecutor.cpp @@ -62,7 +62,7 @@ namespace Internal { struct JavaScriptCommandResult { - bool success; + bool success = false; QString errorMessage; CodeLocation errorLocation; }; @@ -71,8 +71,8 @@ class JsCommandExecutorThreadObject : public QObject { Q_OBJECT public: - JsCommandExecutorThreadObject(const Logger &logger) - : m_logger(logger) + JsCommandExecutorThreadObject(Logger logger) + : m_logger(std::move(logger)) , m_scriptEngine(nullptr) { } diff --git a/src/lib/corelib/buildgraph/jscommandexecutor.h b/src/lib/corelib/buildgraph/jscommandexecutor.h index 207e18097..0170c5231 100644 --- a/src/lib/corelib/buildgraph/jscommandexecutor.h +++ b/src/lib/corelib/buildgraph/jscommandexecutor.h @@ -56,7 +56,7 @@ class JsCommandExecutor : public AbstractCommandExecutor Q_OBJECT public: explicit JsCommandExecutor(const Logger &logger, QObject *parent = nullptr); - ~JsCommandExecutor(); + ~JsCommandExecutor() override; signals: void startRequested(const JavaScriptCommand *cmd, Transformer *transformer); diff --git a/src/lib/corelib/buildgraph/nodetreedumper.h b/src/lib/corelib/buildgraph/nodetreedumper.h index 3ad3ca592..4175ce727 100644 --- a/src/lib/corelib/buildgraph/nodetreedumper.h +++ b/src/lib/corelib/buildgraph/nodetreedumper.h @@ -74,7 +74,7 @@ private: QIODevice &m_outDevice; ResolvedProductPtr m_currentProduct; NodeSet m_visited; - unsigned int m_indentation; + unsigned int m_indentation = 0; }; } // namespace Internal diff --git a/src/lib/corelib/buildgraph/processcommandexecutor.cpp b/src/lib/corelib/buildgraph/processcommandexecutor.cpp index 0818e1200..c34a734b4 100644 --- a/src/lib/corelib/buildgraph/processcommandexecutor.cpp +++ b/src/lib/corelib/buildgraph/processcommandexecutor.cpp @@ -89,7 +89,8 @@ static QProcessEnvironment mergeEnvironments(const QProcessEnvironment &baseEnv, QStringLiteral("DYLD_LIBRARY_PATH"), QStringLiteral("DYLD_FRAMEWORK_PATH"), }; - for (const QString &key : additionalEnv.keys()) { + const auto keys = additionalEnv.keys(); + for (const QString &key : keys) { QString newValue = additionalEnv.value(key); if (pathListVariables.contains(key, HostOsInfo::fileNameCaseSensitivity())) { const QString &oldValue = baseEnv.value(key); @@ -108,7 +109,8 @@ void ProcessCommandExecutor::doSetup() transformer()->product()->buildEnvironment) .findExecutable(cmd->program(), cmd->workingDir()); cmd->clearRelevantEnvValues(); - for (const QString &key : cmd->relevantEnvVars()) + const auto keys = cmd->relevantEnvVars(); + for (const QString &key : keys) cmd->addRelevantEnvValue(key, transformer()->product()->buildEnvironment.value(key)); m_commandEnvironment = mergeEnvironments(m_buildEnvironment, cmd->environment()); diff --git a/src/lib/corelib/buildgraph/productbuilddata.h b/src/lib/corelib/buildgraph/productbuilddata.h index bcc500de8..a7660af27 100644 --- a/src/lib/corelib/buildgraph/productbuilddata.h +++ b/src/lib/corelib/buildgraph/productbuilddata.h @@ -106,7 +106,7 @@ private: AllRescuableArtifactData m_rescuableArtifactData; // Do not store, initialized in executor. Higher prioritized artifacts are built first. - unsigned int m_buildPriority; + unsigned int m_buildPriority = 0; ArtifactSetByFileTag m_artifactsByFileTag; mutable std::mutex m_artifactsMapMutex; diff --git a/src/lib/corelib/buildgraph/productinstaller.cpp b/src/lib/corelib/buildgraph/productinstaller.cpp index cfd74c205..d4acc9ace 100644 --- a/src/lib/corelib/buildgraph/productinstaller.cpp +++ b/src/lib/corelib/buildgraph/productinstaller.cpp @@ -59,14 +59,14 @@ namespace qbs { namespace Internal { -ProductInstaller::ProductInstaller(const TopLevelProjectPtr &project, - const std::vector<ResolvedProductPtr> &products, const InstallOptions &options, - ProgressObserver *observer, const Logger &logger) - : m_project(project), - m_products(products), - m_options(options), +ProductInstaller::ProductInstaller(TopLevelProjectPtr project, + std::vector<ResolvedProductPtr> products, InstallOptions options, + ProgressObserver *observer, Logger logger) + : m_project(std::move(project)), + m_products(std::move(products)), + m_options(std::move(options)), m_observer(observer), - m_logger(logger) + m_logger(std::move(logger)) { if (!m_options.installRoot().isEmpty()) { QFileInfo installRootFileInfo(m_options.installRoot()); @@ -85,7 +85,7 @@ ProductInstaller::ProductInstaller(const TopLevelProjectPtr &project, if (m_options.removeExistingInstallation()) throw ErrorInfo(Tr::tr("Refusing to remove sysroot.")); } - initInstallRoot(project.get(), m_options); + initInstallRoot(m_project.get(), m_options); } void ProductInstaller::install() diff --git a/src/lib/corelib/buildgraph/productinstaller.h b/src/lib/corelib/buildgraph/productinstaller.h index 8379adb4c..09828cfe9 100644 --- a/src/lib/corelib/buildgraph/productinstaller.h +++ b/src/lib/corelib/buildgraph/productinstaller.h @@ -55,9 +55,9 @@ class ProgressObserver; class ProductInstaller { public: - ProductInstaller(const TopLevelProjectPtr &project, - const std::vector<ResolvedProductPtr> &products, - const InstallOptions &options, ProgressObserver *observer, const Logger &logger); + ProductInstaller(TopLevelProjectPtr project, + std::vector<ResolvedProductPtr> products, + InstallOptions options, ProgressObserver *observer, Logger logger); void install(); static QString targetFilePath(const TopLevelProject *project, const QString &productSourceDir, diff --git a/src/lib/corelib/buildgraph/projectbuilddata.cpp b/src/lib/corelib/buildgraph/projectbuilddata.cpp index dcb10b45b..31012e23e 100644 --- a/src/lib/corelib/buildgraph/projectbuilddata.cpp +++ b/src/lib/corelib/buildgraph/projectbuilddata.cpp @@ -96,8 +96,7 @@ QString ProjectBuildData::deriveBuildGraphFilePath(const QString &buildDir, cons void ProjectBuildData::insertIntoLookupTable(FileResourceBase *fileres) { - QList<FileResourceBase *> &lst - = m_artifactLookupTable[fileres->fileName()][fileres->dirPath()]; + auto &lst = m_artifactLookupTable[{fileres->fileName(), fileres->dirPath()}]; const auto * const artifact = fileres->fileType() == FileResourceBase::FileTypeArtifact ? static_cast<Artifact *>(fileres) : nullptr; if (artifact && artifact->artifactType == Artifact::Generated) { @@ -117,30 +116,32 @@ void ProjectBuildData::insertIntoLookupTable(FileResourceBase *fileres) throw error; } } - QBS_CHECK(!lst.contains(fileres)); + QBS_CHECK(!contains(lst, fileres)); lst.push_back(fileres); m_isDirty = true; } void ProjectBuildData::removeFromLookupTable(FileResourceBase *fileres) { - m_artifactLookupTable[fileres->fileName()][fileres->dirPath()].removeOne(fileres); + removeOne(m_artifactLookupTable[{fileres->fileName(), fileres->dirPath()}], fileres); } -QList<FileResourceBase *> ProjectBuildData::lookupFiles(const QString &filePath) const +const std::vector<FileResourceBase *> &ProjectBuildData::lookupFiles(const QString &filePath) const { QString dirPath, fileName; FileInfo::splitIntoDirectoryAndFileName(filePath, &dirPath, &fileName); return lookupFiles(dirPath, fileName); } -QList<FileResourceBase *> ProjectBuildData::lookupFiles(const QString &dirPath, +const std::vector<FileResourceBase *> &ProjectBuildData::lookupFiles(const QString &dirPath, const QString &fileName) const { - return m_artifactLookupTable.value(fileName).value(dirPath); + static const std::vector<FileResourceBase *> emptyResult; + const auto it = m_artifactLookupTable.find({fileName, dirPath}); + return it != m_artifactLookupTable.end() ? it->second : emptyResult; } -QList<FileResourceBase *> ProjectBuildData::lookupFiles(const Artifact *artifact) const +const std::vector<FileResourceBase *> &ProjectBuildData::lookupFiles(const Artifact *artifact) const { return lookupFiles(artifact->dirPath(), artifact->fileName()); } @@ -266,7 +267,7 @@ void ProjectBuildData::store(PersistentPool &pool) } -BuildDataResolver::BuildDataResolver(const Logger &logger) : m_logger(logger) +BuildDataResolver::BuildDataResolver(Logger logger) : m_logger(std::move(logger)) { } diff --git a/src/lib/corelib/buildgraph/projectbuilddata.h b/src/lib/corelib/buildgraph/projectbuilddata.h index 785a86cbb..930344435 100644 --- a/src/lib/corelib/buildgraph/projectbuilddata.h +++ b/src/lib/corelib/buildgraph/projectbuilddata.h @@ -45,13 +45,15 @@ #include <logging/logger.h> #include <tools/persistence.h> #include <tools/set.h> +#include <tools/qttools.h> -#include <QtCore/qhash.h> #include <QtCore/qlist.h> #include <QtCore/qstring.h> #include <QtScript/qscriptvalue.h> +#include <unordered_map> + namespace qbs { namespace Internal { class BuildGraphNode; @@ -70,9 +72,9 @@ public: void insertIntoLookupTable(FileResourceBase *fileres); void removeFromLookupTable(FileResourceBase *fileres); - QList<FileResourceBase *> lookupFiles(const QString &filePath) const; - QList<FileResourceBase *> lookupFiles(const QString &dirPath, const QString &fileName) const; - QList<FileResourceBase *> lookupFiles(const Artifact *artifact) const; + const std::vector<FileResourceBase *> &lookupFiles(const QString &filePath) const; + const std::vector<FileResourceBase *> &lookupFiles(const QString &dirPath, const QString &fileName) const; + const std::vector<FileResourceBase *> &lookupFiles(const Artifact *artifact) const; void insertFileDependency(FileDependency *dependency); void removeArtifactAndExclusiveDependents(Artifact *artifact, const Logger &logger, bool removeFromProduct = true, ArtifactSet *removedArtifacts = nullptr); @@ -99,9 +101,10 @@ private: pool.serializationOp<opType>(fileDependencies, rawScanResults); } - using ResultsPerDirectory = QHash<QString, QList<FileResourceBase *>>; - using ArtifactLookupTable = QHash<QString, ResultsPerDirectory>; + using ArtifactKey = std::pair<QString /*fileName*/, QString /*dirName*/>; + using ArtifactLookupTable = std::unordered_map<ArtifactKey, std::vector<FileResourceBase *>>; ArtifactLookupTable m_artifactLookupTable; + bool m_doCleanupInDestructor = true; bool m_isDirty = true; }; @@ -110,7 +113,7 @@ private: class BuildDataResolver { public: - BuildDataResolver(const Logger &logger); + BuildDataResolver(Logger logger); void resolveBuildData(const TopLevelProjectPtr &resolvedProject, const RulesEvaluationContextPtr &evalContext); void resolveProductBuildDataForExistingProject(const TopLevelProjectPtr &project, diff --git a/src/lib/corelib/buildgraph/rawscanneddependency.h b/src/lib/corelib/buildgraph/rawscanneddependency.h index e1cb5015c..4871bea62 100644 --- a/src/lib/corelib/buildgraph/rawscanneddependency.h +++ b/src/lib/corelib/buildgraph/rawscanneddependency.h @@ -72,7 +72,7 @@ private: QString m_dirPath; QString m_fileName; - bool m_isClean; + bool m_isClean = 0; }; bool operator==(const RawScannedDependency &d1, const RawScannedDependency &d2); diff --git a/src/lib/corelib/buildgraph/requestedartifacts.cpp b/src/lib/corelib/buildgraph/requestedartifacts.cpp index 7fbaf65f1..e4730d2f1 100644 --- a/src/lib/corelib/buildgraph/requestedartifacts.cpp +++ b/src/lib/corelib/buildgraph/requestedartifacts.cpp @@ -55,9 +55,8 @@ bool RequestedArtifacts::isUpToDate(const TopLevelProject *project) const if (m_requestedArtifactsPerProduct.empty()) return true; const std::vector<ResolvedProductPtr> &allProducts = project->allProducts(); - for (auto it = m_requestedArtifactsPerProduct.cbegin(); - it != m_requestedArtifactsPerProduct.cend(); ++it) { - const QString &productName = it->first; + for (const auto &kv : m_requestedArtifactsPerProduct) { + const QString &productName = kv.first; const auto findProduct = [productName](const ResolvedProductConstPtr &p) { return p->uniqueName() == productName; }; @@ -67,7 +66,7 @@ bool RequestedArtifacts::isUpToDate(const TopLevelProject *project) const << "does not exist anymore"; return false; } - if (!it->second.isUpToDate(productIt->get())) + if (!kv.second.isUpToDate(productIt->get())) return false; } return true; @@ -110,18 +109,14 @@ void RequestedArtifacts::setArtifactsEnumerated(const ResolvedProduct *product) void RequestedArtifacts::unite(const RequestedArtifacts &other) { - for (auto it = other.m_requestedArtifactsPerProduct.begin(); - it != other.m_requestedArtifactsPerProduct.end(); ++it) { - m_requestedArtifactsPerProduct[it->first].unite(it->second); - } + for (const auto &kv : other.m_requestedArtifactsPerProduct) + m_requestedArtifactsPerProduct[kv.first].unite(kv.second); } void RequestedArtifacts::doSanityChecks() const { - for (auto it = m_requestedArtifactsPerProduct.cbegin(); - it != m_requestedArtifactsPerProduct.cend(); ++it) { - it->second.doSanityChecks(); - } + for (const auto &kv : m_requestedArtifactsPerProduct) + kv.second.doSanityChecks(); } void RequestedArtifacts::load(PersistentPool &pool) @@ -147,17 +142,17 @@ bool RequestedArtifacts::RequestedArtifactsPerProduct::isUpToDate( return true; const ArtifactSetByFileTag currentArtifacts = product->buildData->artifactsByFileTag(); - for (auto reqIt = requestedTags.cbegin(); reqIt != requestedTags.cend(); ++reqIt) { - const FileTag tag = FileTag(reqIt->first.toUtf8()); + for (const auto &kv : requestedTags) { + const FileTag tag = FileTag(kv.first.toUtf8()); const auto currentIt = currentArtifacts.constFind(tag); Set<QString> currentFilePathsForTag; if (currentIt != currentArtifacts.constEnd()) { for (const Artifact * const a : currentIt.value()) currentFilePathsForTag.insert(a->filePath()); } - if (currentFilePathsForTag != reqIt->second) { + if (currentFilePathsForTag != kv.second) { qCDebug(lcBuildGraph) << "artifacts map not up to date: requested artifact set for " - "file tag" << reqIt->first << "in product" + "file tag" << kv.first << "in product" << product->uniqueName() << "differs from the current one"; return false; } @@ -185,14 +180,14 @@ void RequestedArtifacts::RequestedArtifactsPerProduct::unite( return; } allTags = other.allTags; - for (auto it = other.requestedTags.begin(); it != other.requestedTags.end(); ++it) - requestedTags[it->first] = it->second; + for (const auto &kv : other.requestedTags) + requestedTags[kv.first] = kv.second; } void RequestedArtifacts::RequestedArtifactsPerProduct::doSanityChecks() const { - for (auto it = requestedTags.begin(); it != requestedTags.end(); ++it) - QBS_CHECK(allTags.contains(it->first) || it->second.empty()); + for (const auto &kv : requestedTags) + QBS_CHECK(allTags.contains(kv.first) || kv.second.empty()); } void RequestedArtifacts::RequestedArtifactsPerProduct::load(PersistentPool &pool) diff --git a/src/lib/corelib/buildgraph/rulegraph.h b/src/lib/corelib/buildgraph/rulegraph.h index fe2fc4c3b..4ce5ecea8 100644 --- a/src/lib/corelib/buildgraph/rulegraph.h +++ b/src/lib/corelib/buildgraph/rulegraph.h @@ -56,6 +56,7 @@ namespace Internal { class RuleGraphVisitor { public: + virtual ~RuleGraphVisitor() = default; virtual void visit(const RuleConstPtr &parentRule, const RuleConstPtr &rule) = 0; virtual void endVisit(const RuleConstPtr &rule) { Q_UNUSED(rule); } }; diff --git a/src/lib/corelib/buildgraph/rulenode.h b/src/lib/corelib/buildgraph/rulenode.h index 0585678ec..cfb2039d6 100644 --- a/src/lib/corelib/buildgraph/rulenode.h +++ b/src/lib/corelib/buildgraph/rulenode.h @@ -58,7 +58,7 @@ class RuleNode : public BuildGraphNode { public: RuleNode(); - ~RuleNode(); + ~RuleNode() override; void setRule(const RuleConstPtr &rule) { m_rule = rule; } const RuleConstPtr &rule() const { return m_rule; } diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp index 7ff64a9ef..16aa0c001 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.cpp +++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp @@ -1,3 +1,5 @@ +#include <utility> + /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. @@ -76,15 +78,15 @@ namespace qbs { namespace Internal { RulesApplicator::RulesApplicator( - const ResolvedProductPtr &product, - const std::unordered_map<QString, const ResolvedProduct *> &productsByName, - const std::unordered_map<QString, const ResolvedProject *> &projectsByName, - const Logger &logger) - : m_product(product) - , m_productsByName(productsByName) - , m_projectsByName(projectsByName) + ResolvedProductPtr product, + std::unordered_map<QString, const ResolvedProduct *> productsByName, + std::unordered_map<QString, const ResolvedProject *> projectsByName, + Logger logger) + : m_product(std::move(product)) + , m_productsByName(std::move(productsByName)) + , m_projectsByName(std::move(projectsByName)) , m_mocScanner(nullptr) - , m_logger(logger) + , m_logger(std::move(logger)) { } @@ -186,7 +188,7 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p qCDebug(lcBuildGraph) << "apply rule" << m_rule->toString() << toStringList(inputArtifacts).join(QLatin1String(",\n ")); - QList<std::pair<const RuleArtifact *, OutputArtifactInfo>> ruleArtifactArtifactMap; + std::vector<std::pair<const RuleArtifact *, OutputArtifactInfo>> ruleArtifactArtifactMap; QList<Artifact *> outputArtifacts; m_transformer = Transformer::create(); @@ -308,7 +310,7 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p || m_oldTransformer->commands != m_transformer->commands || commandsNeedRerun(m_transformer.get(), m_product.get(), m_productsByName, m_projectsByName)) { - for (Artifact * const output : outputArtifacts) { + for (Artifact * const output : qAsConst(outputArtifacts)) { output->clearTimestamp(); m_invalidatedArtifacts += output; } @@ -545,8 +547,8 @@ class ArtifactBindingsExtractor { struct Entry { - Entry(const QString &module, const QString &name, const QVariant &value) - : module(module), name(name), value(value) + Entry(QString module, QString name, QVariant value) + : module(std::move(module)), name(std::move(name)), value(std::move(value)) {} QString module; @@ -558,9 +560,9 @@ class ArtifactBindingsExtractor static Set<QString> getArtifactItemPropertyNames() { Set<QString> s; - for (const PropertyDeclaration &pd : - BuiltinDeclarations::instance().declarationsForType( - ItemType::Artifact).properties()) { + const auto properties = BuiltinDeclarations::instance().declarationsForType( + ItemType::Artifact).properties(); + for (const PropertyDeclaration &pd : properties) { s.insert(pd.name()); } s.insert(StringConstants::explicitlyDependsOnProperty()); diff --git a/src/lib/corelib/buildgraph/rulesapplicator.h b/src/lib/corelib/buildgraph/rulesapplicator.h index f6fadb1ec..1160f3d09 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.h +++ b/src/lib/corelib/buildgraph/rulesapplicator.h @@ -62,10 +62,10 @@ class ScriptEngine; class RulesApplicator { public: - RulesApplicator(const ResolvedProductPtr &product, - const std::unordered_map<QString, const ResolvedProduct *> &productsByName, - const std::unordered_map<QString, const ResolvedProject *> &projectsByName, - const Logger &logger); + RulesApplicator(ResolvedProductPtr product, + std::unordered_map<QString, const ResolvedProduct *> productsByName, + std::unordered_map<QString, const ResolvedProject *> projectsByName, + Logger logger); ~RulesApplicator(); const NodeSet &createdArtifacts() const { return m_createdArtifacts; } diff --git a/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp b/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp index c81e40c4f..6ae230329 100644 --- a/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp +++ b/src/lib/corelib/buildgraph/rulesevaluationcontext.cpp @@ -53,8 +53,8 @@ namespace qbs { namespace Internal { -RulesEvaluationContext::RulesEvaluationContext(const Logger &logger) - : m_logger(logger), +RulesEvaluationContext::RulesEvaluationContext(Logger logger) + : m_logger(std::move(logger)), m_engine(ScriptEngine::create(m_logger, EvalContext::RuleExecution)), m_observer(nullptr), m_initScopeCalls(0) diff --git a/src/lib/corelib/buildgraph/rulesevaluationcontext.h b/src/lib/corelib/buildgraph/rulesevaluationcontext.h index d3bf0e5bd..a5d81ce61 100644 --- a/src/lib/corelib/buildgraph/rulesevaluationcontext.h +++ b/src/lib/corelib/buildgraph/rulesevaluationcontext.h @@ -56,7 +56,7 @@ class ScriptEngine; class RulesEvaluationContext { public: - RulesEvaluationContext(const Logger &logger); + RulesEvaluationContext(Logger logger); ~RulesEvaluationContext(); class Scope diff --git a/src/lib/corelib/buildgraph/transformer.cpp b/src/lib/corelib/buildgraph/transformer.cpp index d737e908b..cc0b4c923 100644 --- a/src/lib/corelib/buildgraph/transformer.cpp +++ b/src/lib/corelib/buildgraph/transformer.cpp @@ -242,7 +242,8 @@ AbstractCommandPtr Transformer::createCommandFromScriptValue(const QScriptValue if (className == StringConstants::commandType()) { auto procCmd = static_cast<ProcessCommand *>(cmdBase.get()); procCmd->clearRelevantEnvValues(); - for (const QString &key : procCmd->relevantEnvVars()) + const auto envVars = procCmd->relevantEnvVars(); + for (const QString &key : envVars) procCmd->addRelevantEnvValue(key, product()->buildEnvironment.value(key)); } return cmdBase; diff --git a/src/lib/corelib/buildgraph/transformerchangetracking.cpp b/src/lib/corelib/buildgraph/transformerchangetracking.cpp index 08875b742..505f0cbba 100644 --- a/src/lib/corelib/buildgraph/transformerchangetracking.cpp +++ b/src/lib/corelib/buildgraph/transformerchangetracking.cpp @@ -209,8 +209,8 @@ bool TrafoChangeTracker::isExportedModuleUpToDate(const QString &productName, bool TrafoChangeTracker::areExportedModulesUpToDate( const std::unordered_map<QString, ExportedModule> exportedModules) const { - for (auto it = exportedModules.begin(); it != exportedModules.end(); ++it) { - if (!isExportedModuleUpToDate(it->first, it->second)) + for (const auto &kv : exportedModules) { + if (!isExportedModuleUpToDate(kv.first, kv.second)) return false; } return true; @@ -226,8 +226,7 @@ const Artifact *TrafoChangeTracker::getArtifact(const QString &filePath, const ResolvedProduct * const product = getProduct(productName); if (!product) return nullptr; - const QList<FileResourceBase *> &candidates - = product->topLevelProject()->buildData->lookupFiles(filePath); + const auto &candidates = product->topLevelProject()->buildData->lookupFiles(filePath); const Artifact *artifact = nullptr; for (const FileResourceBase * const candidate : candidates) { if (candidate->fileType() == FileResourceBase::FileTypeArtifact) { @@ -338,7 +337,8 @@ bool TrafoChangeTracker::commandsNeedRerun() const if (c->type() != AbstractCommand::ProcessCommandType) continue; const ProcessCommandPtr &processCmd = std::static_pointer_cast<ProcessCommand>(c); - for (const QString &var : processCmd->relevantEnvVars()) { + const auto envVars = processCmd->relevantEnvVars(); + for (const QString &var : envVars) { const QString &oldValue = processCmd->relevantEnvValue(var); const QString &newValue = m_product->buildEnvironment.value(var); if (oldValue != newValue) { |