summaryrefslogtreecommitdiff
path: root/src/qtattributionsscanner
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2023-02-13 16:19:52 +0100
committerEdward Welbourne <edward.welbourne@qt.io>2023-02-28 10:05:46 +0100
commite1d21ec64e38892d870475e0aa3e8ea448f8fd7f (patch)
tree0585866fb68561f108419533a1d75d40bbbf684a /src/qtattributionsscanner
parentf5a950df40295248b5da5aec261b2eb309033e25 (diff)
downloadqttools-e1d21ec64e38892d870475e0aa3e8ea448f8fd7f.tar.gz
Pervasive conversion of attribution scanner to Qt::StringLiterals
Map QLatin1String("...") to "..."_L1, QStringLiteral("...") to u"..."_s. Pick-to: 6.5 Change-Id: I2f6b2bf94bbcc982d90363a735d048f7eb5cb946 Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Diffstat (limited to 'src/qtattributionsscanner')
-rw-r--r--src/qtattributionsscanner/jsongenerator.cpp44
-rw-r--r--src/qtattributionsscanner/main.cpp58
-rw-r--r--src/qtattributionsscanner/qdocgenerator.cpp16
-rw-r--r--src/qtattributionsscanner/scanner.cpp107
4 files changed, 113 insertions, 112 deletions
diff --git a/src/qtattributionsscanner/jsongenerator.cpp b/src/qtattributionsscanner/jsongenerator.cpp
index 72a6723c3..3959390e5 100644
--- a/src/qtattributionsscanner/jsongenerator.cpp
+++ b/src/qtattributionsscanner/jsongenerator.cpp
@@ -9,38 +9,40 @@
#include <iostream>
+using namespace Qt::Literals::StringLiterals;
+
namespace JsonGenerator {
static QJsonObject generate(Package package)
{
QJsonObject obj;
- obj.insert(QStringLiteral("Id"), package.id);
- obj.insert(QStringLiteral("Path"), package.path);
- obj.insert(QStringLiteral("Files"), package.files.join(QLatin1Char(' ')));
- obj.insert(QStringLiteral("QDocModule"), package.qdocModule);
- obj.insert(QStringLiteral("Name"), package.name);
- obj.insert(QStringLiteral("QtUsage"), package.qtUsage);
- obj.insert(QStringLiteral("QtParts"), QJsonArray::fromStringList(package.qtParts));
-
- obj.insert(QStringLiteral("Description"), package.description);
- obj.insert(QStringLiteral("Homepage"), package.homepage);
- obj.insert(QStringLiteral("Version"), package.version);
- obj.insert(QStringLiteral("DownloadLocation"), package.downloadLocation);
-
- obj.insert(QStringLiteral("License"), package.license);
- obj.insert(QStringLiteral("LicenseId"), package.licenseId);
+ obj.insert(u"Id"_s, package.id);
+ obj.insert(u"Path"_s, package.path);
+ obj.insert(u"Files"_s, package.files.join(QLatin1Char(' ')));
+ obj.insert(u"QDocModule"_s, package.qdocModule);
+ obj.insert(u"Name"_s, package.name);
+ obj.insert(u"QtUsage"_s, package.qtUsage);
+ obj.insert(u"QtParts"_s, QJsonArray::fromStringList(package.qtParts));
+
+ obj.insert(u"Description"_s, package.description);
+ obj.insert(u"Homepage"_s, package.homepage);
+ obj.insert(u"Version"_s, package.version);
+ obj.insert(u"DownloadLocation"_s, package.downloadLocation);
+
+ obj.insert(u"License"_s, package.license);
+ obj.insert(u"LicenseId"_s, package.licenseId);
if (package.licenseFiles.isEmpty())
- obj.insert(QStringLiteral("LicenseFile"), QString());
+ obj.insert(u"LicenseFile"_s, QString());
else if (package.licenseFiles.size() == 1)
- obj.insert(QStringLiteral("LicenseFile"), package.licenseFiles.first());
+ obj.insert(u"LicenseFile"_s, package.licenseFiles.first());
else
- obj.insert(QStringLiteral("LicenseFiles"),
+ obj.insert(u"LicenseFiles"_s,
QJsonArray::fromStringList(package.licenseFiles));
- obj.insert(QStringLiteral("Copyright"), package.copyright);
- obj.insert(QStringLiteral("CopyrightFile"), package.copyrightFile);
- obj.insert(QStringLiteral("PackageComment"), package.packageComment);
+ obj.insert(u"Copyright"_s, package.copyright);
+ obj.insert(u"CopyrightFile"_s, package.copyrightFile);
+ obj.insert(u"PackageComment"_s, package.packageComment);
return obj;
}
diff --git a/src/qtattributionsscanner/main.cpp b/src/qtattributionsscanner/main.cpp
index 1b230ab64..b429f5b39 100644
--- a/src/qtattributionsscanner/main.cpp
+++ b/src/qtattributionsscanner/main.cpp
@@ -14,44 +14,44 @@
#include <iostream>
+using namespace Qt::Literals::StringLiterals;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
- a.setApplicationName(QStringLiteral("Qt Attributions Scanner"));
- a.setApplicationVersion(QStringLiteral("1.1"));
+ a.setApplicationName(u"Qt Attributions Scanner"_s);
+ a.setApplicationVersion(u"1.1"_s);
QCommandLineParser parser;
parser.setApplicationDescription(tr("Processes attribution files in Qt sources."));
- parser.addPositionalArgument(QStringLiteral("path"),
+ parser.addPositionalArgument(u"path"_s,
tr("Path to a qt_attribution.json/README.chromium file, "
"or a directory to be scannned recursively."));
parser.addHelpOption();
parser.addVersionOption();
- QCommandLineOption generatorOption(QStringLiteral("output-format"),
+ QCommandLineOption generatorOption(u"output-format"_s,
tr("Output format (\"qdoc\", \"json\")."),
- QStringLiteral("generator"),
- QStringLiteral("qdoc"));
- QCommandLineOption inputFormatOption(QStringLiteral("input-files"),
- tr("Input files (\"qt_attributions\" scans for qt_attribution.json, "
- "\"chromium_attributions\" for README.Chromium, \"all\" for both)."),
- QStringLiteral("input_format"),
- QStringLiteral("qt_attributions"));
- QCommandLineOption filterOption(QStringLiteral("filter"),
- tr("Filter packages according to <filter> (e.g. QDocModule=qtcore)"),
- QStringLiteral("expression"));
- QCommandLineOption baseDirOption(QStringLiteral("basedir"),
+ u"generator"_s, u"qdoc"_s);
+ QCommandLineOption inputFormatOption(u"input-files"_s,
+ tr("Input files (\"qt_attributions\" scans for "
+ "qt_attribution.json, \"chromium_attributions\" for "
+ "README.Chromium, \"all\" for both)."),
+ u"input_format"_s,
+ u"qt_attributions"_s);
+ QCommandLineOption filterOption(u"filter"_s,
+ tr("Filter packages according to <filter> "
+ "(e.g. QDocModule=qtcore)"),
+ u"expression"_s);
+ QCommandLineOption baseDirOption(u"basedir"_s,
tr("Paths in documentation are made relative to this "
"directory."),
- QStringLiteral("directory"));
- QCommandLineOption outputOption({ QStringLiteral("o"), QStringLiteral("output") },
+ u"directory"_s);
+ QCommandLineOption outputOption({ u"o"_s, u"output"_s },
tr("Write generated data to <file>."),
- QStringLiteral("file"));
- QCommandLineOption verboseOption(QStringLiteral("verbose"),
- tr("Verbose output."));
- QCommandLineOption silentOption({ QStringLiteral("s"), QStringLiteral("silent") },
- tr("Minimal output."));
+ u"file"_s);
+ QCommandLineOption verboseOption(u"verbose"_s, tr("Verbose output."));
+ QCommandLineOption silentOption({ u"s"_s, u"silent"_s }, tr("Minimal output."));
parser.addOption(generatorOption);
parser.addOption(inputFormatOption);
@@ -81,11 +81,11 @@ int main(int argc, char *argv[])
QString inputFormat = parser.value(inputFormatOption);
Scanner::InputFormats formats;
- if (inputFormat == QLatin1String("qt_attributions"))
+ if (inputFormat == "qt_attributions"_L1)
formats = Scanner::InputFormat::QtAttributions;
- else if (inputFormat == QLatin1String("chromium_attributions"))
+ else if (inputFormat == "chromium_attributions"_L1)
formats = Scanner::InputFormat::ChromiumAttributions;
- else if (inputFormat == QLatin1String("all"))
+ else if (inputFormat == "all"_L1)
formats = Scanner::InputFormat::QtAttributions | Scanner::InputFormat::ChromiumAttributions;
else {
std::cerr << qPrintable(tr("%1 is not a valid input-files argument").arg(inputFormat)) << std::endl << std::endl;
@@ -143,19 +143,19 @@ int main(int argc, char *argv[])
// Generate the output and write it
QString generator = parser.value(generatorOption);
- if (generator == QLatin1String("qdoc")) {
+ if (generator == "qdoc"_L1) {
QString baseDirectory = parser.value(baseDirOption);
if (baseDirectory.isEmpty()) {
if (pathInfo.isDir()) {
// include top level module name in printed paths
- baseDirectory = pathInfo.dir().absoluteFilePath(QStringLiteral(".."));
+ baseDirectory = pathInfo.dir().absoluteFilePath(u".."_s);
} else {
- baseDirectory = pathInfo.absoluteDir().absoluteFilePath(QStringLiteral(".."));
+ baseDirectory = pathInfo.absoluteDir().absoluteFilePath(u".."_s);
}
}
QDocGenerator::generate(out, packages, baseDirectory, logLevel);
- } else if (generator == QLatin1String("json")) {
+ } else if (generator == "json"_L1) {
JsonGenerator::generate(out, packages, logLevel);
} else {
std::cerr << qPrintable(tr("Unknown output-format %1.").arg(generator)) << std::endl;
diff --git a/src/qtattributionsscanner/qdocgenerator.cpp b/src/qtattributionsscanner/qdocgenerator.cpp
index 1ab18a846..f8e6aee83 100644
--- a/src/qtattributionsscanner/qdocgenerator.cpp
+++ b/src/qtattributionsscanner/qdocgenerator.cpp
@@ -7,6 +7,8 @@
#include <iostream>
+using namespace Qt::Literals::StringLiterals;
+
namespace QDocGenerator {
// See definition of idstring and licenseid in https://spdx.org/spdx-specification-21-web-version
@@ -28,13 +30,13 @@ static QString languageJoin(const QStringList &list)
{
QString result;
for (int i = 0; i < list.size(); ++i) {
- QString delimiter = QStringLiteral(", ");
+ QString delimiter = u", "_s;
if (i == list.size() - 1) // last item
delimiter.clear();
else if (list.size() == 2)
- delimiter = QStringLiteral(" and ");
+ delimiter = u" and "_s;
else if (list.size() > 2 && i == list.size() - 2)
- delimiter = QStringLiteral(", and "); // oxford comma
+ delimiter = u", and "_s; // oxford comma
result += list[i] + delimiter;
}
@@ -46,7 +48,7 @@ static QString languageJoin(const QStringList &list)
static void sourceCode(QTextStream &out, const QString &src)
{
out << "\\badcode *\n";
- out << QString(src).replace(QStringLiteral("*/"), QStringLiteral("\\1/"));
+ out << QString(src).replace(u"*/"_s, u"\\1/"_s);
out << "\n\\endcode\n\n";
}
@@ -58,7 +60,7 @@ static void generate(QTextStream &out, const Package &package, const QDir &baseD
out << "\\ingroup attributions-" << part << "\n";
}
- if (package.qtParts.contains(QLatin1String("libs"))) {
+ if (package.qtParts.contains("libs"_L1)) {
// show up in xxx-index.html page of module
out << "\\ingroup attributions-" << package.qdocModule << "\n";
// include in '\generatelist annotatedattributions'
@@ -124,10 +126,10 @@ static void generate(QTextStream &out, const Package &package, const QDir &baseD
sourceCode(out, copyright);
}
- if (isSpdxLicenseId(package.licenseId) && package.licenseId != QLatin1String("NONE")) {
+ if (isSpdxLicenseId(package.licenseId) && package.licenseId != "NONE"_L1) {
out << "\\l{https://spdx.org/licenses/" << package.licenseId << ".html}"
<< "{" << package.license << "}.\n\n";
- } else if (package.licenseId.startsWith(QLatin1String("urn:dje:license:"))) {
+ } else if (package.licenseId.startsWith("urn:dje:license:"_L1)) {
out << "\\l{https://enterprise.dejacode.com/licenses/public/" << package.licenseId.mid(16)
<< "/}{" << package.license << "}.\n\n";
} else {
diff --git a/src/qtattributionsscanner/scanner.cpp b/src/qtattributionsscanner/scanner.cpp
index 20666c71e..eaca5ca8c 100644
--- a/src/qtattributionsscanner/scanner.cpp
+++ b/src/qtattributionsscanner/scanner.cpp
@@ -29,25 +29,25 @@ static bool validatePackage(Package &p, const QString &filePath, LogLevel logLev
bool validPackage = true;
if (p.qtParts.isEmpty())
- p.qtParts << QStringLiteral("libs");
+ p.qtParts << u"libs"_s;
if (p.name.isEmpty()) {
- if (p.id.startsWith(QLatin1String("chromium-"))) // Ignore invalid README.chromium files
+ if (p.id.startsWith("chromium-"_L1)) // Ignore invalid README.chromium files
return false;
if (logLevel != SilentLog)
- missingPropertyWarning(filePath, QStringLiteral("Name"));
+ missingPropertyWarning(filePath, u"Name"_s);
validPackage = false;
}
if (p.id.isEmpty()) {
if (logLevel != SilentLog)
- missingPropertyWarning(filePath, QStringLiteral("Id"));
+ missingPropertyWarning(filePath, u"Id"_s);
validPackage = false;
}
if (p.license.isEmpty()) {
if (logLevel != SilentLog)
- missingPropertyWarning(filePath, QStringLiteral("License"));
+ missingPropertyWarning(filePath, u"License"_s);
validPackage = false;
}
@@ -62,8 +62,8 @@ static bool validatePackage(Package &p, const QString &filePath, LogLevel logLev
}
for (const QString &part : std::as_const(p.qtParts)) {
- if (part != QLatin1String("examples") && part != QLatin1String("tests")
- && part != QLatin1String("tools") && part != QLatin1String("libs")) {
+ if (part != "examples"_L1 && part != "tests"_L1
+ && part != "tools"_L1 && part != "libs"_L1) {
if (logLevel != SilentLog) {
std::cerr << qPrintable(tr("File %1: Property 'QtPart' contains unknown element "
@@ -201,9 +201,9 @@ static std::optional<Package> readPackage(const QJsonObject &object, const QStri
for (auto iter = object.constBegin(); iter != object.constEnd(); ++iter) {
const QString key = iter.key();
- if (!iter.value().isString() && key != QLatin1String("QtParts")
- && key != QLatin1String("Files")
- && key != QLatin1String("LicenseFiles")) {
+ if (!iter.value().isString() && key != "QtParts"_L1
+ && key != "Files"_L1
+ && key != "LicenseFiles"_L1) {
if (logLevel != SilentLog)
std::cerr << qPrintable(tr("File %1: Expected JSON string as value of %2.").arg(
QDir::toNativeSeparators(filePath), key)) << std::endl;
@@ -211,11 +211,11 @@ static std::optional<Package> readPackage(const QJsonObject &object, const QStri
continue;
}
const QString value = iter.value().toString();
- if (key == QLatin1String("Name")) {
+ if (key == "Name"_L1) {
p.name = value;
- } else if (key == QLatin1String("Path")) {
+ } else if (key == "Path"_L1) {
p.path = QDir(directory).absoluteFilePath(value);
- } else if (key == QLatin1String("Files")) {
+ } else if (key == "Files"_L1) {
QJsonValueConstRef jsonValue = iter.value();
if (jsonValue.isArray()) {
auto maybeStringList = toStringList(jsonValue);
@@ -232,21 +232,21 @@ static std::optional<Package> readPackage(const QJsonObject &object, const QStri
continue;
}
}
- } else if (key == QLatin1String("Id")) {
+ } else if (key == "Id"_L1) {
p.id = value;
- } else if (key == QLatin1String("Homepage")) {
+ } else if (key == "Homepage"_L1) {
p.homepage = value;
- } else if (key == QLatin1String("Version")) {
+ } else if (key == "Version"_L1) {
p.version = value;
- } else if (key == QLatin1String("DownloadLocation")) {
+ } else if (key == "DownloadLocation"_L1) {
p.downloadLocation = value;
- } else if (key == QLatin1String("License")) {
+ } else if (key == "License"_L1) {
p.license = value;
- } else if (key == QLatin1String("LicenseId")) {
+ } else if (key == "LicenseId"_L1) {
p.licenseId = value;
- } else if (key == QLatin1String("LicenseFile")) {
+ } else if (key == "LicenseFile"_L1) {
p.licenseFiles = QStringList(QDir(directory).absoluteFilePath(value));
- } else if (key == QLatin1String("LicenseFiles")) {
+ } else if (key == "LicenseFiles"_L1) {
auto strings = toStringList(iter.value());
if (!strings) {
if (logLevel != SilentLog)
@@ -259,19 +259,19 @@ static std::optional<Package> readPackage(const QJsonObject &object, const QStri
const QDir dir(directory);
for (const auto &iter : std::as_const(strings.value()))
p.licenseFiles.push_back(dir.absoluteFilePath(iter));
- } else if (key == QLatin1String("Copyright")) {
+ } else if (key == "Copyright"_L1) {
p.copyright = value;
- } else if (key == QLatin1String("CopyrightFile")) {
+ } else if (key == "CopyrightFile"_L1) {
p.copyrightFile = QDir(directory).absoluteFilePath(value);
- } else if (key == QLatin1String("PackageComment")) {
+ } else if (key == "PackageComment"_L1) {
p.packageComment = value;
- } else if (key == QLatin1String("QDocModule")) {
+ } else if (key == "QDocModule"_L1) {
p.qdocModule = value;
- } else if (key == QLatin1String("Description")) {
+ } else if (key == "Description"_L1) {
p.description = value;
- } else if (key == QLatin1String("QtUsage")) {
+ } else if (key == "QtUsage"_L1) {
p.qtUsage = value;
- } else if (key == QLatin1String("QtParts")) {
+ } else if (key == "QtParts"_L1) {
auto parts = toStringList(iter.value());
if (!parts) {
if (logLevel != SilentLog) {
@@ -336,7 +336,7 @@ static Package parseChromiumFile(QFile &file, const QString &filePath, LogLevel
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine().trimmed();
- QStringList parts = line.split(QStringLiteral(":"));
+ QStringList parts = line.split(u":"_s);
if (parts.size() < 2)
continue;
@@ -347,14 +347,14 @@ static Package parseChromiumFile(QFile &file, const QString &filePath, LogLevel
fields[key] = value;
- if (line == QLatin1String("Description:")) { // special field : should handle multi-lines values
+ if (line == "Description:"_L1) { // special field : should handle multi-lines values
while (!in.atEnd()) {
QString line = in.readLine().trimmed();
- if (line.startsWith(QLatin1String("Local Modifications:"))) // Don't include this part
+ if (line.startsWith("Local Modifications:"_L1)) // Don't include this part
break;
- fields[key] += line + QStringLiteral("\n");
+ fields[key] += line + u"\n"_s;
}
break;
@@ -364,30 +364,30 @@ static Package parseChromiumFile(QFile &file, const QString &filePath, LogLevel
// Construct the Package object
Package p;
- QString shortName = fields.contains(QLatin1String("Short Name"))
- ? fields[QLatin1String("Short Name")]
- : fields[QLatin1String("Name")];
- QString version = fields[QStringLiteral("Version")];
+ QString shortName = fields.contains("Short Name"_L1)
+ ? fields["Short Name"_L1]
+ : fields["Name"_L1];
+ QString version = fields[u"Version"_s];
- p.id = QStringLiteral("chromium-") + shortName.toLower().replace(QChar::Space, QStringLiteral("-"));
- p.name = fields[QStringLiteral("Name")];
+ p.id = u"chromium-"_s + shortName.toLower().replace(QChar::Space, u"-"_s);
+ p.name = fields[u"Name"_s];
if (version != QLatin1Char('0')) // "0" : not applicable
p.version = version;
- p.license = fields[QStringLiteral("License")];
- p.homepage = fields[QStringLiteral("URL")];
- p.qdocModule = QStringLiteral("qtwebengine");
- p.qtUsage = QStringLiteral("Used in Qt WebEngine");
- p.description = fields[QStringLiteral("Description")].trimmed();
+ p.license = fields[u"License"_s];
+ p.homepage = fields[u"URL"_s];
+ p.qdocModule = u"qtwebengine"_s;
+ p.qtUsage = u"Used in Qt WebEngine"_s;
+ p.description = fields[u"Description"_s].trimmed();
p.path = directory;
- QString licenseFile = fields[QStringLiteral("License File")];
- if (licenseFile != QString() && licenseFile != QLatin1String("NOT_SHIPPED")) {
+ QString licenseFile = fields[u"License File"_s];
+ if (licenseFile != QString() && licenseFile != "NOT_SHIPPED"_L1) {
p.licenseFiles = QStringList(QDir(directory).absoluteFilePath(licenseFile));
} else {
// Look for a LICENSE or COPYING file as a fallback
QDir dir = directory;
- dir.setNameFilters({ QStringLiteral("LICENSE"), QStringLiteral("COPYING") });
+ dir.setNameFilters({ u"LICENSE"_s, u"COPYING"_s });
dir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
const QFileInfoList entries = dir.entryInfoList();
@@ -418,7 +418,7 @@ std::optional<QList<Package>> readFile(const QString &filePath, LogLevel logLeve
return std::nullopt;
}
- if (filePath.endsWith(QLatin1String(".json"))) {
+ if (filePath.endsWith(".json"_L1)) {
QJsonParseError jsonParseError;
const QJsonDocument document = QJsonDocument::fromJson(file.readAll(), &jsonParseError);
if (document.isNull()) {
@@ -465,7 +465,7 @@ std::optional<QList<Package>> readFile(const QString &filePath, LogLevel logLeve
}
errorsFound = true;
}
- } else if (filePath.endsWith(QLatin1String(".chromium"))) {
+ } else if (filePath.endsWith(".chromium"_L1)) {
Package chromiumPackage = parseChromiumFile(file, filePath, logLevel);
if (!chromiumPackage.name.isEmpty()) // Skip invalid README.chromium files
packages << chromiumPackage;
@@ -492,14 +492,11 @@ std::optional<QList<Package>> scanDirectory(const QString &directory, InputForma
QStringList nameFilters = QStringList();
if (inputFormats & InputFormat::QtAttributions)
- nameFilters << QStringLiteral("qt_attribution.json");
+ nameFilters << u"qt_attribution.json"_s;
if (inputFormats & InputFormat::ChromiumAttributions)
- nameFilters << QStringLiteral("README.chromium");
- if (qEnvironmentVariableIsSet("QT_ATTRIBUTIONSSCANNER_TEST")) {
- nameFilters
- << QStringLiteral("qt_attribution_test.json")
- << QStringLiteral("README_test.chromium");
- }
+ nameFilters << u"README.chromium"_s;
+ if (qEnvironmentVariableIsSet("QT_ATTRIBUTIONSSCANNER_TEST"))
+ nameFilters << u"qt_attribution_test.json"_s << u"README_test.chromium"_s;
dir.setNameFilters(nameFilters);
dir.setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Files);