diff options
author | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-02-19 23:13:54 +0100 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-03-06 18:13:43 +0000 |
commit | f3056e49c3b2443c5dd9abf78c46381fdbbbd731 (patch) | |
tree | d435db1321f25287eda1481ba16b9d3cfab4b40a /src | |
parent | 967d67664b53169bf958dc1ea61ab014d16c56e6 (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>
Diffstat (limited to 'src')
37 files changed, 183 insertions, 104 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 ¶meters) 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") |