diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2023-02-13 16:19:52 +0100 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2023-02-28 10:05:46 +0100 |
commit | e1d21ec64e38892d870475e0aa3e8ea448f8fd7f (patch) | |
tree | 0585866fb68561f108419533a1d75d40bbbf684a /src/qtattributionsscanner | |
parent | f5a950df40295248b5da5aec261b2eb309033e25 (diff) | |
download | qttools-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.cpp | 44 | ||||
-rw-r--r-- | src/qtattributionsscanner/main.cpp | 58 | ||||
-rw-r--r-- | src/qtattributionsscanner/qdocgenerator.cpp | 16 | ||||
-rw-r--r-- | src/qtattributionsscanner/scanner.cpp | 107 |
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); |