aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <ABBAPOH@gmail.com>2019-02-19 23:13:54 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2019-03-06 18:13:43 +0000
commitf3056e49c3b2443c5dd9abf78c46381fdbbbd731 (patch)
treed435db1321f25287eda1481ba16b9d3cfab4b40a
parent967d67664b53169bf958dc1ea61ab014d16c56e6 (diff)
Fix calls to non-const begin()/end() in range-for loops
This fixes -Wclazy-range-loop Change-Id: I08a435b700017cdbe27fbfdbda6e26840d9a3568 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
-rw-r--r--src/app/qbs-setup-toolchains/msvcprobe.cpp3
-rw-r--r--src/app/qbs-setup-toolchains/probe.cpp6
-rw-r--r--src/app/qbs-setup-toolchains/xcodeprobe.cpp12
-rw-r--r--src/lib/corelib/api/internaljobs.cpp3
-rw-r--r--src/lib/corelib/api/project.cpp21
-rw-r--r--src/lib/corelib/api/projectdata.cpp18
-rw-r--r--src/lib/corelib/api/runenvironment.cpp6
-rw-r--r--src/lib/corelib/buildgraph/cycledetector.cpp3
-rw-r--r--src/lib/corelib/buildgraph/executor.cpp19
-rw-r--r--src/lib/corelib/buildgraph/inputartifactscanner.cpp7
-rw-r--r--src/lib/corelib/buildgraph/processcommandexecutor.cpp6
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp8
-rw-r--r--src/lib/corelib/buildgraph/transformer.cpp3
-rw-r--r--src/lib/corelib/buildgraph/transformerchangetracking.cpp3
-rw-r--r--src/lib/corelib/generators/generator.cpp2
-rw-r--r--src/lib/corelib/jsextensions/environmentextension.cpp3
-rw-r--r--src/lib/corelib/language/astimportshandler.cpp6
-rw-r--r--src/lib/corelib/language/builtindeclarations.cpp3
-rw-r--r--src/lib/corelib/language/item.cpp3
-rw-r--r--src/lib/corelib/language/moduleloader.cpp13
-rw-r--r--src/lib/corelib/language/projectresolver.cpp8
-rw-r--r--src/lib/corelib/logging/logger.cpp3
-rw-r--r--src/lib/corelib/tools/applecodesignutils.cpp6
-rw-r--r--src/lib/corelib/tools/fileinfo.cpp5
-rw-r--r--src/lib/corelib/tools/jsliterals.cpp3
-rw-r--r--src/lib/corelib/tools/msvcinfo.cpp6
-rw-r--r--src/lib/corelib/tools/preferences.cpp6
-rw-r--r--src/lib/corelib/tools/settingscreator.cpp3
-rw-r--r--src/lib/corelib/tools/settingsmodel.cpp6
-rw-r--r--src/lib/corelib/tools/vsenvironmentdetector.cpp12
-rw-r--r--src/plugins/generator/clangcompilationdb/clangcompilationdbgenerator.cpp12
-rw-r--r--src/plugins/generator/makefilegenerator/makefilegenerator.cpp33
-rw-r--r--src/plugins/generator/visualstudio/io/visualstudiosolutionwriter.cpp9
-rw-r--r--src/plugins/generator/visualstudio/msbuildfiltersproject.cpp6
-rw-r--r--src/plugins/generator/visualstudio/msbuildqbsproductproject.cpp9
-rw-r--r--src/plugins/generator/visualstudio/solution/visualstudiosolution.cpp4
-rw-r--r--src/plugins/generator/visualstudio/visualstudiogenerator.cpp8
-rw-r--r--tests/auto/api/tst_api.cpp3
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp4
-rw-r--r--tests/auto/blackbox/tst_blackboxapple.cpp3
-rw-r--r--tests/auto/blackbox/tst_clangdb.cpp3
41 files changed, 191 insertions, 109 deletions
diff --git a/src/app/qbs-setup-toolchains/msvcprobe.cpp b/src/app/qbs-setup-toolchains/msvcprobe.cpp
index 3bb99fd22..22952716a 100644
--- a/src/app/qbs-setup-toolchains/msvcprobe.cpp
+++ b/src/app/qbs-setup-toolchains/msvcprobe.cpp
@@ -213,7 +213,8 @@ static std::vector<MSVCInstallInfo> retrieveInstancesFromVSWhere(ProductType pro
.arg(parseError.errorString());
return result;
}
- for (const QJsonValue &v : jsonOutput.array()) {
+ const auto jsonArray = jsonOutput.array();
+ for (const QJsonValue &v : jsonArray) {
const QJsonObject o = v.toObject();
MSVCInstallInfo info;
info.version = o.value(QStringLiteral("installationVersion")).toString();
diff --git a/src/app/qbs-setup-toolchains/probe.cpp b/src/app/qbs-setup-toolchains/probe.cpp
index e90bafec2..728fe303d 100644
--- a/src/app/qbs-setup-toolchains/probe.cpp
+++ b/src/app/qbs-setup-toolchains/probe.cpp
@@ -369,7 +369,8 @@ static void iarProbe(Settings *settings, QList<Profile> &profiles)
qStdout << Tr::tr("Trying to detect IAR toolchains...") << endl;
bool isFound = false;
- for (const QString &compilerName : knownIarCompilerNames()) {
+ const auto compilerNames = knownIarCompilerNames();
+ for (const QString &compilerName : compilerNames) {
const QString iarPath = findExecutable(HostOsInfo::appendExecutableSuffix(compilerName));
if (!iarPath.isEmpty()) {
const auto profile = createIarProfile(iarPath, settings);
@@ -387,7 +388,8 @@ static void keilProbe(Settings *settings, QList<Profile> &profiles)
qStdout << Tr::tr("Trying to detect KEIL toolchains...") << endl;
bool isFound = false;
- for (const QString &compilerName : knownKeilCompilerNames()) {
+ const auto compilerNames = knownKeilCompilerNames();
+ for (const QString &compilerName : compilerNames) {
const QString keilPath = findExecutable(HostOsInfo::appendExecutableSuffix(compilerName));
if (!keilPath.isEmpty()) {
const auto profile = createKeilProfile(keilPath, settings);
diff --git a/src/app/qbs-setup-toolchains/xcodeprobe.cpp b/src/app/qbs-setup-toolchains/xcodeprobe.cpp
index 227dc00f3..9b8acc79e 100644
--- a/src/app/qbs-setup-toolchains/xcodeprobe.cpp
+++ b/src/app/qbs-setup-toolchains/xcodeprobe.cpp
@@ -117,8 +117,9 @@ void XcodeProbe::detectDeveloperPaths()
if (!launchServices.waitForFinished(-1) || launchServices.exitCode()) {
qbsInfo() << Tr::tr("Could not detect additional Xcode installations with /usr/bin/mdfind");
} else {
- for (const QString &path : QString::fromLocal8Bit(launchServices.readAllStandardOutput())
- .split(QLatin1Char('\n'), QString::SkipEmptyParts))
+ const auto paths = QString::fromLocal8Bit(launchServices.readAllStandardOutput())
+ .split(QLatin1Char('\n'), QString::SkipEmptyParts);
+ for (const QString &path : paths)
addDeveloperPath(path + QStringLiteral("/Contents/Developer"));
}
}
@@ -188,14 +189,15 @@ void XcodeProbe::setupDefaultToolchains(const QString &devPath, const QString &x
<< QStringLiteral("appletvsimulator")
<< QStringLiteral("watchos")
<< QStringLiteral("watchsimulator");
- for (const QString &platform : platforms) {
+ for (const QString &platform : qAsConst(platforms)) {
Profile platformProfile(xcodeName + QLatin1Char('-') + platform, settings);
platformProfile.removeProfile();
platformProfile.setBaseProfile(installationProfile.name());
platformProfile.setValue(QStringLiteral("qbs.targetPlatform"), targetOS(platform));
profiles.push_back(platformProfile);
- for (const QString &arch : archList(platform)) {
+ const auto architectures = archList(platform);
+ for (const QString &arch : architectures) {
Profile archProfile(xcodeName + QLatin1Char('-') + platform + QLatin1Char('-') + arch,
settings);
archProfile.removeProfile();
@@ -211,7 +213,7 @@ void XcodeProbe::detectAll()
{
int i = 1;
detectDeveloperPaths();
- for (const QString &developerPath : developerPaths) {
+ for (const QString &developerPath : qAsConst(developerPaths)) {
QString profileName = QStringLiteral("xcode");
if (developerPath != defaultDeveloperPath) {
const auto devPath = developerPath.toStdString();
diff --git a/src/lib/corelib/api/internaljobs.cpp b/src/lib/corelib/api/internaljobs.cpp
index 4d06821fd..32f288659 100644
--- a/src/lib/corelib/api/internaljobs.cpp
+++ b/src/lib/corelib/api/internaljobs.cpp
@@ -162,7 +162,8 @@ void InternalJob::storeBuildGraph(const TopLevelProjectPtr &project)
project->store(logger());
} catch (const ErrorInfo &error) {
ErrorInfo fullError = this->error();
- for (const ErrorItem &item : error.items())
+ const auto items = error.items();
+ for (const ErrorItem &item : items)
fullError.append(item);
setError(fullError);
}
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp
index abb053991..f7c57611d 100644
--- a/src/lib/corelib/api/project.cpp
+++ b/src/lib/corelib/api/project.cpp
@@ -233,7 +233,8 @@ ResolvedProductPtr ProjectPrivate::internalProduct(const ProductData &product) c
ProductData ProjectPrivate::findProductData(const ProductData &product) const
{
- for (const ProductData &p : m_projectData.allProducts()) {
+ const auto products = m_projectData.allProducts();
+ for (const ProductData &p : products) {
if (p.name() == product.name()
&& p.profile() == product.profile()
&& p.multiplexConfigurationId() == product.multiplexConfigurationId()) {
@@ -246,7 +247,8 @@ ProductData ProjectPrivate::findProductData(const ProductData &product) const
QList<ProductData> ProjectPrivate::findProductsByName(const QString &name) const
{
QList<ProductData> list;
- for (const ProductData &p : m_projectData.allProducts()) {
+ const auto products = m_projectData.allProducts();
+ for (const ProductData &p : products) {
if (p.name() == name)
list.push_back(p);
}
@@ -255,7 +257,8 @@ QList<ProductData> ProjectPrivate::findProductsByName(const QString &name) const
GroupData ProjectPrivate::findGroupData(const ProductData &product, const QString &groupName) const
{
- for (const GroupData &g : product.groups()) {
+ const auto groups = product.groups();
+ for (const GroupData &g : groups) {
if (g.name() == groupName)
return g;
}
@@ -704,11 +707,14 @@ void ProjectPrivate::updateExternalCodeLocations(const ProjectData &project,
if (lineOffset == 0)
return;
updateLocationIfNecessary(project.d->location, changeLocation, lineOffset);
- for (const ProjectData &subProject : project.subProjects())
+ const auto subProjects = project.subProjects();
+ for (const ProjectData &subProject : subProjects)
updateExternalCodeLocations(subProject, changeLocation, lineOffset);
- for (const ProductData &product : project.products()) {
+ const auto products = project.products();
+ for (const ProductData &product : products) {
updateLocationIfNecessary(product.d->location, changeLocation, lineOffset);
- for (const GroupData &group : product.groups())
+ const auto groups = product.groups();
+ for (const GroupData &group : groups)
updateLocationIfNecessary(group.d->location, changeLocation, lineOffset);
}
}
@@ -784,7 +790,8 @@ ProjectTransformerData ProjectPrivate::transformerData()
if (!m_projectData.isValid())
retrieveProjectData(m_projectData, internalProject);
ProjectTransformerData projectTransformerData;
- for (const ProductData &productData : m_projectData.allProducts()) {
+ const auto allProducts = m_projectData.allProducts();
+ for (const ProductData &productData : allProducts) {
if (!productData.isEnabled())
continue;
const ResolvedProductConstPtr product = internalProduct(productData);
diff --git a/src/lib/corelib/api/projectdata.cpp b/src/lib/corelib/api/projectdata.cpp
index a3e6eac25..3220b0e37 100644
--- a/src/lib/corelib/api/projectdata.cpp
+++ b/src/lib/corelib/api/projectdata.cpp
@@ -538,13 +538,14 @@ QList<ArtifactData> ProductData::targetArtifacts() const
QList<ArtifactData> ProductData::installableArtifacts() const
{
QList<ArtifactData> artifacts;
- for (const GroupData &g : groups()) {
- for (const ArtifactData &a : g.allSourceArtifacts()) {
+ for (const GroupData &g : qAsConst(d->groups)) {
+ const auto sourceArtifacts = g.allSourceArtifacts();
+ for (const ArtifactData &a : sourceArtifacts) {
if (a.installData().isInstallable())
artifacts << a;
}
}
- for (const ArtifactData &a : generatedArtifacts()) {
+ for (const ArtifactData &a : qAsConst(d->generatedArtifacts)) {
if (a.installData().isInstallable())
artifacts << a;
}
@@ -560,7 +561,8 @@ QString ProductData::targetExecutable() const
QBS_ASSERT(isValid(), return {});
if (d->moduleProperties.getModuleProperty(QStringLiteral("bundle"),
QStringLiteral("isBundle")).toBool()) {
- for (const ArtifactData &ta : targetArtifacts()) {
+ const auto artifacts = targetArtifacts();
+ for (const ArtifactData &ta : artifacts) {
if (ta.fileTags().contains(QLatin1String("bundle.application-executable"))) {
if (ta.installData().isInstallable())
return ta.installData().localInstallFilePath();
@@ -568,7 +570,8 @@ QString ProductData::targetExecutable() const
}
}
}
- for (const ArtifactData &ta : targetArtifacts()) {
+ const auto artifacts = targetArtifacts();
+ for (const ArtifactData &ta : artifacts) {
if (ta.isExecutable()) {
if (ta.installData().isInstallable())
return ta.installData().localInstallFilePath();
@@ -758,7 +761,7 @@ QList<ProjectData> ProjectData::subProjects() const
QList<ProductData> ProjectData::allProducts() const
{
QList<ProductData> productList = products();
- for (const ProjectData &pd : subProjects())
+ for (const ProjectData &pd : qAsConst(d->subProjects))
productList << pd.allProducts();
return productList;
}
@@ -769,7 +772,8 @@ QList<ProductData> ProjectData::allProducts() const
QList<ArtifactData> ProjectData::installableArtifacts() const
{
QList<ArtifactData> artifacts;
- for (const ProductData &p : allProducts())
+ const auto products = allProducts();
+ for (const ProductData &p : products)
artifacts << p.installableArtifacts();
return artifacts;
}
diff --git a/src/lib/corelib/api/runenvironment.cpp b/src/lib/corelib/api/runenvironment.cpp
index 989918207..f65cc6e3a 100644
--- a/src/lib/corelib/api/runenvironment.cpp
+++ b/src/lib/corelib/api/runenvironment.cpp
@@ -184,7 +184,8 @@ int RunEnvironment::doRunShell()
#if defined(Q_OS_LINUX)
clearenv();
#endif
- for (const QString &key : environment.keys())
+ const auto keys = environment.keys();
+ for (const QString &key : keys)
qputenv(key.toLocal8Bit().constData(), environment.value(key).toLocal8Bit());
QString command;
if (HostOsInfo::isWindowsHost()) {
@@ -260,7 +261,8 @@ static QString findMainIntent(const QString &aapt, const QString &apkFilePath)
<< QStringLiteral("badging")
<< apkFilePath);
if (aaptProcess.waitForFinished(-1)) {
- for (auto line : aaptProcess.readAllStandardOutput().split('\n')) {
+ const auto lines = aaptProcess.readAllStandardOutput().split('\n');
+ for (const auto &line : lines) {
if (line.startsWith(QByteArrayLiteral("package:")))
packageId = QString::fromStdString(readAaptBadgingAttribute(line.toStdString()));
else if (line.startsWith(QByteArrayLiteral("launchable-activity:")))
diff --git a/src/lib/corelib/buildgraph/cycledetector.cpp b/src/lib/corelib/buildgraph/cycledetector.cpp
index 95afba87d..a008cc096 100644
--- a/src/lib/corelib/buildgraph/cycledetector.cpp
+++ b/src/lib/corelib/buildgraph/cycledetector.cpp
@@ -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/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp
index 8f71e1ea3..444ab568f 100644
--- a/src/lib/corelib/buildgraph/executor.cpp
+++ b/src/lib/corelib/buildgraph/executor.cpp
@@ -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;
@@ -412,7 +413,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 +686,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 +728,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 +738,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 +750,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 +758,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();
diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
index 68f3b744b..48722186d 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);
@@ -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/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/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index 7ff64a9ef..1bc0cdedb 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -308,7 +308,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;
}
@@ -558,9 +558,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/transformer.cpp b/src/lib/corelib/buildgraph/transformer.cpp
index cf632463d..0a4fa17f9 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..4ee4394fd 100644
--- a/src/lib/corelib/buildgraph/transformerchangetracking.cpp
+++ b/src/lib/corelib/buildgraph/transformerchangetracking.cpp
@@ -338,7 +338,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) {
diff --git a/src/lib/corelib/generators/generator.cpp b/src/lib/corelib/generators/generator.cpp
index 24da95e41..90bebdcaa 100644
--- a/src/lib/corelib/generators/generator.cpp
+++ b/src/lib/corelib/generators/generator.cpp
@@ -213,7 +213,7 @@ const GeneratableProject ProjectGenerator::project() const
{
QMap<QString, ProjectData> rootProjects;
GeneratableProject proj;
- for (const auto &project : projects()) {
+ for (const auto &project : qAsConst(d->projects)) {
const QString configurationName = _configurationName(project);
rootProjects.insert(configurationName, project.projectData());
proj.projects.insert(configurationName, project);
diff --git a/src/lib/corelib/jsextensions/environmentextension.cpp b/src/lib/corelib/jsextensions/environmentextension.cpp
index 22c4f069b..cf17c938b 100644
--- a/src/lib/corelib/jsextensions/environmentextension.cpp
+++ b/src/lib/corelib/jsextensions/environmentextension.cpp
@@ -127,7 +127,8 @@ QScriptValue EnvironmentExtension::js_currentEnv(QScriptContext *context, QScrip
if (!procenv)
procenv = &env;
QScriptValue envObject = engine->newObject();
- for (const QString &key : procenv->keys()) {
+ const auto keys = procenv->keys();
+ for (const QString &key : keys) {
const QString keyName = HostOsInfo::isWindowsHost() ? key.toUpper() : key;
envObject.setProperty(keyName, QScriptValue(procenv->value(key)));
}
diff --git a/src/lib/corelib/language/astimportshandler.cpp b/src/lib/corelib/language/astimportshandler.cpp
index 960af4cda..d634af7e4 100644
--- a/src/lib/corelib/language/astimportshandler.cpp
+++ b/src/lib/corelib/language/astimportshandler.cpp
@@ -69,7 +69,8 @@ ASTImportsHandler::ASTImportsHandler(ItemReaderVisitorState &visitorState, Logge
void ASTImportsHandler::handleImports(const QbsQmlJS::AST::UiImportList *uiImportList)
{
- for (const QString &searchPath : m_file->searchPaths())
+ const auto searchPaths = m_file->searchPaths();
+ for (const QString &searchPath : searchPaths)
collectPrototypes(searchPath + QStringLiteral("/imports"), QString());
// files in the same directory are available as prototypes
@@ -191,7 +192,8 @@ void ASTImportsHandler::handleImport(const QbsQmlJS::AST::UiImport *import, bool
? QStringLiteral("qbs/base") : importUri.join(QDir::separator());
bool found = m_typeNameToFile.contains(importUri);
if (!found) {
- for (const QString &searchPath : m_file->searchPaths()) {
+ const auto searchPaths = m_file->searchPaths();
+ for (const QString &searchPath : searchPaths) {
const QFileInfo fi(FileInfo::resolvePath(
FileInfo::resolvePath(searchPath,
StringConstants::importsDir()),
diff --git a/src/lib/corelib/language/builtindeclarations.cpp b/src/lib/corelib/language/builtindeclarations.cpp
index ee1b2d56e..68355df51 100644
--- a/src/lib/corelib/language/builtindeclarations.cpp
+++ b/src/lib/corelib/language/builtindeclarations.cpp
@@ -150,7 +150,8 @@ QStringList BuiltinDeclarations::argumentNamesForScriptFunction(ItemType itemTyp
const QString &scriptName) const
{
const ItemDeclaration itemDecl = declarationsForType(itemType);
- for (const PropertyDeclaration &propDecl : itemDecl.properties()) {
+ const auto properties = itemDecl.properties();
+ for (const PropertyDeclaration &propDecl : properties) {
if (propDecl.name() == scriptName)
return propDecl.functionArgumentNames();
}
diff --git a/src/lib/corelib/language/item.cpp b/src/lib/corelib/language/item.cpp
index 39dc39370..9f754bdd7 100644
--- a/src/lib/corelib/language/item.cpp
+++ b/src/lib/corelib/language/item.cpp
@@ -249,7 +249,8 @@ bool Item::isPresentModule() const
void Item::setupForBuiltinType(Logger &logger)
{
const BuiltinDeclarations &builtins = BuiltinDeclarations::instance();
- for (const PropertyDeclaration &pd : builtins.declarationsForType(type()).properties()) {
+ const auto properties = builtins.declarationsForType(type()).properties();
+ for (const PropertyDeclaration &pd : properties) {
m_propertyDeclarations.insert(pd.name(), pd);
const ValuePtr value = m_properties.value(pd.name());
if (!value) {
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index d7fb9b75d..f8206031b 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -294,7 +294,8 @@ ModuleLoaderResult ModuleLoader::load(const SetupProjectParameters &parameters)
m_probesEncountered = m_probesRun = m_probesCachedCurrent = m_probesCachedOld = 0;
m_settings.reset(new Settings(parameters.settingsDirectory()));
- for (const QString &key : m_parameters.overriddenValues().keys()) {
+ const auto keys = m_parameters.overriddenValues().keys();
+ for (const QString &key : keys) {
static const QStringList prefixes({ StringConstants::projectPrefix(),
QStringLiteral("projects"),
QStringLiteral("products"), QStringLiteral("modules"),
@@ -695,7 +696,7 @@ void ModuleLoader::handleProject(ModuleLoaderResult *loadResult,
if (child->type() == ItemType::Product)
multiplexedProducts << multiplexProductItem(&dummyProductContext, child);
}
- for (Item * const additionalProductItem : multiplexedProducts)
+ for (Item * const additionalProductItem : qAsConst(multiplexedProducts))
Item::addChild(projectItem, additionalProductItem);
resolveProbes(&dummyProductContext, projectItem);
@@ -2653,7 +2654,7 @@ void ModuleLoader::resolveDependsItem(DependsContext *dependsContext, Item *pare
profiles.push_back(QString());
}
for (const QString &profile : qAsConst(profiles)) {
- for (const QString &multiplexId : multiplexConfigurationIds) {
+ for (const QString &multiplexId : qAsConst(multiplexConfigurationIds)) {
ModuleLoaderResult::ProductInfo::Dependency dependency;
dependency.name = moduleName.toString();
dependency.profile = profile;
@@ -3405,7 +3406,8 @@ void ModuleLoader::instantiateModule(ProductContext *productContext, Item *expor
// create ids from from the prototype in the instance
if (modulePrototype->file()->idScope()) {
- for (Item * const itemWithId : collectItemsWithId(modulePrototype)) {
+ const auto items = collectItemsWithId(modulePrototype);
+ for (Item * const itemWithId : items) {
Item *idProto = itemWithId;
Item *idInstance = prototypeInstanceMap.value(idProto);
QBS_ASSERT(idInstance, continue);
@@ -4044,7 +4046,8 @@ void ModuleLoader::handleProductError(const ErrorInfo &error,
}
}
}
- for (const ErrorItem &ei : error.items())
+ const auto errorItems = error.items();
+ for (const ErrorItem &ei : errorItems)
productContext->info.delayedError.append(ei.description(), ei.codeLocation());
productContext->project->result->productInfos.insert(productContext->item,
productContext->info);
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 0bbf8d37a..4e073a36a 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -826,7 +826,7 @@ void ProjectResolver::resolveGroupFully(Item *item, ProjectResolver::ProjectCont
&m_productContext->sourceArtifactLocations, &fileError);
}
- for (const QString &fileName : files) {
+ for (const QString &fileName : qAsConst(files)) {
createSourceArtifact(m_productContext->product, fileName, group, false, filesLocation,
&m_productContext->sourceArtifactLocations, &fileError);
}
@@ -1022,7 +1022,8 @@ void ProjectResolver::setupExportedProperties(const Item *item, const QString &n
const ItemDeclaration itemDecl
= BuiltinDeclarations::instance().declarationsForType(item->type());
PropertyDeclaration propertyDecl;
- for (const PropertyDeclaration &decl : itemDecl.properties()) {
+ const auto itemProperties = itemDecl.properties();
+ for (const PropertyDeclaration &decl : itemProperties) {
if (decl.name() == it.key()) {
propertyDecl = decl;
exportedProperty.isBuiltin = true;
@@ -1109,7 +1110,8 @@ void ProjectResolver::resolveExport(Item *exportItem, ProjectContext *)
exportItem->file()->content());
}
}
- for (const QString &builtinImport: JsExtensions::extensionNames()) {
+ const auto builtInImports = JsExtensions::extensionNames();
+ for (const QString &builtinImport: builtInImports) {
if (usesImport(exportedModule, builtinImport))
exportedModule.importStatements << QStringLiteral("import qbs.") + builtinImport;
}
diff --git a/src/lib/corelib/logging/logger.cpp b/src/lib/corelib/logging/logger.cpp
index c3b11094d..71ca6a96c 100644
--- a/src/lib/corelib/logging/logger.cpp
+++ b/src/lib/corelib/logging/logger.cpp
@@ -165,7 +165,8 @@ LogWriter operator<<(LogWriter w, const QVariant &variant)
QString str = QLatin1String(variant.typeName()) + QLatin1Char('(');
if (variant.type() == QVariant::List) {
bool firstLoop = true;
- for (const QVariant &item : variant.toList()) {
+ const auto list = variant.toList();
+ for (const QVariant &item : list) {
str += item.toString();
if (firstLoop)
firstLoop = false;
diff --git a/src/lib/corelib/tools/applecodesignutils.cpp b/src/lib/corelib/tools/applecodesignutils.cpp
index 67c4f5238..feae266bf 100644
--- a/src/lib/corelib/tools/applecodesignutils.cpp
+++ b/src/lib/corelib/tools/applecodesignutils.cpp
@@ -80,7 +80,8 @@ QVariantMap certificateInfo(const QByteArray &data)
// Also potentially useful, but these are for signing pkgs which aren't used here
// 1.2.840.113635.100.4.9 - 3rd Party Mac Developer Installer: <name>
// 1.2.840.113635.100.4.13 - Developer ID Installer: <name>
- for (const auto &extension : cert.extensions()) {
+ const auto extensions = cert.extensions();
+ for (const auto &extension : extensions) {
if (extension.name() == QStringLiteral("extendedKeyUsage")) {
if (!extension.value().toStringList().contains(QStringLiteral("Code Signing")))
return {};
@@ -89,7 +90,8 @@ QVariantMap certificateInfo(const QByteArray &data)
const auto subjectInfo = [](const QSslCertificate &cert) {
QVariantMap map;
- for (const auto &attr : cert.subjectInfoAttributes())
+ const auto attributes = cert.subjectInfoAttributes();
+ for (const auto &attr : attributes)
map.insert(QString::fromUtf8(attr), cert.subjectInfo(attr).front());
return map;
};
diff --git a/src/lib/corelib/tools/fileinfo.cpp b/src/lib/corelib/tools/fileinfo.cpp
index cec6b2660..8b0eedc27 100644
--- a/src/lib/corelib/tools/fileinfo.cpp
+++ b/src/lib/corelib/tools/fileinfo.cpp
@@ -404,8 +404,9 @@ bool removeFileRecursion(const QFileInfo &f, QString *errorMessage)
const QDir dir(f.absoluteFilePath());
// QDir::System is needed for broken symlinks.
- for (const QFileInfo &fi : dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot
- | QDir::Hidden | QDir::System))
+ const auto fileInfos = dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot
+ | QDir::Hidden | QDir::System);
+ for (const QFileInfo &fi : fileInfos)
removeFileRecursion(fi, errorMessage);
QDir parent = f.absoluteDir();
if (!parent.rmdir(f.fileName())) {
diff --git a/src/lib/corelib/tools/jsliterals.cpp b/src/lib/corelib/tools/jsliterals.cpp
index bf9720493..74328006c 100644
--- a/src/lib/corelib/tools/jsliterals.cpp
+++ b/src/lib/corelib/tools/jsliterals.cpp
@@ -77,7 +77,8 @@ QString toJSLiteral(const QVariant &val)
return Internal::StringConstants::undefinedValue();
if (val.type() == QVariant::List || val.type() == QVariant::StringList) {
QString res;
- for (const QVariant &child : val.toList()) {
+ const auto list = val.toList();
+ for (const QVariant &child : list) {
if (res.length()) res.append(QLatin1String(", "));
res.append(toJSLiteral(child));
}
diff --git a/src/lib/corelib/tools/msvcinfo.cpp b/src/lib/corelib/tools/msvcinfo.cpp
index f51ba8ba2..cbec7b457 100644
--- a/src/lib/corelib/tools/msvcinfo.cpp
+++ b/src/lib/corelib/tools/msvcinfo.cpp
@@ -70,7 +70,8 @@ public:
TemporaryEnvChanger(const QProcessEnvironment &envChanges) : m_locker(envMutex)
{
QProcessEnvironment currentEnv = QProcessEnvironment::systemEnvironment();
- for (const QString &key : envChanges.keys()) {
+ const auto keys = envChanges.keys();
+ for (const QString &key : keys) {
m_changesToRestore.insert(key, currentEnv.value(key));
qputenv(qPrintable(key), qPrintable(envChanges.value(key)));
}
@@ -78,7 +79,8 @@ public:
~TemporaryEnvChanger()
{
- for (const QString &key : m_changesToRestore.keys())
+ const auto keys = m_changesToRestore.keys();
+ for (const QString &key : keys)
qputenv(qPrintable(key), qPrintable(m_changesToRestore.value(key)));
}
diff --git a/src/lib/corelib/tools/preferences.cpp b/src/lib/corelib/tools/preferences.cpp
index ca3fe8378..644c2722f 100644
--- a/src/lib/corelib/tools/preferences.cpp
+++ b/src/lib/corelib/tools/preferences.cpp
@@ -131,14 +131,16 @@ JobLimits Preferences::jobLimits() const
{
const QString prefix = QStringLiteral("preferences.jobLimit");
JobLimits limits;
- for (const QString &key : m_settings->allKeysWithPrefix(prefix, Settings::allScopes())) {
+ const auto keys = m_settings->allKeysWithPrefix(prefix, Settings::allScopes());
+ for (const QString &key : keys) {
limits.setJobLimit(key, m_settings->value(prefix + QLatin1Char('.') + key,
Settings::allScopes()).toInt());
}
const QString fullPrefix = prefix + QLatin1Char('.');
if (!m_profile.isEmpty()) {
Profile p(m_profile, m_settings, m_profileContents);
- for (const QString &key : p.allKeys(Profile::KeySelectionRecursive)) {
+ const auto keys = p.allKeys(Profile::KeySelectionRecursive);
+ for (const QString &key : keys) {
if (!key.startsWith(fullPrefix))
continue;
const QString jobPool = key.mid(fullPrefix.size());
diff --git a/src/lib/corelib/tools/settingscreator.cpp b/src/lib/corelib/tools/settingscreator.cpp
index 8479a67dc..cddc3b93d 100644
--- a/src/lib/corelib/tools/settingscreator.cpp
+++ b/src/lib/corelib/tools/settingscreator.cpp
@@ -102,7 +102,8 @@ void SettingsCreator::migrate()
// that's only preferences.qbsSearchPaths as written by libqtprofilesetup, but we don't want
// to hardcode that here.
m_settings.reset(new QSettings(m_newSettingsFilePath, format()));
- for (const QString &key : m_settings->allKeys()) {
+ const auto allKeys = m_settings->allKeys();
+ for (const QString &key : allKeys) {
QVariant v = m_settings->value(key);
if (v.type() == QVariant::String) {
QString s = v.toString();
diff --git a/src/lib/corelib/tools/settingsmodel.cpp b/src/lib/corelib/tools/settingsmodel.cpp
index 4a90773eb..d67f1da5c 100644
--- a/src/lib/corelib/tools/settingsmodel.cpp
+++ b/src/lib/corelib/tools/settingsmodel.cpp
@@ -327,7 +327,8 @@ void SettingsModel::SettingsModelPrivate::readSettings()
{
qDeleteAll(rootNode.children);
rootNode.children.clear();
- for (const QString &topLevelKey : settings->directChildren(QString(), scope()))
+ const auto topLevelKeys = settings->directChildren(QString(), scope());
+ for (const QString &topLevelKey : topLevelKeys)
addNodeFromSettings(&rootNode, topLevelKey);
for (QVariantMap::ConstIterator it = additionalProperties.constBegin();
it != additionalProperties.constEnd(); ++it) {
@@ -353,7 +354,8 @@ void SettingsModel::SettingsModelPrivate::addNodeFromSettings(Node *parentNode,
= fullyQualifiedName.mid(fullyQualifiedName.lastIndexOf(QLatin1Char('.')) + 1);
Node * const node = createNode(parentNode, nodeName);
node->value = settingsValueToRepresentation(settings->value(fullyQualifiedName, scope()));
- for (const QString &childKey : settings->directChildren(fullyQualifiedName, scope()))
+ const auto childKeys = settings->directChildren(fullyQualifiedName, scope());
+ for (const QString &childKey : childKeys)
addNodeFromSettings(node, fullyQualifiedName + QLatin1Char('.') + childKey);
dirty = true;
}
diff --git a/src/lib/corelib/tools/vsenvironmentdetector.cpp b/src/lib/corelib/tools/vsenvironmentdetector.cpp
index b91a8ff74..869423950 100644
--- a/src/lib/corelib/tools/vsenvironmentdetector.cpp
+++ b/src/lib/corelib/tools/vsenvironmentdetector.cpp
@@ -201,9 +201,12 @@ static QString vcArchitecture(const MSVC *msvc)
if (msvc->architecture == StringConstants::x86_64Arch())
vcArch = StringConstants::amd64Arch();
- for (const QString &hostPrefix :
- QStringList({StringConstants::x86Arch(), QStringLiteral("amd64_"),
- QStringLiteral("x86_")})) {
+ const QString hostPrefixes[] = {
+ StringConstants::x86Arch(),
+ QStringLiteral("amd64_"),
+ QStringLiteral("x86_")
+ };
+ for (const QString &hostPrefix : hostPrefixes) {
if (QFile::exists(msvc->clPathForArchitecture(hostPrefix + vcArch))) {
vcArch.prepend(hostPrefix);
break;
@@ -237,7 +240,8 @@ void VsEnvironmentDetector::parseBatOutput(const QByteArray &output, std::vector
{
QString arch;
QProcessEnvironment *targetEnv = nullptr;
- for (QByteArray line : output.split('\n')) {
+ const auto lines = output.split('\n');
+ for (QByteArray line : lines) {
line = line.trimmed();
if (line.isEmpty())
continue;
diff --git a/src/plugins/generator/clangcompilationdb/clangcompilationdbgenerator.cpp b/src/plugins/generator/clangcompilationdb/clangcompilationdbgenerator.cpp
index 0f94f2b2b..bc13ec480 100644
--- a/src/plugins/generator/clangcompilationdb/clangcompilationdbgenerator.cpp
+++ b/src/plugins/generator/clangcompilationdb/clangcompilationdbgenerator.cpp
@@ -69,14 +69,18 @@ QString ClangCompilationDatabaseGenerator::generatorName() const
void ClangCompilationDatabaseGenerator::generate()
{
- for (const Project &theProject : project().projects.values()) {
+ const auto projects = project().projects.values();
+ for (const Project &theProject : projects) {
QJsonArray database;
const ProjectData projectData = theProject.projectData();
const QString buildDir = projectData.buildDirectory();
- for (const ProductData &productData : projectData.allProducts()) {
- for (const GroupData &groupData : productData.groups()) {
- for (const ArtifactData &sourceArtifact : groupData.allSourceArtifacts()) {
+ const auto products = projectData.allProducts();
+ for (const ProductData &productData : products) {
+ const auto groups = productData.groups();
+ for (const GroupData &groupData : groups) {
+ const auto sourceArtifacts = groupData.allSourceArtifacts();
+ for (const ArtifactData &sourceArtifact : sourceArtifacts) {
if (!hasValidInputFileTag(sourceArtifact.fileTags()))
continue;
diff --git a/src/plugins/generator/makefilegenerator/makefilegenerator.cpp b/src/plugins/generator/makefilegenerator/makefilegenerator.cpp
index f186b5244..24aff5a33 100644
--- a/src/plugins/generator/makefilegenerator/makefilegenerator.cpp
+++ b/src/plugins/generator/makefilegenerator/makefilegenerator.cpp
@@ -156,7 +156,8 @@ static QString removeCommand()
void qbs::MakefileGenerator::generate()
{
- for (const Project &theProject : project().projects.values()) {
+ const auto projects = project().projects.values();
+ for (const Project &theProject : projects) {
const QString makefileFilePath = theProject.projectData().buildDirectory()
+ QLatin1String("/Makefile");
QFile makefile(makefileFilePath);
@@ -241,16 +242,19 @@ void qbs::MakefileGenerator::generate()
allDefaultTargets.push_back(productTarget);
allTargets.push_back(productTarget);
stream << productTarget << ':';
- for (const ArtifactData &ta : productData.targetArtifacts())
+ const auto targetArtifacts = productData.targetArtifacts();
+ for (const ArtifactData &ta : targetArtifacts)
stream << ' ' << transformedOutputFilePath(ta);
stream << '\n';
for (const TransformerData &transformerData : productTransformerData) {
stream << transformedOutputFilePath(transformerData.outputs().constFirst()) << ":";
- for (const ArtifactData &input : transformerData.inputs())
+ const auto inputs = transformerData.inputs();
+ for (const ArtifactData &input : inputs)
stream << ' ' << transformedArtifactFilePath(input);
stream << '\n';
Set<QString> createdDirs;
- for (const ArtifactData &output : transformerData.outputs()) {
+ const auto outputs = transformerData.outputs();
+ for (const ArtifactData &output : outputs) {
const QString outputDir = QFileInfo(output.filePath()).path();
if (createdDirs.insert(outputDir).second)
stream << "\t" << mkdirCmdLine(QDir::toNativeSeparators(
@@ -258,7 +262,8 @@ void qbs::MakefileGenerator::generate()
<< '\n';
}
bool processCommandEncountered = false;
- for (const RuleCommand &command : transformerData.commands()) {
+ const auto commands = transformerData.commands();
+ for (const RuleCommand &command : commands) {
if (command.type() == RuleCommand::JavaScriptCommandType) {
jsCommandsEncountered = true;
continue;
@@ -268,7 +273,8 @@ void qbs::MakefileGenerator::generate()
quote(bruteForcePathReplace(command.executable(), srcDir,
buildDir, installRoot)));
// TODO: Optionally use environment?
- for (const QString &arg : command.arguments()) {
+ const auto args = command.arguments();
+ for (const QString &arg : args) {
stream << ' '
<< quote(bruteForcePathReplace(arg, srcDir, buildDir, installRoot));
}
@@ -279,13 +285,15 @@ void qbs::MakefileGenerator::generate()
<< transformedOutputFilePath(transformerData.outputs().at(i-1)) << '\n';
}
if (!processCommandEncountered && builtByDefault) {
- for (const ArtifactData &output : transformerData.outputs())
+ const auto outputs = transformerData.outputs();
+ for (const ArtifactData &output : outputs)
filesCreatedByJsCommands.push_back(output.filePath());
}
}
stream << "install-" << productTarget << ": " << productTarget << '\n';
Set<QString> createdDirs;
- for (const ArtifactData &artifact : productData.installableArtifacts()) {
+ const auto installableArtifacts = productData.installableArtifacts();
+ for (const ArtifactData &artifact : installableArtifacts) {
const QString &outputDir = artifact.installData().localInstallDir();
if (outputDir.contains(QLatin1Char(' '))) {
logger().qbsWarning() << Tr::tr("Skipping installation of '%1', because "
@@ -311,7 +319,8 @@ void qbs::MakefileGenerator::generate()
<< transformedInputFilePath << ' ' << transformedOutputDir << '\n';
}
stream << "clean-" << productTarget << ":\n";
- for (const ArtifactData &artifact : productData.generatedArtifacts()) {
+ const auto generatedArtifacts = productData.generatedArtifacts();
+ for (const ArtifactData &artifact : generatedArtifacts) {
const QFileInfo fileInfo(artifact.filePath());
const QString transformedFilePath = QDir::toNativeSeparators(
prefixifiedBuildDirPath(fileInfo.path())
@@ -324,15 +333,15 @@ void qbs::MakefileGenerator::generate()
}
stream << "all:";
- for (const QString &target : allDefaultTargets)
+ for (const QString &target : qAsConst(allDefaultTargets))
stream << ' ' << target;
stream << '\n';
stream << "install:";
- for (const QString &target : allDefaultTargets)
+ for (const QString &target : qAsConst(allDefaultTargets))
stream << ' ' << "install-" << target;
stream << '\n';
stream << "clean:";
- for (const QString &target : allTargets)
+ for (const QString &target : qAsConst(allTargets))
stream << ' ' << "clean-" << target;
stream << '\n';
if (!filesCreatedByJsCommands.empty()) {
diff --git a/src/plugins/generator/visualstudio/io/visualstudiosolutionwriter.cpp b/src/plugins/generator/visualstudio/io/visualstudiosolutionwriter.cpp
index 4c0495316..07e8d81b8 100644
--- a/src/plugins/generator/visualstudio/io/visualstudiosolutionwriter.cpp
+++ b/src/plugins/generator/visualstudio/io/visualstudiosolutionwriter.cpp
@@ -87,7 +87,8 @@ bool VisualStudioSolutionWriter::write(const VisualStudioSolution *solution)
<< solution->versionInfo().version().majorVersion()
<< u8"\n";
- for (const auto &project : solution->fileProjects()) {
+ const auto fileProjects = solution->fileProjects();
+ for (const auto &project : fileProjects) {
auto projectFilePath = project->filePath().toStdString();
// Try to make the project file path relative to the
@@ -126,7 +127,8 @@ bool VisualStudioSolutionWriter::write(const VisualStudioSolution *solution)
out << u8"EndProject\n";
}
- for (const auto &project : solution->folderProjects()) {
+ const auto folderProjects = solution->folderProjects();
+ for (const auto &project : folderProjects) {
out << u8"Project(\""
<< project->projectTypeGuid().toString().toStdString()
<< u8"\") = \""
@@ -142,7 +144,8 @@ bool VisualStudioSolutionWriter::write(const VisualStudioSolution *solution)
out << u8"Global\n";
- for (const auto &globalSection : solution->globalSections()) {
+ const auto globalSections = solution->globalSections();
+ for (const auto &globalSection : globalSections) {
out << u8"\tGlobalSection("
<< globalSection->name().toStdString()
<< u8") = "
diff --git a/src/plugins/generator/visualstudio/msbuildfiltersproject.cpp b/src/plugins/generator/visualstudio/msbuildfiltersproject.cpp
index 7d633ca44..54a1dfb5e 100644
--- a/src/plugins/generator/visualstudio/msbuildfiltersproject.cpp
+++ b/src/plugins/generator/visualstudio/msbuildfiltersproject.cpp
@@ -110,8 +110,10 @@ MSBuildFiltersProject::MSBuildFiltersProject(const GeneratableProductData &produ
}
Internal::Set<QString> allFiles;
- for (const auto &productData : product.data.values()) {
- for (const auto &groupData : productData.groups())
+ const auto productDatas = product.data.values();
+ for (const auto &productData : productDatas) {
+ const auto groups = productData.groups();
+ for (const auto &groupData : groups)
if (groupData.isEnabled())
allFiles.unite(Internal::Set<QString>::fromList(groupData.allFilePaths()));
}
diff --git a/src/plugins/generator/visualstudio/msbuildqbsproductproject.cpp b/src/plugins/generator/visualstudio/msbuildqbsproductproject.cpp
index ed41dfb33..2d679ceb1 100644
--- a/src/plugins/generator/visualstudio/msbuildqbsproductproject.cpp
+++ b/src/plugins/generator/visualstudio/msbuildqbsproductproject.cpp
@@ -176,7 +176,8 @@ void MSBuildQbsProductProject::addConfiguration(const GeneratableProject &projec
.runEnvironment();
if (!env.isEmpty()) {
const auto systemEnv = QProcessEnvironment::systemEnvironment();
- for (const auto &key : systemEnv.keys()) {
+ const auto keys = systemEnv.keys();
+ for (const auto &key : keys) {
if (!env.contains(key))
continue;
@@ -364,8 +365,10 @@ void MSBuildQbsProductProject::addFiles(const GeneratableProject &project,
QMapIterator<QString, qbs::ProductData> productDataIt(product.data);
while (productDataIt.hasNext()) {
productDataIt.next();
- for (const auto &group : productDataIt.value().groups()) {
- for (const auto &sourceArtifact : group.allSourceArtifacts()) {
+ const auto groups = productDataIt.value().groups();
+ for (const auto &group : groups) {
+ const auto sourceArtifacts = group.allSourceArtifacts();
+ for (const auto &sourceArtifact : sourceArtifacts) {
const auto filePath = sourceArtifact.filePath();
if (sourceFileNodes.find(filePath) == sourceFileNodes.end()) {
sourceFileNodes.insert({
diff --git a/src/plugins/generator/visualstudio/solution/visualstudiosolution.cpp b/src/plugins/generator/visualstudio/solution/visualstudiosolution.cpp
index fbd6a3848..c09ef1f4f 100644
--- a/src/plugins/generator/visualstudio/solution/visualstudiosolution.cpp
+++ b/src/plugins/generator/visualstudio/solution/visualstudiosolution.cpp
@@ -74,7 +74,7 @@ QList<IVisualStudioSolutionProject *> VisualStudioSolution::projects() const
QList<VisualStudioSolutionFileProject *> VisualStudioSolution::fileProjects() const
{
QList<VisualStudioSolutionFileProject *> list;
- for (const auto &project : d->projects)
+ for (const auto &project : qAsConst(d->projects))
if (auto fileProject = qobject_cast<VisualStudioSolutionFileProject *>(project))
list.push_back(fileProject);
return list;
@@ -83,7 +83,7 @@ QList<VisualStudioSolutionFileProject *> VisualStudioSolution::fileProjects() co
QList<VisualStudioSolutionFolderProject *> VisualStudioSolution::folderProjects() const
{
QList<VisualStudioSolutionFolderProject *> list;
- for (const auto &project : d->projects)
+ for (const auto &project : qAsConst(d->projects))
if (auto folderProject = qobject_cast<VisualStudioSolutionFolderProject *>(project))
list.push_back(folderProject);
return list;
diff --git a/src/plugins/generator/visualstudio/visualstudiogenerator.cpp b/src/plugins/generator/visualstudio/visualstudiogenerator.cpp
index 47f0363a6..04fc5a52e 100644
--- a/src/plugins/generator/visualstudio/visualstudiogenerator.cpp
+++ b/src/plugins/generator/visualstudio/visualstudiogenerator.cpp
@@ -130,7 +130,8 @@ public:
const GeneratableProductData &productData) override {
Q_UNUSED(project);
Q_UNUSED(projectData);
- for (const auto &dep : productData.dependencies()) {
+ const auto dependencies = productData.dependencies();
+ for (const auto &dep : dependencies) {
generator->d->solution->addDependency(
generator->d->solutionProjects.value(productData.name()),
generator->d->solutionProjects.value(dep));
@@ -190,7 +191,7 @@ void VisualStudioGenerator::addPropertySheets(const GeneratableProject &project)
void VisualStudioGenerator::addPropertySheets(
const std::shared_ptr<MSBuildTargetProject> &targetProject)
{
- for (const auto &pair : d->propertySheetNames) {
+ for (const auto &pair : qAsConst(d->propertySheetNames)) {
targetProject->appendPropertySheet(
QStringLiteral("$(SolutionDir)\\") + pair.first, pair.second);
}
@@ -221,7 +222,8 @@ static void addDefaultGlobalSections(const GeneratableProject &topLevelProject,
QStringLiteral("ProjectConfigurationPlatforms"), solution);
solution->appendGlobalSection(projectConfigurationPlatformsSection);
projectConfigurationPlatformsSection->setPost(true);
- for (const auto project : solution->projects()) {
+ const auto projects = solution->projects();
+ for (const auto project : projects) {
for (const auto &qbsProject : topLevelProject.projects) {
projectConfigurationPlatformsSection->appendProperty(
QStringLiteral("%1.%2.ActiveCfg")
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index 58150150a..59089937a 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -2847,7 +2847,8 @@ void TestApi::toolInModule()
const QList<qbs::ProductData> products = projectData.products();
QCOMPARE(products.size(), 1);
const qbs::ProductData product = products.front();
- for (const qbs::GroupData &group : product.groups())
+ const auto groups = product.groups();
+ for (const qbs::GroupData &group : groups)
QVERIFY(group.name() != "thetool binary");
const std::unique_ptr<qbs::BuildJob> buildJob(setupJob->project()
.buildAllProducts(qbs::BuildOptions()));
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 8dd79528b..9e2e320c7 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -6093,14 +6093,14 @@ static bool haveInnoSetup(const Profile &profile)
QStringList paths = QProcessEnvironment::systemEnvironment().value("PATH")
.split(HostOsInfo::pathListSeparator(), QString::SkipEmptyParts);
- for (const QString &key : regKeys) {
+ for (const QString &key : qAsConst(regKeys)) {
QSettings settings(key, QSettings::NativeFormat);
QString str = settings.value(QStringLiteral("InstallLocation")).toString();
if (!str.isEmpty())
paths.prepend(str);
}
- for (const QString &path : paths) {
+ for (const QString &path : qAsConst(paths)) {
if (regularFileExists(QDir::fromNativeSeparators(path) +
HostOsInfo::appendExecutableSuffix(QStringLiteral("/ISCC"))))
return true;
diff --git a/tests/auto/blackbox/tst_blackboxapple.cpp b/tests/auto/blackbox/tst_blackboxapple.cpp
index 7cbc07b95..d9cabe270 100644
--- a/tests/auto/blackbox/tst_blackboxapple.cpp
+++ b/tests/auto/blackbox/tst_blackboxapple.cpp
@@ -749,7 +749,8 @@ void TestBlackboxApple::xcode()
QVERIFY2(xcodebuildShowSdks.waitForStarted(), qPrintable(xcodebuildShowSdks.errorString()));
QVERIFY2(xcodebuildShowSdks.waitForFinished(), qPrintable(xcodebuildShowSdks.errorString()));
QVERIFY2(xcodebuildShowSdks.exitCode() == 0, qPrintable(xcodebuildShowSdks.readAllStandardError().constData()));
- for (const QString &line : QString::fromLocal8Bit(xcodebuildShowSdks.readAllStandardOutput().trimmed()).split('\n', QString::SkipEmptyParts)) {
+ const auto lines = QString::fromLocal8Bit(xcodebuildShowSdks.readAllStandardOutput().trimmed()).split('\n', QString::SkipEmptyParts);
+ for (const QString &line : lines) {
static const std::regex regexp("^.+\\s+\\-sdk\\s+([a-z]+)([0-9]+\\.[0-9]+)$");
const auto ln = line.toStdString();
std::smatch match;
diff --git a/tests/auto/blackbox/tst_clangdb.cpp b/tests/auto/blackbox/tst_clangdb.cpp
index 6a4072dd8..3a6dd2d92 100644
--- a/tests/auto/blackbox/tst_clangdb.cpp
+++ b/tests/auto/blackbox/tst_clangdb.cpp
@@ -111,7 +111,8 @@ void TestClangDb::ensureBuildTreeCreated()
if (m_qbsStdout.contains("is msvc") || m_qbsStdout.contains("is mingw")) {
sanitizeOutput(&m_qbsStdout);
- for (const auto &line : m_qbsStdout.split('\n')) {
+ const auto lines = m_qbsStdout.split('\n');
+ for (const auto &line : lines) {
static const QByteArray includeEnv = "INCLUDE=";
static const QByteArray libEnv = "LIB=";
static const QByteArray pathEnv = "PATH=";