aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/collidingmice/mouse.cpp4
-rw-r--r--src/app/config/configcommandexecutor.cpp16
-rw-r--r--src/app/qbs-setup-qt/main.cpp4
-rw-r--r--src/app/qbs-setup-qt/setupqt.cpp21
-rw-r--r--src/app/qbs-setup-toolchains/msvcprobe.cpp30
-rw-r--r--src/app/qbs-setup-toolchains/probe.cpp15
-rw-r--r--src/app/qbs/commandlinefrontend.cpp29
-rw-r--r--src/app/qbs/parser/commandlineoption.cpp5
-rw-r--r--src/app/qbs/parser/commandlineparser.cpp18
-rw-r--r--src/app/qbs/parser/parsercommand.cpp9
-rw-r--r--src/app/qbs/qbstool.cpp4
-rw-r--r--src/app/qbs/status.cpp25
-rw-r--r--src/lib/corelib/buildgraph/projectbuilddata.cpp8
-rw-r--r--src/lib/qtprofilesetup/qtmoduleinfo.cpp15
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.cpp6
-rw-r--r--tests/auto/api/tst_api.cpp55
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp30
-rw-r--r--tests/auto/blackbox/tst_blackboxbase.cpp4
-rw-r--r--tests/auto/blackbox/tst_blackboxjava.cpp5
-rw-r--r--tests/auto/language/tst_language.cpp22
-rw-r--r--tests/auto/tools/tst_tools.cpp2
-rw-r--r--tests/benchmarker/benchmarker.cpp6
-rw-r--r--tests/benchmarker/commandlineparser.cpp6
-rw-r--r--tests/fuzzy-test/fuzzytester.cpp5
24 files changed, 201 insertions, 143 deletions
diff --git a/examples/collidingmice/mouse.cpp b/examples/collidingmice/mouse.cpp
index c3373501c..8dbe28c49 100644
--- a/examples/collidingmice/mouse.cpp
+++ b/examples/collidingmice/mouse.cpp
@@ -162,11 +162,11 @@ void Mouse::advance(int step)
// Try not to crash with any other mice
//! [7]
- QList<QGraphicsItem *> dangerMice = scene()->items(QPolygonF()
+ const QList<QGraphicsItem *> dangerMice = scene()->items(QPolygonF()
<< mapToScene(0, 0)
<< mapToScene(-30, -50)
<< mapToScene(30, -50));
- foreach (QGraphicsItem *item, dangerMice) {
+ for (QGraphicsItem *item : dangerMice) {
if (item == this)
continue;
diff --git a/src/app/config/configcommandexecutor.cpp b/src/app/config/configcommandexecutor.cpp
index c95b43f18..3169a6f24 100644
--- a/src/app/config/configcommandexecutor.cpp
+++ b/src/app/config/configcommandexecutor.cpp
@@ -66,7 +66,7 @@ void ConfigCommandExecutor::execute(const ConfigCommand &command)
setValue(command.varNames.front(), command.varValue);
break;
case ConfigCommand::CfgUnset:
- foreach (const QString &varName, command.varNames)
+ for (const QString &varName : command.varNames)
m_settings->remove(varName);
break;
case ConfigCommand::CfgExport:
@@ -94,14 +94,16 @@ void ConfigCommandExecutor::setValue(const QString &key, const QString &rawInput
void ConfigCommandExecutor::printSettings(const ConfigCommand &command)
{
if (command.varNames.empty()) {
- foreach (const QString &key, m_settings->allKeys())
+ const auto keys = m_settings->allKeys();
+ for (const QString &key : keys)
printOneSetting(key);
} else {
- foreach (const QString &parentKey, command.varNames) {
+ for (const QString &parentKey : command.varNames) {
if (m_settings->value(parentKey).isValid()) { // Key is a leaf.
printOneSetting(parentKey);
} else { // Key is a node.
- foreach (const QString &key, m_settings->allKeysWithPrefix(parentKey))
+ const auto keys = m_settings->allKeysWithPrefix(parentKey);
+ for (const QString &key : keys)
printOneSetting(parentKey + QLatin1Char('.') + key);
}
}
@@ -123,7 +125,8 @@ void ConfigCommandExecutor::exportSettings(const QString &filename)
}
QTextStream stream(&file);
stream.setCodec("UTF-8");
- foreach (const QString &key, m_settings->allKeys())
+ const auto keys = m_settings->allKeys();
+ for (const QString &key : keys)
stream << key << ": " << qbs::settingsValueToRepresentation(m_settings->value(key)) << endl;
}
@@ -135,7 +138,8 @@ void ConfigCommandExecutor::importSettings(const QString &filename)
.arg(QDir::toNativeSeparators(filename), file.errorString()));
}
// Remove all current settings
- foreach (const QString &key, m_settings->allKeys())
+ const auto keys = m_settings->allKeys();
+ for (const QString &key : keys)
m_settings->remove(key);
QTextStream stream(&file);
diff --git a/src/app/qbs-setup-qt/main.cpp b/src/app/qbs-setup-qt/main.cpp
index 92405ab07..d0f78cce6 100644
--- a/src/app/qbs-setup-qt/main.cpp
+++ b/src/app/qbs-setup-qt/main.cpp
@@ -71,13 +71,13 @@ int main(int argc, char *argv[])
if (clParser.autoDetectionMode()) {
// search all Qt's in path and dump their settings
- QList<QtEnvironment> qtEnvironments = SetupQt::fetchEnvironments();
+ const QList<QtEnvironment> qtEnvironments = SetupQt::fetchEnvironments();
if (qtEnvironments.empty()) {
std::cout << qPrintable(Tr::tr("No Qt installations detected. "
"No profiles created."))
<< std::endl;
}
- foreach (const QtEnvironment &qtEnvironment, qtEnvironments) {
+ for (const QtEnvironment &qtEnvironment : qtEnvironments) {
QString profileName = QLatin1String("qt-") + qtEnvironment.qtVersion;
if (SetupQt::checkIfMoreThanOneQtWithTheSameVersion(qtEnvironment.qtVersion, qtEnvironments)) {
QStringList prefixPathParts = qtEnvironment.installPrefixPath
diff --git a/src/app/qbs-setup-qt/setupqt.cpp b/src/app/qbs-setup-qt/setupqt.cpp
index 7c2b4e394..b8cb416dd 100644
--- a/src/app/qbs-setup-qt/setupqt.cpp
+++ b/src/app/qbs-setup-qt/setupqt.cpp
@@ -82,10 +82,10 @@ static QStringList collectQmakePaths()
const QStringList qmakeExeNames = qmakeExecutableNames();
QStringList qmakePaths;
QByteArray environmentPath = qgetenv("PATH");
- QList<QByteArray> environmentPaths
+ const QList<QByteArray> environmentPaths
= environmentPath.split(HostOsInfo::pathListSeparator().toLatin1());
- foreach (const QByteArray &path, environmentPaths) {
- foreach (const QString &qmakeExecutableName, qmakeExeNames) {
+ for (const QByteArray &path : environmentPaths) {
+ for (const QString &qmakeExecutableName : qmakeExeNames) {
QFileInfo pathFileInfo(QDir(QLatin1String(path)), qmakeExecutableName);
if (pathFileInfo.exists()) {
QString qmakePath = pathFileInfo.absoluteFilePath();
@@ -108,7 +108,8 @@ QList<QtEnvironment> SetupQt::fetchEnvironments()
{
QList<QtEnvironment> qtEnvironments;
- foreach (const QString &qmakePath, collectQmakePaths()) {
+ const auto qmakePaths = collectQmakePaths();
+ for (const QString &qmakePath : qmakePaths) {
const QtEnvironment env = fetchEnvironment(qmakePath);
if (std::find_if(qtEnvironments.cbegin(), qtEnvironments.cend(),
[&env](const QtEnvironment &otherEnv) {
@@ -137,7 +138,8 @@ static QMap<QByteArray, QByteArray> qmakeQueryOutput(const QString &qmakePath)
const QByteArray output = qmakeProcess.readAllStandardOutput();
QMap<QByteArray, QByteArray> ret;
- foreach (const QByteArray &line, output.split('\n')) {
+ const auto lines = output.split('\n');
+ for (const QByteArray &line : lines) {
int idx = line.indexOf(':');
if (idx >= 0)
ret[line.left(idx)] = line.mid(idx + 1).trimmed();
@@ -159,11 +161,11 @@ static QString configVariable(const QByteArray &configContent, const QString &ke
QRegExp regexp(QLatin1String("\\s*") + key + QLatin1String("\\s*\\+{0,1}=(.*)"),
Qt::CaseSensitive);
- QList<QByteArray> configContentLines = configContent.split('\n');
+ const QList<QByteArray> configContentLines = configContent.split('\n');
bool success = false;
- foreach (const QByteArray &configContentLine, configContentLines) {
+ for (const QByteArray &configContentLine : configContentLines) {
success = regexp.exactMatch(QString::fromLocal8Bit(configContentLine));
if (success)
break;
@@ -532,7 +534,8 @@ void SetupQt::saveToQbsSettings(const QString &qtVersionName, const QtEnvironmen
QStringList fullMatches;
QStringList partialMatches;
- foreach (const QString &profileName, settings->profiles()) {
+ const auto profileNames = settings->profiles();
+ for (const QString &profileName : profileNames) {
const Profile otherProfile(profileName, settings);
if (profileName == profile.name()
|| !isToolchainProfile(otherProfile)
@@ -584,7 +587,7 @@ bool SetupQt::checkIfMoreThanOneQtWithTheSameVersion(const QString &qtVersion,
const QList<QtEnvironment> &qtEnvironments)
{
bool foundOneVersion = false;
- foreach (const QtEnvironment &qtEnvironment, qtEnvironments) {
+ for (const QtEnvironment &qtEnvironment : qtEnvironments) {
if (qtEnvironment.qtVersion == qtVersion) {
if (foundOneVersion)
return true;
diff --git a/src/app/qbs-setup-toolchains/msvcprobe.cpp b/src/app/qbs-setup-toolchains/msvcprobe.cpp
index 556f127f5..0b3f460b5 100644
--- a/src/app/qbs-setup-toolchains/msvcprobe.cpp
+++ b/src/app/qbs-setup-toolchains/msvcprobe.cpp
@@ -47,6 +47,7 @@
#include <tools/error.h>
#include <tools/msvcinfo.h>
#include <tools/profile.h>
+#include <tools/qttools.h>
#include <tools/settings.h>
#include <tools/version.h>
#include <tools/visualstudioversioninfo.h>
@@ -121,12 +122,14 @@ static std::vector<MSVCArchInfo> findSupportedArchitectures(const MSVC &msvc)
}
} else {
QDir vcInstallDir(msvc.vcInstallPath);
- foreach (QString hostArch, vcInstallDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+ const auto hostArchs = vcInstallDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ for (const QString &hostArch : hostArchs) {
QDir subdir = vcInstallDir;
if (!subdir.cd(hostArch))
continue;
const QString shortHostArch = hostArch.mid(4).toLower();
- foreach (const QString &arch, subdir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+ const auto archs = subdir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ for (const QString &arch : archs) {
MSVCArchInfo ai;
ai.binPath = subdir.absoluteFilePath(arch);
if (shortHostArch == arch)
@@ -164,7 +167,8 @@ static std::vector<MSVCRegistryEntry> installedMSVCsFromRegistry()
QStringLiteral("HKEY_LOCAL_MACHINE\\SOFTWARE") + wow6432Key()
+ QStringLiteral("\\Microsoft\\VisualStudio\\SxS\\VS7"),
QSettings::NativeFormat);
- foreach (const QString &vsName, vsRegistry.childKeys()) {
+ const auto vsNames = vsRegistry.childKeys();
+ for (const QString &vsName : vsNames) {
MSVCRegistryEntry entry;
entry.version = vsName;
entry.installDir = vsRegistry.value(vsName).toString();
@@ -231,8 +235,8 @@ static std::vector<MSVC> installedMSVCs()
} else {
QDir vcInstallDir = vsInstallDir;
vcInstallDir.cd(QStringLiteral("Tools/MSVC"));
- foreach (const QString &vcVersionStr,
- vcInstallDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+ const auto vcVersionStrs = vcInstallDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ for (const QString &vcVersionStr : vcVersionStrs) {
const Version vcVersion = Version::fromString(vcVersionStr);
if (!vcVersion.isValid())
continue;
@@ -262,7 +266,8 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
QSettings::NativeFormat);
const QString defaultSdkPath = sdkRegistry.value(QLatin1String("CurrentInstallFolder")).toString();
if (!defaultSdkPath.isEmpty()) {
- foreach (const QString &sdkKey, sdkRegistry.childGroups()) {
+ const auto sdkKeys = sdkRegistry.childGroups();
+ for (const QString &sdkKey : sdkKeys) {
WinSDK sdk;
sdk.version = sdkKey;
sdk.vcInstallPath = sdkRegistry.value(sdkKey + QLatin1String("/InstallationFolder")).toString();
@@ -273,7 +278,8 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
sdk.vcInstallPath.chop(1);
if (sdk.isDefault)
defaultWinSDK = sdk;
- foreach (const MSVCArchInfo &ai, findSupportedArchitectures(sdk)) {
+ const auto ais = findSupportedArchitectures(sdk);
+ for (const MSVCArchInfo &ai : ais) {
WinSDK specificSDK = sdk;
specificSDK.architecture = ai.arch;
specificSDK.binPath = ai.binPath;
@@ -282,7 +288,7 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
}
}
- foreach (const WinSDK &sdk, winSDKs) {
+ for (const WinSDK &sdk : qAsConst(winSDKs)) {
qbsInfo() << Tr::tr(" Windows SDK %1 detected:\n"
" installed in %2").arg(sdk.version, sdk.vcInstallPath);
if (sdk.isDefault)
@@ -291,7 +297,8 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
// 2) Installed MSVCs
std::vector<MSVC> msvcs;
- foreach (MSVC msvc, installedMSVCs()) {
+ const auto instMsvcs = installedMSVCs();
+ for (const MSVC &msvc : instMsvcs) {
if (msvc.internalVsVersion.majorVersion() < 15) {
// Check existence of various install scripts
const QString vcvars32bat = msvc.vcInstallPath + QLatin1String("/vcvars32.bat");
@@ -299,7 +306,8 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
continue;
}
- foreach (const MSVCArchInfo &ai, findSupportedArchitectures(msvc)) {
+ const auto ais = findSupportedArchitectures(msvc);
+ for (const MSVCArchInfo &ai : ais) {
MSVC specificMSVC = msvc;
specificMSVC.architecture = ai.arch;
specificMSVC.binPath = ai.binPath;
@@ -307,7 +315,7 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
}
}
- foreach (const MSVC &msvc, msvcs) {
+ for (const MSVC &msvc : qAsConst(msvcs)) {
qbsInfo() << Tr::tr(" MSVC %1 (%2) detected in\n"
" %3").arg(msvc.version, msvc.architecture,
QDir::toNativeSeparators(msvc.binPath));
diff --git a/src/app/qbs-setup-toolchains/probe.cpp b/src/app/qbs-setup-toolchains/probe.cpp
index 94c729d0a..11dee9ad6 100644
--- a/src/app/qbs-setup-toolchains/probe.cpp
+++ b/src/app/qbs-setup-toolchains/probe.cpp
@@ -46,6 +46,7 @@
#include <tools/error.h>
#include <tools/hostosinfo.h>
#include <tools/profile.h>
+#include <tools/qttools.h>
#include <tools/settings.h>
#include <tools/toolchains.h>
#include <tools/stlutils.h>
@@ -73,7 +74,8 @@ static QString findExecutable(const QString &fileName)
fullFileName += QLatin1String(".exe");
}
const QString path = QString::fromLocal8Bit(qgetenv("PATH"));
- foreach (const QString &ppath, path.split(HostOsInfo::pathListSeparator())) {
+ const auto ppaths = path.split(HostOsInfo::pathListSeparator());
+ for (const QString &ppath : ppaths) {
const QString fullPath = ppath + QLatin1Char('/') + fullFileName;
if (QFileInfo::exists(fullPath))
return QDir::cleanPath(fullPath);
@@ -110,10 +112,12 @@ static QStringList toolchainTypeFromCompilerName(const QString &compilerName)
{
if (compilerName == QLatin1String("cl.exe"))
return canonicalToolchain(QLatin1String("msvc"));
- foreach (const QString &type, (QStringList() << QLatin1String("clang") << QLatin1String("llvm")
- << QLatin1String("mingw") << QLatin1String("gcc")))
+ const auto types = { QLatin1String("clang"), QLatin1String("llvm"),
+ QLatin1String("mingw"), QLatin1String("gcc") };
+ for (const QString &type : types) {
if (compilerName.contains(type))
return canonicalToolchain(type);
+ }
if (compilerName == QLatin1String("g++"))
return canonicalToolchain(QLatin1String("gcc"));
return QStringList();
@@ -256,12 +260,13 @@ static void mingwProbe(Settings *settings, QList<Profile> &profiles)
if (HostOsInfo::isWindowsHost()) {
compilerNames << QLatin1String("gcc");
} else {
- foreach (const QString &machineName, validMinGWMachines()) {
+ const auto machineNames = validMinGWMachines();
+ for (const QString &machineName : machineNames) {
compilerNames << machineName + QLatin1String("-gcc");
}
}
- foreach (const QString &compilerName, compilerNames) {
+ for (const QString &compilerName : qAsConst(compilerNames)) {
const QString gccPath
= findExecutable(HostOsInfo::appendExecutableSuffix(compilerName));
if (!gccPath.isEmpty())
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp
index ac73c9e21..d80b952e7 100644
--- a/src/app/qbs/commandlinefrontend.cpp
+++ b/src/app/qbs/commandlinefrontend.cpp
@@ -95,9 +95,9 @@ void CommandLineFrontend::checkCancelStatus()
m_cancelTimer->stop();
if (m_resolveJobs.empty() && m_buildJobs.empty())
std::exit(EXIT_FAILURE);
- foreach (AbstractJob * const job, m_resolveJobs)
+ for (AbstractJob * const job : qAsConst(m_resolveJobs))
job->cancel();
- foreach (AbstractJob * const job, m_buildJobs)
+ for (AbstractJob * const job : qAsConst(m_buildJobs))
job->cancel();
break;
case CancelStatusCanceling:
@@ -152,7 +152,8 @@ void CommandLineFrontend::start()
params.setPropertyCheckingMode(ErrorHandlingMode::Strict);
if (!m_parser.buildBeforeInstalling() || !m_parser.commandCanResolve())
params.setRestoreBehavior(SetupProjectParameters::RestoreOnly);
- foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) {
+ const auto buildConfigs = m_parser.buildConfigurations();
+ for (const QVariantMap &buildConfig : buildConfigs) {
QVariantMap userConfig = buildConfig;
const QString configurationKey = QLatin1String("qbs.configurationName");
const QString profileKey = QLatin1String("qbs.profile");
@@ -340,10 +341,11 @@ CommandLineFrontend::ProductMap CommandLineFrontend::productsToUse() const
ProductMap products;
QStringList productNames;
const bool useAll = m_parser.products().empty();
- foreach (const Project &project, m_projects) {
+ for (const Project &project : qAsConst(m_projects)) {
QList<ProductData> &productList = products[project];
const ProjectData projectData = project.projectData();
- foreach (const ProductData &product, projectData.allProducts()) {
+ const auto products = projectData.allProducts();
+ for (const ProductData &product : products) {
if (useAll || m_parser.products().contains(product.name())) {
productList.push_back(product);
productNames << product.name();
@@ -351,7 +353,8 @@ CommandLineFrontend::ProductMap CommandLineFrontend::productsToUse() const
}
}
- foreach (const QString &productName, m_parser.products()) {
+ const auto parsedProductNames = m_parser.products();
+ for (const QString &productName : parsedProductNames) {
if (!productNames.contains(productName))
throw ErrorInfo(Tr::tr("No such product '%1'.").arg(productName));
}
@@ -410,7 +413,7 @@ void CommandLineFrontend::handleProjectsResolved()
void CommandLineFrontend::makeClean()
{
if (m_parser.products().empty()) {
- foreach (const Project &project, m_projects) {
+ for (const Project &project : qAsConst(m_projects)) {
m_buildJobs << project.cleanAllProducts(m_parser.cleanOptions(project.profile()), this);
}
} else {
@@ -482,7 +485,7 @@ void CommandLineFrontend::build()
if (m_parser.products().empty()) {
const Project::ProductSelection productSelection = m_parser.withNonDefaultProducts()
? Project::ProductSelectionWithNonDefault : Project::ProductSelectionDefaultOnly;
- foreach (const Project &project, m_projects)
+ for (const Project &project : qAsConst(m_projects))
m_buildJobs << project.buildAllProducts(buildOptions(project), productSelection, this);
} else {
const ProductMap &products = productsToUse();
@@ -580,7 +583,7 @@ void CommandLineFrontend::listProducts()
void CommandLineFrontend::connectBuildJobs()
{
- foreach (AbstractJob * const job, m_buildJobs)
+ for (AbstractJob * const job : qAsConst(m_buildJobs))
connectBuildJob(job);
}
@@ -617,7 +620,8 @@ ProductData CommandLineFrontend::getTheOneRunnableProduct()
QBS_CHECK(m_projects.size() == 1); // Has been checked earlier.
if (m_parser.products().size() == 1) {
- foreach (const ProductData &p, m_projects.front().projectData().allProducts()) {
+ const auto products = m_projects.front().projectData().allProducts();
+ for (const ProductData &p : products) {
if (p.name() == m_parser.products().front())
return p;
}
@@ -626,7 +630,8 @@ ProductData CommandLineFrontend::getTheOneRunnableProduct()
QBS_CHECK(m_parser.products().size() == 0);
QList<ProductData> runnableProducts;
- foreach (const ProductData &p, m_projects.front().projectData().allProducts()) {
+ const auto products = m_projects.front().projectData().allProducts();
+ for (const ProductData &p : products) {
if (p.isRunnable())
runnableProducts.push_back(p);
}
@@ -642,7 +647,7 @@ ProductData CommandLineFrontend::getTheOneRunnableProduct()
ErrorInfo error(Tr::tr("Ambiguous use of command '%1': No product given, but project "
"has more than one runnable product.").arg(m_parser.commandName()));
error.append(Tr::tr("Use the '--products' option with one of the following products:"));
- foreach (const ProductData &p, runnableProducts) {
+ for (const ProductData &p : qAsConst(runnableProducts)) {
QString productRepr = QLatin1String("\t") + p.name();
if (p.profile() != m_projects.front().profile()) {
productRepr.append(QLatin1String(" [")).append(p.profile())
diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp
index 875256516..c2eea340a 100644
--- a/src/app/qbs/parser/commandlineoption.cpp
+++ b/src/app/qbs/parser/commandlineoption.cpp
@@ -42,6 +42,7 @@
#include <logging/translator.h>
#include <tools/error.h>
#include <tools/installoptions.h>
+#include <tools/qttools.h>
namespace qbs {
using namespace Internal;
@@ -335,7 +336,7 @@ void StringListOption::doParse(const QString &representation, QStringList &input
throw ErrorInfo(Tr::tr("Invalid use of option '%1': Argument list must not be empty.\n"
"Usage: %2").arg(representation, description(command())));
}
- foreach (const QString &element, m_arguments) {
+ for (const QString &element : qAsConst(m_arguments)) {
if (element.isEmpty()) {
throw ErrorInfo(Tr::tr("Invalid use of option '%1': Argument list must not contain "
"empty elements.\nUsage: %2")
@@ -412,7 +413,7 @@ void LogLevelOption::doParse(const QString &representation, QStringList &input)
const QString levelString = getArgument(representation, input);
const QList<LoggerLevel> levels = QList<LoggerLevel>() << LoggerError << LoggerWarning
<< LoggerInfo << LoggerDebug << LoggerTrace;
- foreach (LoggerLevel l, levels) {
+ for (const LoggerLevel &l : levels) {
if (logLevelName(l) == levelString) {
m_logLevel = l;
return;
diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp
index 5e9910c15..1f62e716c 100644
--- a/src/app/qbs/parser/commandlineparser.cpp
+++ b/src/app/qbs/parser/commandlineparser.cpp
@@ -55,6 +55,7 @@
#include <tools/installoptions.h>
#include <tools/preferences.h>
#include <tools/qbsassert.h>
+#include <tools/qttools.h>
#include <tools/settings.h>
#include <tools/settingsmodel.h>
@@ -358,7 +359,8 @@ void CommandLineParser::CommandLineParserPrivate::doParse()
Command *CommandLineParser::CommandLineParserPrivate::commandFromString(const QString &commandString) const
{
- foreach (Command * const command, allCommands()) {
+ const auto commands = allCommands();
+ for (Command * const command : commands) {
if (command->representation() == commandString)
return command;
}
@@ -402,10 +404,11 @@ QString CommandLineParser::CommandLineParserPrivate::generalHelp() const
// Sorting the commands by name is nicer for the user.
QMap<QString, const Command *> commandMap;
- foreach (const Command * command, allCommands())
+ const auto commands = allCommands();
+ for (const Command * command : commands)
commandMap.insert(command->representation(), command);
- foreach (const Command * command, commandMap) {
+ for (const Command * command : qAsConst(commandMap)) {
help.append(QLatin1String(" ")).append(command->representation());
const QString whitespace
= QString(rhsIndentation - 2 - command->representation().size(), QLatin1Char(' '));
@@ -416,7 +419,7 @@ QString CommandLineParser::CommandLineParserPrivate::generalHelp() const
toolNames.sort();
if (!toolNames.empty()) {
help.append(QLatin1Char('\n')).append(Tr::tr("Auxiliary commands:\n"));
- foreach (const QString &toolName, toolNames) {
+ for (const QString &toolName : qAsConst(toolNames)) {
help.append(QLatin1String(" ")).append(toolName);
const QString whitespace = QString(rhsIndentation - 2 - toolName.size(),
QLatin1Char(' '));
@@ -473,7 +476,8 @@ void CommandLineParser::CommandLineParserPrivate::setupBuildConfigurations()
const QString configurationNameKey = QLatin1String("qbs.configurationName");
QString currentConfigurationName;
QVariantMap currentProperties;
- foreach (const QString &arg, command->additionalArguments()) {
+ const auto args = command->additionalArguments();
+ for (const QString &arg : args) {
const int sepPos = arg.indexOf(QLatin1Char(':'));
QBS_CHECK(sepPos > 0);
const QString key = arg.left(sepPos);
@@ -496,7 +500,7 @@ void CommandLineParser::CommandLineParserPrivate::setupBuildConfigurations()
const QVariantMap globalProperties = propertiesPerConfiguration.takeFirst().second;
QList<QVariantMap> buildConfigs;
- foreach (const PropertyListItem &item, propertiesPerConfiguration) {
+ for (const PropertyListItem &item : qAsConst(propertiesPerConfiguration)) {
QVariantMap properties = item.second;
for (QVariantMap::ConstIterator globalPropIt = globalProperties.constBegin();
globalPropIt != globalProperties.constEnd(); ++globalPropIt) {
@@ -584,7 +588,7 @@ QString CommandLineParser::CommandLineParserPrivate::propertyName(const QString
bool CommandLineParser::CommandLineParserPrivate::checkForExistingBuildConfiguration(
const QList<QVariantMap> &buildConfigs, const QString &configurationName)
{
- foreach (const QVariantMap &buildConfig, buildConfigs) {
+ for (const QVariantMap &buildConfig : buildConfigs) {
if (configurationName == getBuildConfigurationName(buildConfig))
return true;
}
diff --git a/src/app/qbs/parser/parsercommand.cpp b/src/app/qbs/parser/parsercommand.cpp
index 74bc36829..3649b6cf1 100644
--- a/src/app/qbs/parser/parsercommand.cpp
+++ b/src/app/qbs/parser/parsercommand.cpp
@@ -45,6 +45,7 @@
#include <tools/error.h>
#include <tools/hostosinfo.h>
#include <tools/qbsassert.h>
+#include <tools/qttools.h>
#include <QtCore/qmap.h>
@@ -128,7 +129,8 @@ void Command::parseOption(QStringList &input)
}
bool matchFound = false;
- foreach (const CommandLineOption::Type optionType, actualSupportedOptions()) {
+ const auto optionTypes = actualSupportedOptions();
+ for (const CommandLineOption::Type optionType : optionTypes) {
CommandLineOption * const option = optionPool().getOption(optionType);
if (option->shortRepresentation() != optionString
&& option->longRepresentation() != optionString) {
@@ -158,13 +160,14 @@ QString Command::supportedOptionsDescription() const
{
// Sorting the options by name is nicer for the user.
QMap<QString, const CommandLineOption *> optionMap;
- foreach (const CommandLineOption::Type opType, actualSupportedOptions()) {
+ const auto opTypes = actualSupportedOptions();
+ for (const CommandLineOption::Type opType : opTypes) {
const CommandLineOption * const option = optionPool().getOption(opType);
optionMap.insert(option->longRepresentation(), option);
}
QString s = Tr::tr("The possible options are:\n");
- foreach (const CommandLineOption *option, optionMap)
+ for (const CommandLineOption *option : qAsConst(optionMap))
s += option->description(type());
return s;
}
diff --git a/src/app/qbs/qbstool.cpp b/src/app/qbs/qbstool.cpp
index d01c39591..eb70557b6 100644
--- a/src/app/qbs/qbstool.cpp
+++ b/src/app/qbs/qbstool.cpp
@@ -92,11 +92,11 @@ bool QbsTool::tryToRunTool(const QString &toolName, const QStringList &arguments
QStringList QbsTool::allToolNames()
{
const QString suffix = QLatin1String(QBS_HOST_EXE_SUFFIX);
- QStringList toolFileNames = QDir(qbsBinDir()).entryList(QStringList(toolPrefix()
+ const QStringList toolFileNames = QDir(qbsBinDir()).entryList(QStringList(toolPrefix()
+ QString::fromLatin1("*%1").arg(suffix)), QDir::Files, QDir::Name);
QStringList toolNames;
const int prefixLength = toolPrefix().size();
- foreach (const QString &toolFileName, toolFileNames) {
+ for (const QString &toolFileName : toolFileNames) {
toolNames << toolFileName.mid(prefixLength,
toolFileName.size() - prefixLength - suffix.size());
}
diff --git a/src/app/qbs/status.cpp b/src/app/qbs/status.cpp
index f88196094..8c235010d 100644
--- a/src/app/qbs/status.cpp
+++ b/src/app/qbs/status.cpp
@@ -42,6 +42,7 @@
#include "../shared/logging/consolelogger.h"
#include <qbs.h>
+#include <tools/qttools.h>
#include <QtCore/qdir.h>
#include <QtCore/qfile.h>
@@ -66,8 +67,8 @@ static QList<QRegExp> createIgnoreList(const QString &projectRootPath)
QFile ignoreFile(ignoreFilePath);
if (ignoreFile.open(QFile::ReadOnly)) {
- QList<QByteArray> ignoreTokenList = ignoreFile.readAll().split('\n');
- foreach (const QByteArray &btoken, ignoreTokenList) {
+ const QList<QByteArray> ignoreTokenList = ignoreFile.readAll().split('\n');
+ for (const QByteArray &btoken : ignoreTokenList) {
const QString token = QString::fromLatin1(btoken);
if (token.left(1) == QLatin1String("/"))
ignoreRegularExpressionList.push_back(QRegExp(projectRootPath
@@ -86,10 +87,11 @@ static QStringList allFilesInDirectoryRecursive(const QDir &rootDirecory, const
{
QStringList fileList;
- foreach (const QFileInfo &fileInfo, rootDirecory.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name)) {
+ const auto fileInfos = rootDirecory.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name);
+ for (const QFileInfo &fileInfo : fileInfos) {
QString absoluteFilePath = fileInfo.absoluteFilePath();
bool inIgnoreList = false;
- foreach (const QRegExp &ignoreRegularExpression, ignoreRegularExpressionList) {
+ for (const QRegExp &ignoreRegularExpression : ignoreRegularExpressionList) {
if (ignoreRegularExpression.exactMatch(absoluteFilePath)) {
inIgnoreList = true;
break;
@@ -118,7 +120,8 @@ static QStringList allFilesInProject(const QString &projectRootPath)
QStringList allFiles(const ProductData &product)
{
QStringList files;
- foreach (const GroupData &group, product.groups())
+ const auto groups = product.groups();
+ for (const GroupData &group : groups)
files += group.allFilePaths();
return files;
}
@@ -131,17 +134,19 @@ int printStatus(const ProjectData &project)
QStringList untrackedFilesInProject = allFilesInProject(projectDirectory);
QStringList missingFiles;
- foreach (const ProductData &product, project.allProducts()) {
+ const auto products = project.allProducts();
+ for (const ProductData &product : products) {
qbsInfo() << "\nProduct: " << product.name()
<< " (" << product.location().filePath() << ":"
<< product.location().line() << ")";
- foreach (const GroupData &group, product.groups()) {
+ const auto groups = product.groups();
+ for (const GroupData &group : groups) {
qbsInfo() << " Group: " << group.name()
<< " (" << group.location().filePath() << ":"
<< group.location().line() << ")";
QStringList sourceFiles = group.allFilePaths();
qSort(sourceFiles);
- foreach (const QString &sourceFile, sourceFiles) {
+ for (const QString &sourceFile : qAsConst(sourceFiles)) {
if (!QFileInfo(sourceFile).exists())
missingFiles.push_back(sourceFile);
qbsInfo() << " " << sourceFile.mid(projectDirectoryPathLength + 1);
@@ -151,11 +156,11 @@ int printStatus(const ProjectData &project)
}
qbsInfo() << "\nMissing files:";
- foreach (const QString &untrackedFile, missingFiles)
+ for (const QString &untrackedFile : qAsConst(missingFiles))
qbsInfo() << " " << untrackedFile.mid(projectDirectoryPathLength + 1);
qbsInfo() << "\nUntracked files:";
- foreach (const QString &missingFile, untrackedFilesInProject)
+ for (const QString &missingFile : qAsConst(untrackedFilesInProject))
qbsInfo() << " " << missingFile.mid(projectDirectoryPathLength + 1);
return 0;
diff --git a/src/lib/corelib/buildgraph/projectbuilddata.cpp b/src/lib/corelib/buildgraph/projectbuilddata.cpp
index b617f0039..8997a2194 100644
--- a/src/lib/corelib/buildgraph/projectbuilddata.cpp
+++ b/src/lib/corelib/buildgraph/projectbuilddata.cpp
@@ -303,12 +303,12 @@ void BuildDataResolver::resolveProductBuildDataForExistingProject(const TopLevel
}
QHash<ResolvedProductPtr, Set<ResolvedProductPtr>> dependencyMap;
- foreach (const ResolvedProductPtr &product, freshProducts) {
+ for (const ResolvedProductPtr &product : freshProducts) {
if (!product->enabled)
continue;
QBS_CHECK(product->buildData);
- Set<ResolvedProductPtr> dependents = findDependentProducts(product);
- foreach (const ResolvedProductPtr &dependentProduct, dependents) {
+ const Set<ResolvedProductPtr> dependents = findDependentProducts(product);
+ for (const ResolvedProductPtr &dependentProduct : dependents) {
if (!dependentProduct->enabled)
continue;
dependencyMap[dependentProduct] << product;
@@ -444,7 +444,7 @@ void BuildDataResolver::connectRulesToDependencies(const ResolvedProductPtr &pro
std::vector<RuleNode *> ruleNodes;
for (RuleNode *ruleNode : filterByType<RuleNode>(product->buildData->nodes))
ruleNodes.push_back(ruleNode);
- foreach (const ResolvedProductConstPtr &dep, dependencies) {
+ for (const ResolvedProductConstPtr &dep : dependencies) {
if (!dep->buildData)
continue;
for (RuleNode *depRuleNode : filterByType<RuleNode>(dep->buildData->nodes)) {
diff --git a/src/lib/qtprofilesetup/qtmoduleinfo.cpp b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
index 0258c7fc9..901ef55e9 100644
--- a/src/lib/qtprofilesetup/qtmoduleinfo.cpp
+++ b/src/lib/qtprofilesetup/qtmoduleinfo.cpp
@@ -43,6 +43,7 @@
#include <logging/translator.h>
#include <tools/error.h>
#include <tools/profile.h>
+#include <tools/qttools.h>
#include <tools/set.h>
#include <QtCore/qdiriterator.h>
@@ -71,7 +72,7 @@ static void replaceQtLibNamesWithFilePath(QList<QtModuleInfo> *modules, const Qt
typedef QHash<QString, QString> NamePathHash;
NamePathHash linkerNamesToFilePathsDebug;
NamePathHash linkerNamesToFilePathsRelease;
- foreach (const QtModuleInfo &m, *modules) {
+ for (const QtModuleInfo &m : qAsConst(*modules)) {
linkerNamesToFilePathsDebug.insert(m.libNameForLinker(qtEnv, true), m.libFilePathDebug);
linkerNamesToFilePathsRelease.insert(m.libNameForLinker(qtEnv, false),
m.libFilePathRelease);
@@ -184,7 +185,7 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
return;
const QStringList modulesNeverBuiltAsDebug = QStringList()
<< QLatin1String("bootstrap") << QLatin1String("qmldevtools");
- foreach (const QString &m, modulesNeverBuiltAsDebug) {
+ for (const QString &m : modulesNeverBuiltAsDebug) {
if (qbsName == m || qbsName == m + QLatin1String("-private"))
return;
}
@@ -246,7 +247,7 @@ void QtModuleInfo::setupLibraries(const QtEnvironment &qtEnv, bool debugBuild,
return;
}
const QList<QByteArray> prlLines = prlFile.readAll().split('\n');
- foreach (const QByteArray &line, prlLines) {
+ for (const QByteArray &line : prlLines) {
const QByteArray simplifiedLine = line.simplified();
const int equalsOffset = simplifiedLine.indexOf('=');
if (equalsOffset == -1)
@@ -530,7 +531,7 @@ static QList<QByteArray> getPriFileContentsRecursively(const Profile &profile,
const QList<QByteArray> &includedContents
= getPriFileContentsRecursively(profile, includedFilePath);
int j = i;
- foreach (const QByteArray &includedLine, includedContents)
+ for (const QByteArray &includedLine : includedContents)
lines.insert(++j, includedLine);
lines.removeAt(i--);
}
@@ -568,7 +569,8 @@ QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &q
moduleInfo.qbsName.replace(QLatin1String("_private"), QLatin1String("-private"));
bool hasV2 = false;
bool hasModuleEntry = false;
- foreach (const QByteArray &line, getPriFileContentsRecursively(profile, dit.filePath())) {
+ const auto lines = getPriFileContentsRecursively(profile, dit.filePath());
+ for (const QByteArray &line : lines) {
const QByteArray simplifiedLine = line.simplified();
const int firstEqualsOffset = simplifiedLine.indexOf('=');
if (firstEqualsOffset == -1)
@@ -588,7 +590,8 @@ QList<QtModuleInfo> allQt5Modules(const Profile &profile, const QtEnvironment &q
QLatin1String("-private"));
}
} else if (key.endsWith(".module_config")) {
- foreach (const QByteArray &elem, value.split(' ')) {
+ const auto elems = value.split(' ');
+ for (const QByteArray &elem : elems) {
if (elem == "no_link")
moduleInfo.hasLibrary = false;
else if (elem == "staticlib")
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp
index f7a501b90..837a54c71 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.cpp
+++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp
@@ -90,7 +90,7 @@ static QString defaultQpaPlugin(const Profile &profile, const QtModuleInfo &modu
}
const QList<QByteArray> lines = qConfigPri.readAll().split('\n');
const QByteArray magicString = "QT_DEFAULT_QPA_PLUGIN =";
- foreach (const QByteArray &line, lines) {
+ for (const QByteArray &line : lines) {
const QByteArray simplifiedLine = line.simplified();
if (simplifiedLine.startsWith(magicString))
return QString::fromLatin1(simplifiedLine.mid(magicString.size()).trimmed());
@@ -301,7 +301,7 @@ static void createModules(Profile &profile, Settings *settings,
&allFiles);
copyTemplateFile(QLatin1String("QtPlugin.qbs"), qbsQtModuleBaseDir, profile, qtEnvironment,
&allFiles);
- foreach (const QtModuleInfo &module, modules) {
+ for (const QtModuleInfo &module : modules) {
const QString qbsQtModuleDir = qbsQtModuleBaseDir + QLatin1Char('/') + module.qbsName;
QString moduleTemplateFileName;
if (module.qbsName == QLatin1String("core")) {
@@ -393,7 +393,7 @@ static bool checkForStaticBuild(const QtEnvironment &qt)
= libdir.entryList(QStringList(QLatin1String("*Core*")), QDir::Files);
if (coreLibFiles.empty())
throw ErrorInfo(Internal::Tr::tr("Could not determine whether Qt is a static build."));
- foreach (const QString &fileName, coreLibFiles) {
+ for (const QString &fileName : coreLibFiles) {
if (QLibrary::isLibrary(fileName))
return false;
}
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index e357e251e..df69489cc 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -624,7 +624,8 @@ void TestApi::checkOutputs_data()
qbs::GroupData findGroup(const qbs::ProductData &product, const QString &name)
{
- foreach (const qbs::GroupData &g, product.groups()) {
+ const auto groups = product.groups();
+ for (const qbs::GroupData &g : groups) {
if (g.name() == name)
return g;
}
@@ -640,9 +641,11 @@ static qbs::Project::ProductSelection defaultProducts()
static void printProjectData(const qbs::ProjectData &project)
{
- foreach (const qbs::ProductData &p, project.products()) {
+ const auto products = project.products();
+ for (const qbs::ProductData &p : products) {
qDebug(" Product '%s' at %s", qPrintable(p.name()), qPrintable(p.location().toString()));
- foreach (const qbs::GroupData &g, p.groups()) {
+ const auto groups = p.groups();
+ for (const qbs::GroupData &g : groups) {
qDebug(" Group '%s' at %s", qPrintable(g.name()), qPrintable(g.location().toString()));
qDebug(" Files: %s", qPrintable(g.allFilePaths().join(QLatin1String(", "))));
}
@@ -1232,7 +1235,8 @@ void TestApi::generatedFilesList()
const qbs::ProductData product = projectData.products().front();
QString uiFilePath;
QVERIFY(product.generatedArtifacts().size() >= 6);
- foreach (const qbs::ArtifactData &a, product.generatedArtifacts()) {
+ const auto artifacts = product.generatedArtifacts();
+ for (const qbs::ArtifactData &a : artifacts) {
QVERIFY(a.isGenerated());
QFileInfo fi(a.filePath());
using qbs::Internal::HostOsInfo;
@@ -1245,8 +1249,10 @@ void TestApi::generatedFilesList()
QVERIFY2(possibleFileNames.contains(fi.fileName()) || fi.fileName().endsWith(".plist"),
qPrintable(fi.fileName()));
}
- foreach (const qbs::GroupData &group, product.groups()) {
- foreach (const qbs::ArtifactData &a, group.sourceArtifacts()) {
+ const auto groups = product.groups();
+ for (const qbs::GroupData &group : groups) {
+ const auto artifacts = group.sourceArtifacts();
+ for (const qbs::ArtifactData &a : artifacts) {
QVERIFY(!a.isGenerated());
QVERIFY(!a.isTargetArtifact());
if (a.fileTags().contains(QLatin1String("ui"))) {
@@ -1354,9 +1360,9 @@ void TestApi::installableFiles()
return p.name() == QLatin1String("installedApp");
});
QVERIFY(product.isValid());
- QList<qbs::ArtifactData> installableFiles = product.installableArtifacts();
- QCOMPARE(installableFiles.size(), 2);
- foreach (const qbs::ArtifactData &f,installableFiles) {
+ const QList<qbs::ArtifactData> beforeInstallableFiles = product.installableArtifacts();
+ QCOMPARE(beforeInstallableFiles.size(), 2);
+ for (const qbs::ArtifactData &f : beforeInstallableFiles) {
if (!f.filePath().endsWith("main.cpp")) {
QVERIFY(f.isExecutable());
QString expectedTargetFilePath = qbs::Internal::HostOsInfo
@@ -1376,13 +1382,13 @@ void TestApi::installableFiles()
projectData = project.projectData();
QCOMPARE(projectData.allProducts().size(), 1);
product = projectData.allProducts().front();
- installableFiles = product.installableArtifacts();
- QCOMPARE(installableFiles.size(), 2);
- foreach (const qbs::ArtifactData &f, installableFiles)
+ const QList<qbs::ArtifactData> afterInstallableFiles = product.installableArtifacts();
+ QCOMPARE(afterInstallableFiles.size(), 2);
+ for (const qbs::ArtifactData &f : afterInstallableFiles)
QVERIFY(!f.isExecutable());
- QCOMPARE(installableFiles.front().installData().localInstallFilePath(),
+ QCOMPARE(afterInstallableFiles.front().installData().localInstallFilePath(),
QLatin1String("/tmp/dir/file1.txt"));
- QCOMPARE(installableFiles.last().installData().localInstallFilePath(),
+ QCOMPARE(afterInstallableFiles.last().installData().localInstallFilePath(),
QLatin1String("/tmp/dir/file2.txt"));
}
@@ -1396,7 +1402,7 @@ void TestApi::isRunnable()
qbs::Project project = job->project();
const QList<qbs::ProductData> products = project.projectData().products();
QCOMPARE(products.size(), 2);
- foreach (const qbs::ProductData &p, products) {
+ for (const qbs::ProductData &p : products) {
QVERIFY2(p.name() == "app" || p.name() == "lib", qPrintable(p.name()));
if (p.name() == "app")
QVERIFY(p.isRunnable());
@@ -1695,7 +1701,7 @@ void TestApi::multiArch()
QCOMPARE(products.size(), 3);
QList<qbs::ProductData> hostProducts;
QList<qbs::ProductData> targetProducts;
- foreach (const qbs::ProductData &p, products) {
+ for (const qbs::ProductData &p : products) {
QVERIFY2(p.profile() == hostProfile.name() || p.profile() == targetProfile.name(),
qPrintable(p.profile()));
if (p.profile() == hostProfile.name())
@@ -2171,7 +2177,7 @@ void TestApi::processResult()
CheckParams(redirectStdout, "stdout.txt", "stdout", result.stdOut()),
CheckParams(redirectStderr, "stderr.txt", "stderr", result.stdErr())
});
- foreach (const CheckParams &p, checkParams) {
+ for (const CheckParams &p : checkParams) {
QFile f(relativeProductBuildDir("app-caller") + '/' + p.fileName);
QCOMPARE(f.exists(), p.redirect);
if (p.redirect) {
@@ -2297,7 +2303,7 @@ void TestApi::referencedFileErrors()
return;
const QList<qbs::ProductData> products = project.projectData().allProducts();
QCOMPARE(products.size(), 5);
- foreach (const qbs::ProductData &p, products)
+ for (const qbs::ProductData &p : products)
QCOMPARE(p.isEnabled(), p.name() != "p5");
}
@@ -2382,11 +2388,14 @@ void TestApi::relaxedModeRecovery()
waitForFinished(job.get());
QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
if (m_logSink->warnings.size() != 4) {
- foreach (const qbs::ErrorInfo &error, m_logSink->warnings)
+ const auto errors = m_logSink->warnings;
+ for (const qbs::ErrorInfo &error : errors)
qDebug() << error.toString();
}
QCOMPARE(m_logSink->warnings.size(), 4);
- foreach (const qbs::ErrorInfo &error, m_logSink->warnings) {
+
+ const auto errors = m_logSink->warnings;
+ for (const qbs::ErrorInfo &error : errors) {
QVERIFY2(!error.toString().contains("ASSERT")
&& (error.toString().contains("Dependency 'blubb' not found")
|| error.toString().contains("Product 'p1' had errors and was disabled")
@@ -2520,7 +2529,8 @@ void TestApi::restoredWarnings()
QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
job.reset(nullptr);
QCOMPARE(m_logSink->warnings.toSet().size(), 2);
- foreach (const qbs::ErrorInfo &e, m_logSink->warnings) {
+ const auto beforeErrors = m_logSink->warnings;
+ for (const qbs::ErrorInfo &e : beforeErrors) {
const QString msg = e.toString();
QVERIFY2(msg.contains("Superfluous version")
|| msg.contains("Property 'blubb' is not declared"),
@@ -2545,7 +2555,8 @@ void TestApi::restoredWarnings()
QVERIFY2(!job->error().hasError(), qPrintable(job->error().toString()));
job.reset(nullptr);
QCOMPARE(m_logSink->warnings.toSet().size(), 3); // One more for the additional group
- foreach (const qbs::ErrorInfo &e, m_logSink->warnings) {
+ const auto afterErrors = m_logSink->warnings;
+ for (const qbs::ErrorInfo &e : afterErrors) {
const QString msg = e.toString();
QVERIFY2(msg.contains("Superfluous version")
|| msg.contains("Property 'blubb' is not declared")
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 06c974236..5e0fdd0d1 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -1291,7 +1291,7 @@ void TestBlackbox::clean()
QVERIFY(!QFile(appExeFilePath).exists());
QVERIFY(!QFile(depObjectFilePath).exists());
QVERIFY(!QFile(depLibFilePath).exists());
- foreach (const QString &symLink, symlinks)
+ for (const QString &symLink : qAsConst(symlinks))
QVERIFY2(!symlinkExists(symLink), qPrintable(symLink));
// Remove all, with a forced re-resolve in between.
@@ -1310,7 +1310,7 @@ void TestBlackbox::clean()
QVERIFY(!QFile(appExeFilePath).exists());
QVERIFY(!QFile(depObjectFilePath).exists());
QVERIFY(!QFile(depLibFilePath).exists());
- foreach (const QString &symLink, symlinks)
+ for (const QString &symLink : qAsConst(symlinks))
QVERIFY2(!symlinkExists(symLink), qPrintable(symLink));
// Dry run.
@@ -1322,7 +1322,7 @@ void TestBlackbox::clean()
QVERIFY(regularFileExists(appExeFilePath));
QVERIFY(regularFileExists(depObjectFilePath));
QVERIFY(regularFileExists(depLibFilePath));
- foreach (const QString &symLink, symlinks)
+ for (const QString &symLink : qAsConst(symlinks))
QVERIFY2(symlinkExists(symLink), qPrintable(symLink));
// Product-wise, dependency only.
@@ -1336,7 +1336,7 @@ void TestBlackbox::clean()
QVERIFY(regularFileExists(appExeFilePath));
QVERIFY(!QFile(depObjectFilePath).exists());
QVERIFY(!QFile(depLibFilePath).exists());
- foreach (const QString &symLink, symlinks)
+ for (const QString &symLink : qAsConst(symlinks))
QVERIFY2(!symlinkExists(symLink), qPrintable(symLink));
// Product-wise, dependent product only.
@@ -1350,7 +1350,7 @@ void TestBlackbox::clean()
QVERIFY(!QFile(appExeFilePath).exists());
QVERIFY(regularFileExists(depObjectFilePath));
QVERIFY(regularFileExists(depLibFilePath));
- foreach (const QString &symLink, symlinks)
+ for (const QString &symLink : qAsConst(symlinks))
QVERIFY2(symlinkExists(symLink), qPrintable(symLink));
}
@@ -3126,7 +3126,7 @@ void TestBlackbox::systemRunPaths()
const QByteArray output = ldd.readAllStandardOutput();
const QList<QByteArray> outputLines = output.split('\n');
QByteArray libLine;
- foreach (const auto &line, outputLines) {
+ for (const auto &line : outputLines) {
if (line.contains("theLib")) {
libLine = line;
break;
@@ -3263,13 +3263,13 @@ void TestBlackbox::installPackage()
QVERIFY2(tarList.waitForFinished(), qPrintable(tarList.errorString()));
const QList<QByteArray> outputLines = tarList.readAllStandardOutput().split('\n');
QList<QByteArray> cleanOutputLines;
- foreach (const QByteArray &line, outputLines) {
+ for (const QByteArray &line : outputLines) {
const QByteArray trimmedLine = line.trimmed();
if (!trimmedLine.isEmpty())
cleanOutputLines.push_back(trimmedLine);
}
QCOMPARE(cleanOutputLines.size(), 3);
- foreach (const QByteArray &line, cleanOutputLines) {
+ for (const QByteArray &line : qAsConst(cleanOutputLines)) {
QVERIFY2(line.contains("public_tool") || line.contains("mylib") || line.contains("lib.h"),
line.constData());
}
@@ -3324,7 +3324,7 @@ void TestBlackbox::invalidLibraryNames()
QbsRunParameters params(QStringList("project.valueIndex:" + index));
params.expectFailure = !success;
QCOMPARE(runQbs(params) == 0, success);
- foreach (const QString &diag, diagnostics)
+ for (const QString &diag : qAsConst(diagnostics))
QVERIFY2(m_qbsStderr.contains(diag.toLocal8Bit()), m_qbsStderr.constData());
}
@@ -4271,7 +4271,7 @@ void TestBlackbox::productDependenciesByType()
<< QDir::currentPath() + '/' + relativeExecutableFilePath("app1")
<< QDir::currentPath() + '/' + relativeExecutableFilePath("app2")
<< QDir::currentPath() + '/' + relativeExecutableFilePath("app3");
- foreach (const QByteArray &line, appList) {
+ for (const QByteArray &line : appList) {
const QString cleanLine = QString::fromLocal8Bit(line.trimmed());
QVERIFY2(apps.removeOne(cleanLine), qPrintable(cleanLine));
}
@@ -4674,7 +4674,7 @@ void TestBlackbox::nsis()
QStringList paths = QProcessEnvironment::systemEnvironment().value("PATH")
.split(HostOsInfo::pathListSeparator(), QString::SkipEmptyParts);
- foreach (const QString &key, regKeys) {
+ for (const QString &key : qAsConst(regKeys)) {
QSettings settings(key, QSettings::NativeFormat);
QString str = settings.value(QLatin1String(".")).toString();
if (!str.isEmpty())
@@ -4682,7 +4682,7 @@ void TestBlackbox::nsis()
}
bool haveMakeNsis = false;
- foreach (const QString &path, paths) {
+ for (const QString &path : qAsConst(paths)) {
if (regularFileExists(QDir::fromNativeSeparators(path) +
HostOsInfo::appendExecutableSuffix(QLatin1String("/makensis")))) {
haveMakeNsis = true;
@@ -4811,9 +4811,9 @@ static bool haveWiX(const Profile &profile)
QStringList paths = QProcessEnvironment::systemEnvironment().value("PATH")
.split(HostOsInfo::pathListSeparator(), QString::SkipEmptyParts);
- foreach (const QString &key, regKeys) {
+ for (const QString &key : qAsConst(regKeys)) {
const QStringList versions = QSettings(key, QSettings::NativeFormat).childGroups();
- foreach (const QString &version, versions) {
+ for (const QString &version : versions) {
QSettings settings(key + version, QSettings::NativeFormat);
QString str = settings.value(QLatin1String("InstallRoot")).toString();
if (!str.isEmpty())
@@ -4821,7 +4821,7 @@ static bool haveWiX(const Profile &profile)
}
}
- foreach (const QString &path, paths) {
+ for (const QString &path : qAsConst(paths)) {
if (regularFileExists(QDir::fromNativeSeparators(path) +
HostOsInfo::appendExecutableSuffix(QLatin1String("/candle"))) &&
regularFileExists(QDir::fromNativeSeparators(path) +
diff --git a/tests/auto/blackbox/tst_blackboxbase.cpp b/tests/auto/blackbox/tst_blackboxbase.cpp
index 6993c7958..6db5f66e0 100644
--- a/tests/auto/blackbox/tst_blackboxbase.cpp
+++ b/tests/auto/blackbox/tst_blackboxbase.cpp
@@ -195,11 +195,11 @@ QString TestBlackboxBase::findExecutable(const QStringList &fileNames)
const QStringList path = QString::fromLocal8Bit(qgetenv("PATH"))
.split(HostOsInfo::pathListSeparator(), QString::SkipEmptyParts);
- foreach (const QString &fileName, fileNames) {
+ for (const QString &fileName : fileNames) {
QFileInfo fi(fileName);
if (fi.isAbsolute())
return fi.exists() ? fileName : QString();
- foreach (const QString &ppath, path) {
+ for (const QString &ppath : path) {
const QString fullPath
= HostOsInfo::appendExecutableSuffix(ppath + QLatin1Char('/') + fileName);
if (QFileInfo(fullPath).exists())
diff --git a/tests/auto/blackbox/tst_blackboxjava.cpp b/tests/auto/blackbox/tst_blackboxjava.cpp
index 964bbe036..3acb6bcef 100644
--- a/tests/auto/blackbox/tst_blackboxjava.cpp
+++ b/tests/auto/blackbox/tst_blackboxjava.cpp
@@ -31,6 +31,7 @@
#include "../shared.h"
#include <tools/hostosinfo.h>
#include <tools/profile.h>
+#include <tools/qttools.h>
#include <QtCore/qjsondocument.h>
#include <QtCore/qtemporarydir.h>
@@ -84,7 +85,7 @@ void TestBlackboxJava::java()
QVERIFY2(regularFileExists(classFile), qPrintable(classFile));
}
- foreach (const QString &classFile, classFiles) {
+ for (const QString &classFile : classFiles) {
const QString filePath = relativeProductBuildDir("jar_file") + "/classes/" + classFile
+ ".class";
QVERIFY2(regularFileExists(filePath), qPrintable(filePath));
@@ -94,7 +95,7 @@ void TestBlackboxJava::java()
// Now check whether we correctly predicted the class file output paths.
QCOMPARE(runQbs(QbsRunParameters("clean")), 0);
- foreach (const QString &classFile, classFiles1) {
+ for (const QString &classFile : qAsConst(classFiles1)) {
QVERIFY2(!regularFileExists(classFile), qPrintable(classFile));
}
diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp
index da3d3d69d..18bcc4f2b 100644
--- a/tests/auto/language/tst_language.cpp
+++ b/tests/auto/language/tst_language.cpp
@@ -103,14 +103,16 @@ TestLanguage::~TestLanguage()
QHash<QString, ResolvedProductPtr> TestLanguage::productsFromProject(ResolvedProjectPtr project)
{
QHash<QString, ResolvedProductPtr> result;
- foreach (const ResolvedProductPtr &product, project->allProducts())
+ const auto products = project->allProducts();
+ for (const ResolvedProductPtr &product : products)
result.insert(product->name, product);
return result;
}
ResolvedModuleConstPtr TestLanguage::findModuleByName(ResolvedProductPtr product, const QString &name)
{
- foreach (const ResolvedModuleConstPtr &module, product->modules)
+ const auto modules = product->modules;
+ for (const ResolvedModuleConstPtr &module : modules)
if (module->name == name)
return module;
return ResolvedModuleConstPtr();
@@ -523,7 +525,7 @@ void TestLanguage::dependencyOnAllProfiles()
const ResolvedProductConstPtr mainProduct = productsFromProject(project).value("main");
QVERIFY(!!mainProduct);
QCOMPARE(mainProduct->dependencies.size(), 2);
- foreach (const ResolvedProductConstPtr &p, mainProduct->dependencies) {
+ for (const ResolvedProductConstPtr &p : mainProduct->dependencies) {
QCOMPARE(p->name, QLatin1String("dep"));
QVERIFY(p->profile == "p1" || p->profile == "p2");
}
@@ -1456,7 +1458,7 @@ void TestLanguage::modulePropertiesInGroups()
GroupConstPtr g2;
GroupConstPtr g21;
GroupConstPtr g211;
- foreach (const GroupConstPtr &g, product->groups) {
+ for (const GroupConstPtr &g : product->groups) {
if (g->name == "g1")
g1= g;
else if (g->name == "g2")
@@ -1630,7 +1632,7 @@ void TestLanguage::modulePropertiesInGroups()
QVERIFY(!!product);
g1.reset();
g11.reset();
- foreach (const GroupConstPtr &g, product->groups) {
+ for (const GroupConstPtr &g : qAsConst(product->groups)) {
if (g->name == "g1")
g1= g;
else if (g->name == "g1.1")
@@ -1782,11 +1784,11 @@ void TestLanguage::modules()
QFETCH(QString, expectedProductProperty);
QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
const QString productName = QString::fromLocal8Bit(QTest::currentDataTag());
- ResolvedProductPtr product = products.value(productName);
+ const ResolvedProductPtr product = products.value(productName);
QVERIFY(!!product);
QCOMPARE(product->name, productName);
QStringList modulesInProduct;
- foreach (ResolvedModuleConstPtr m, product->modules)
+ for (ResolvedModuleConstPtr m : product->modules)
modulesInProduct += m->name;
modulesInProduct.sort();
expectedModulesInProduct.sort();
@@ -2723,7 +2725,7 @@ void TestLanguage::wildcards()
}
// create files
- foreach (QString filePath, filesToCreate) {
+ for (QString filePath : qAsConst(filesToCreate)) {
filePath.prepend(m_wildcardsTestDirPath + '/');
QFileInfo fi(filePath);
if (!QDir(fi.path()).exists())
@@ -2745,7 +2747,7 @@ void TestLanguage::wildcards()
GroupPtr group;
if (useGroup) {
QCOMPARE(product->groups.size(), HostOsInfo::isMacosHost() ? 3 : 2);
- foreach (const GroupPtr &rg, product->groups) {
+ for (const GroupPtr &rg : qAsConst(product->groups)) {
if (rg->name == groupName) {
group = rg;
break;
@@ -2759,7 +2761,7 @@ void TestLanguage::wildcards()
QCOMPARE(group->files.size(), 0);
QVERIFY(!!group->wildcards);
QStringList actualFilePaths;
- foreach (const SourceArtifactConstPtr &artifact, group->wildcards->files) {
+ for (const SourceArtifactConstPtr &artifact : qAsConst(group->wildcards->files)) {
QString str = artifact->absoluteFilePath;
int idx = str.indexOf(m_wildcardsTestDirPath);
if (idx != -1)
diff --git a/tests/auto/tools/tst_tools.cpp b/tests/auto/tools/tst_tools.cpp
index f616aa2f0..9707cb4ff 100644
--- a/tests/auto/tools/tst_tools.cpp
+++ b/tests/auto/tools/tst_tools.cpp
@@ -343,7 +343,7 @@ QString TestTools::setupSettingsDir1()
<< Version(thisVersion.majorVersion(), thisVersion.minorVersion(),
thisVersion.patchLevel() + 1)
<< Version(99, 99, 99);
- foreach (const Version &v, versions) {
+ for (const Version &v : versions) {
const QString settingsDir = baseDir->path() + "/qbs/" + v.toString();
QSettings s(settingsDir + "/qbs.conf",
HostOsInfo::isWindowsHost() ? QSettings::IniFormat : QSettings::NativeFormat);
diff --git a/tests/benchmarker/benchmarker.cpp b/tests/benchmarker/benchmarker.cpp
index 5c12233ac..050eb97a7 100644
--- a/tests/benchmarker/benchmarker.cpp
+++ b/tests/benchmarker/benchmarker.cpp
@@ -79,13 +79,15 @@ void Benchmarker::benchmark()
QFuture<void> oldFuture = QtConcurrent::run(&oldDataRetriever, &ValgrindRunner::run);
QFuture<void> newFuture = QtConcurrent::run(&newDataRetriever, &ValgrindRunner::run);
oldFuture.waitForFinished();
- foreach (const ValgrindResult &valgrindResult, oldDataRetriever.results()) {
+ const auto oldValgrindResults = oldDataRetriever.results();
+ for (const ValgrindResult &valgrindResult : oldValgrindResults) {
BenchmarkResult &benchmarkResult = m_results[valgrindResult.activity];
benchmarkResult.oldInstructionCount = valgrindResult.instructionCount;
benchmarkResult.oldPeakMemoryUsage = valgrindResult.peakMemoryUsage;
}
newFuture.waitForFinished();
- foreach (const ValgrindResult &valgrindResult, newDataRetriever.results()) {
+ const auto newValgrindResults = newDataRetriever.results();
+ for (const ValgrindResult &valgrindResult : newValgrindResults) {
BenchmarkResult &benchmarkResult = m_results[valgrindResult.activity];
benchmarkResult.newInstructionCount = valgrindResult.instructionCount;
benchmarkResult.newPeakMemoryUsage = valgrindResult.peakMemoryUsage;
diff --git a/tests/benchmarker/commandlineparser.cpp b/tests/benchmarker/commandlineparser.cpp
index 2c214c5e0..97b127d94 100644
--- a/tests/benchmarker/commandlineparser.cpp
+++ b/tests/benchmarker/commandlineparser.cpp
@@ -74,9 +74,9 @@ void CommandLineParser::parse()
"value in per cent");
parser.addOption(thresholdOption);
parser.process(*QCoreApplication::instance());
- QList<QCommandLineOption> mandatoryOptions = QList<QCommandLineOption>()
+ const QList<QCommandLineOption> mandatoryOptions = QList<QCommandLineOption>()
<< oldCommitOption << newCommitOption << testProjectOption << qbsRepoOption;
- foreach (const QCommandLineOption &o, mandatoryOptions) {
+ for (const QCommandLineOption &o : mandatoryOptions) {
if (!parser.isSet(o))
throwException(o.names().front(), parser.helpText());
if (parser.value(o).isEmpty())
@@ -88,7 +88,7 @@ void CommandLineParser::parse()
m_qbsRepoDirPath = parser.value(qbsRepoOption);
const QStringList activitiesList = parser.value(activitiesOption).split(',');
m_activities = 0;
- foreach (const QString &activityString, activitiesList) {
+ for (const QString &activityString : activitiesList) {
if (activityString == allActivities()) {
m_activities = ActivityResolving | ActivityRuleExecution | ActivityNullBuild;
break;
diff --git a/tests/fuzzy-test/fuzzytester.cpp b/tests/fuzzy-test/fuzzytester.cpp
index d01c3c3f2..09a5f25f3 100644
--- a/tests/fuzzy-test/fuzzytester.cpp
+++ b/tests/fuzzy-test/fuzzytester.cpp
@@ -83,7 +83,8 @@ void FuzzyTester::runTest(const QString &profile, const QString &startCommit,
bool timerHasExpired = false;
while (std::next_permutation(allCommits.begin(), allCommits.end()) && !timerHasExpired) {
qDebug("Testing permutation %llu...", ++run);
- foreach (const QString &currentCommit, allCommits) {
+ const auto &allCommitsImmutable = allCommits;
+ for (const QString &currentCommit : allCommitsImmutable) {
if (timer.isValid() && timer.hasExpired(maxDurationInMillis)) {
timerHasExpired = true;
break;
@@ -207,7 +208,7 @@ bool FuzzyTester::runQbs(const QString &buildDir, const QString &command, QStrin
<< buildIncrementalActivity() << buildFromScratchActivity();
const QString oldCommit = m_commitsWithLogFiles.front();
m_commitsWithLogFiles.pop();
- foreach (const QString &a, allActivities)
+ for (const QString &a : allActivities)
QFile::remove(logFilePath(oldCommit, a));
}
qbs.setStandardErrorFile(logFilePath(m_currentCommit, m_currentActivity));