aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r--src/lib/corelib/buildgraph/abstractcommandexecutor.cpp4
-rw-r--r--src/lib/corelib/buildgraph/abstractcommandexecutor.h2
-rw-r--r--src/lib/corelib/buildgraph/artifact.h2
-rw-r--r--src/lib/corelib/buildgraph/artifactcleaner.cpp14
-rw-r--r--src/lib/corelib/buildgraph/artifactcleaner.h6
-rw-r--r--src/lib/corelib/buildgraph/buildgraph.cpp9
-rw-r--r--src/lib/corelib/buildgraph/buildgraphloader.cpp11
-rw-r--r--src/lib/corelib/buildgraph/buildgraphloader.h6
-rw-r--r--src/lib/corelib/buildgraph/buildgraphvisitor.h1
-rw-r--r--src/lib/corelib/buildgraph/cycledetector.cpp7
-rw-r--r--src/lib/corelib/buildgraph/cycledetector.h2
-rw-r--r--src/lib/corelib/buildgraph/depscanner.cpp4
-rw-r--r--src/lib/corelib/buildgraph/depscanner.h2
-rw-r--r--src/lib/corelib/buildgraph/emptydirectoriesremover.cpp4
-rw-r--r--src/lib/corelib/buildgraph/emptydirectoriesremover.h2
-rw-r--r--src/lib/corelib/buildgraph/environmentscriptrunner.h2
-rw-r--r--src/lib/corelib/buildgraph/executor.cpp34
-rw-r--r--src/lib/corelib/buildgraph/executor.h16
-rw-r--r--src/lib/corelib/buildgraph/executorjob.h12
-rw-r--r--src/lib/corelib/buildgraph/filedependency.h2
-rw-r--r--src/lib/corelib/buildgraph/inputartifactscanner.cpp11
-rw-r--r--src/lib/corelib/buildgraph/inputartifactscanner.h2
-rw-r--r--src/lib/corelib/buildgraph/jscommandexecutor.cpp6
-rw-r--r--src/lib/corelib/buildgraph/jscommandexecutor.h2
-rw-r--r--src/lib/corelib/buildgraph/nodetreedumper.h2
-rw-r--r--src/lib/corelib/buildgraph/processcommandexecutor.cpp6
-rw-r--r--src/lib/corelib/buildgraph/productbuilddata.h2
-rw-r--r--src/lib/corelib/buildgraph/productinstaller.cpp16
-rw-r--r--src/lib/corelib/buildgraph/productinstaller.h6
-rw-r--r--src/lib/corelib/buildgraph/projectbuilddata.cpp19
-rw-r--r--src/lib/corelib/buildgraph/projectbuilddata.h17
-rw-r--r--src/lib/corelib/buildgraph/rawscanneddependency.h2
-rw-r--r--src/lib/corelib/buildgraph/requestedartifacts.cpp35
-rw-r--r--src/lib/corelib/buildgraph/rulegraph.h1
-rw-r--r--src/lib/corelib/buildgraph/rulenode.h2
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp32
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.h8
-rw-r--r--src/lib/corelib/buildgraph/rulesevaluationcontext.cpp4
-rw-r--r--src/lib/corelib/buildgraph/rulesevaluationcontext.h2
-rw-r--r--src/lib/corelib/buildgraph/transformer.cpp3
-rw-r--r--src/lib/corelib/buildgraph/transformerchangetracking.cpp10
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) {