From 181fa70b7ba06c92c3c0fdc4c70081b14e4b1bdf Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 16 Jan 2018 15:45:10 +0100 Subject: shiboken: Fix some clazy warnings - Mixing const/non-const iterators - Do not use operator[] on temporaries of type QVector - Remove unused nontrivial variables - Add Q_FALLTHROUGH() - Potential detach in range-based for Change-Id: I89391fdda616f119eadd7de529eb6cee69343f85 Reviewed-by: Cristian Maureira-Fredes Reviewed-by: Alexandru Croitor --- .../shiboken2/ApiExtractor/abstractmetabuilder.cpp | 14 +++++--------- sources/shiboken2/ApiExtractor/abstractmetalang.cpp | 1 - sources/shiboken2/ApiExtractor/apiextractor.cpp | 2 +- .../ApiExtractor/clangparser/clangparser.cpp | 2 +- .../ApiExtractor/clangparser/clangutils.cpp | 2 +- sources/shiboken2/ApiExtractor/fileout.cpp | 16 ++++++++-------- sources/shiboken2/ApiExtractor/graph.cpp | 3 +-- sources/shiboken2/ApiExtractor/typesystem.cpp | 20 ++++++++++---------- sources/shiboken2/generator/generator.cpp | 4 ++-- .../shiboken2/generator/shiboken2/cppgenerator.cpp | 18 +++++------------- .../generator/shiboken2/headergenerator.cpp | 2 +- .../shiboken2/generator/shiboken2/overloaddata.cpp | 21 ++++++++++----------- 12 files changed, 45 insertions(+), 60 deletions(-) (limited to 'sources') diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp index 79d69abf3..32036749d 100644 --- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp +++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp @@ -487,7 +487,7 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom) const QSet &namespaceTypeValues = dom->uniqueNamespaces(); ReportHandler::setProgressReference(namespaceTypeValues); - for (NamespaceModelItem item : namespaceTypeValues) { + for (const NamespaceModelItem &item : namespaceTypeValues) { ReportHandler::progress(QLatin1String("Generating namespace model...")); AbstractMetaClass *metaClass = traverseNamespace(dom, item); if (metaClass) @@ -1143,7 +1143,7 @@ AbstractMetaEnum *AbstractMetaBuilderPrivate::traverseEnum(EnumModelItem enumIte // Register all enum values on Type database const EnumeratorList &enumerators = enumItem->enumerators(); - for (EnumeratorModelItem e : enumItem->enumerators()) { + for (const EnumeratorModelItem &e : enumerators) { QString name; if (enclosing) { name += enclosing->name(); @@ -1645,8 +1645,8 @@ AbstractMetaFunctionList AbstractMetaBuilderPrivate::templateClassFunctionList(c } } - const AbstractMetaFunctionList::ConstIterator unchangedBegin = unchangedFunctions.begin(); - const AbstractMetaFunctionList::ConstIterator unchangedEnd = unchangedFunctions.end(); + const AbstractMetaFunctionList::ConstIterator unchangedBegin = unchangedFunctions.cbegin(); + const AbstractMetaFunctionList::ConstIterator unchangedEnd = unchangedFunctions.cend(); for (int i = result.size() - 1; i >= 0; --i) { AbstractMetaFunction *function = result.at(i); if (!unchangedFunctions.contains(function) @@ -3034,10 +3034,8 @@ bool AbstractMetaBuilderPrivate::inheritTemplate(AbstractMetaClass *subclass, QString templateParamName; for (const QString &possibleName : qAsConst(possibleNames)) { t = typeDb->findType(possibleName); - if (t) { - QString templateParamName = possibleName; + if (t) break; - } } if (t) { @@ -3185,8 +3183,6 @@ void AbstractMetaBuilderPrivate::parseQ_Property(AbstractMetaClass *metaClass, continue; } - QString typeName = scope + l.at(0); - QPropertySpec* spec = new QPropertySpec(type->typeEntry()); spec->setName(l.at(1)); spec->setIndex(i); diff --git a/sources/shiboken2/ApiExtractor/abstractmetalang.cpp b/sources/shiboken2/ApiExtractor/abstractmetalang.cpp index 19e6a0f26..840466108 100644 --- a/sources/shiboken2/ApiExtractor/abstractmetalang.cpp +++ b/sources/shiboken2/ApiExtractor/abstractmetalang.cpp @@ -1326,7 +1326,6 @@ void AbstractMetaClass::setFunctions(const AbstractMetaFunctionList &functions) // Functions must be sorted by name before next loop sortFunctions(); - QString currentName; for (AbstractMetaFunction *f : qAsConst(m_functions)) { f->setOwnerClass(this); diff --git a/sources/shiboken2/ApiExtractor/apiextractor.cpp b/sources/shiboken2/ApiExtractor/apiextractor.cpp index 404e0bea6..6508d378a 100644 --- a/sources/shiboken2/ApiExtractor/apiextractor.cpp +++ b/sources/shiboken2/ApiExtractor/apiextractor.cpp @@ -46,7 +46,7 @@ ApiExtractor::ApiExtractor() : m_builder(0) { // Environment TYPESYSTEMPATH - QString envTypesystemPaths = QFile::decodeName(getenv("TYPESYSTEMPATH")); + QString envTypesystemPaths = QFile::decodeName(qgetenv("TYPESYSTEMPATH")); if (!envTypesystemPaths.isEmpty()) TypeDatabase::instance()->addTypesystemPath(envTypesystemPaths); } diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangparser.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangparser.cpp index ea08ff6f9..16a7a3147 100644 --- a/sources/shiboken2/ApiExtractor/clangparser/clangparser.cpp +++ b/sources/shiboken2/ApiExtractor/clangparser/clangparser.cpp @@ -260,7 +260,7 @@ bool parse(const QByteArrayList &clangArgs, unsigned clangFlags, BaseVisitor &b debug.nospace(); debug << "Errors in " << QDir::toNativeSeparators(QFile::decodeName(clangArgs.constLast())) << ":\n"; - for (const Diagnostic &diagnostic : diagnostics) + for (const Diagnostic &diagnostic : qAsConst(diagnostics)) debug << diagnostic << '\n'; } diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp index fdc8d3312..f30a585bc 100644 --- a/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp +++ b/sources/shiboken2/ApiExtractor/clangparser/clangutils.cpp @@ -163,7 +163,7 @@ QVector getDiagnostics(CXTranslationUnit tu) CXDiagnosticSeverity maxSeverity(const QVector &ds) { CXDiagnosticSeverity result = CXDiagnostic_Ignored; - for (const Diagnostic d : ds) { + for (const Diagnostic& d : ds) { if (d.severity > result) result = d.severity; } diff --git a/sources/shiboken2/ApiExtractor/fileout.cpp b/sources/shiboken2/ApiExtractor/fileout.cpp index c97347fe1..be0023c3c 100644 --- a/sources/shiboken2/ApiExtractor/fileout.cpp +++ b/sources/shiboken2/ApiExtractor/fileout.cpp @@ -39,15 +39,15 @@ bool FileOut::dummy = false; bool FileOut::diff = false; #ifdef Q_OS_LINUX -const char* colorDelete = "\033[31m"; -const char* colorAdd = "\033[32m"; -const char* colorInfo = "\033[36m"; -const char* colorReset = "\033[0m"; +static const char colorDelete[] = "\033[31m"; +static const char colorAdd[] = "\033[32m"; +static const char colorInfo[] = "\033[36m"; +static const char colorReset[] = "\033[0m"; #else -const char* colorDelete = ""; -const char* colorAdd = ""; -const char* colorInfo = ""; -const char* colorReset = ""; +static const char colorDelete[] = ""; +static const char colorAdd[] = ""; +static const char colorInfo[] = ""; +static const char colorReset[] = ""; #endif FileOut::FileOut(QString n): diff --git a/sources/shiboken2/ApiExtractor/graph.cpp b/sources/shiboken2/ApiExtractor/graph.cpp index e6ee660dc..6ba4d994a 100644 --- a/sources/shiboken2/ApiExtractor/graph.cpp +++ b/sources/shiboken2/ApiExtractor/graph.cpp @@ -127,8 +127,7 @@ void Graph::dumpDot(const QHash< int, QString >& nodeNames, const QString& fileN QTextStream s(&output); s << "digraph D {\n"; for (int i = 0; i < m_d->edges.size(); ++i) { - GraphPrivate::EdgeIterator it = m_d->edges[i].begin(); - for (;it != m_d->edges[i].end(); ++it) + for (auto it = m_d->edges[i].cbegin(), end = m_d->edges[i].cend(); it != end; ++it) s << '"' << nodeNames[i] << "\" -> \"" << nodeNames[*it] << "\"\n"; } s << "}\n"; diff --git a/sources/shiboken2/ApiExtractor/typesystem.cpp b/sources/shiboken2/ApiExtractor/typesystem.cpp index c6f723e4d..8564da3c4 100644 --- a/sources/shiboken2/ApiExtractor/typesystem.cpp +++ b/sources/shiboken2/ApiExtractor/typesystem.cpp @@ -373,6 +373,7 @@ bool Handler::endElement(const QStringRef &localName) m_current->parent->entry->setCodeSnips(snips); break; } + Q_FALLTHROUGH(); case StackElement::NativeToTarget: case StackElement::AddConversion: m_contextStack.top()->codeSnips.last().addTemplateInstance(m_current->value.templateInstance); @@ -756,20 +757,20 @@ bool Handler::startElement(const QStringRef &n, const QXmlStreamAttributes &atts break; case StackElement::ValueTypeEntry: attributes.insert(QLatin1String("default-constructor"), QString()); - // fall throooough + Q_FALLTHROUGH(); case StackElement::ObjectTypeEntry: attributes.insert(QLatin1String("force-abstract"), QLatin1String("no")); attributes.insert(QLatin1String("deprecated"), QLatin1String("no")); attributes.insert(QLatin1String("hash-function"), QString()); attributes.insert(QLatin1String("stream"), QLatin1String("no")); - // fall throooough + Q_FALLTHROUGH(); case StackElement::InterfaceTypeEntry: attributes[QLatin1String("default-superclass")] = m_defaultSuperclass; attributes.insert(QLatin1String("polymorphic-id-expression"), QString()); attributes.insert(QLatin1String("delete-in-main-thread"), QLatin1String("no")); attributes.insert(QLatin1String("held-type"), QString()); attributes.insert(QLatin1String("copyable"), QString()); - // fall through + Q_FALLTHROUGH(); case StackElement::NamespaceTypeEntry: attributes.insert(QLatin1String("target-lang-name"), QString()); attributes[QLatin1String("package")] = m_defaultPackage; @@ -968,7 +969,7 @@ bool Handler::startElement(const QStringRef &n, const QXmlStreamAttributes &atts itype->setOrigin(otype); element->entry = otype; } - // fall through + Q_FALLTHROUGH(); case StackElement::ValueTypeEntry: { if (!element->entry) { ValueTypeEntry* typeEntry = new ValueTypeEntry(name, since); @@ -978,12 +979,12 @@ bool Handler::startElement(const QStringRef &n, const QXmlStreamAttributes &atts element->entry = typeEntry; } - // fall through + Q_FALLTHROUGH(); case StackElement::NamespaceTypeEntry: if (!element->entry) element->entry = new NamespaceTypeEntry(name, since); - // fall through + Q_FALLTHROUGH(); case StackElement::ObjectTypeEntry: if (!element->entry) element->entry = new ObjectTypeEntry(name, since); @@ -1334,13 +1335,12 @@ bool Handler::startElement(const QStringRef &n, const QXmlStreamAttributes &atts } } break; - case StackElement::RejectEnumValue: { + case StackElement::RejectEnumValue: if (!m_currentEnum) { m_error = QLatin1String(" node must be used inside a node"); return false; } - QString name = attributes[nameAttribute()]; - } break; + break; case StackElement::ReplaceType: { if (topElement.type != StackElement::ModifyArgument) { m_error = QLatin1String("Type replacement can only be specified for argument modifications"); @@ -2495,7 +2495,7 @@ AddedFunction::AddedFunction(QString signature, QString returnType, double vr) : break; } // is const? - m_isConst = signature.right(signatureLength - endPos).contains(QLatin1String("const")); + m_isConst = signature.rightRef(signatureLength - endPos).contains(QLatin1String("const")); } } diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp index a8e8735bb..71647a1c5 100644 --- a/sources/shiboken2/generator/generator.cpp +++ b/sources/shiboken2/generator/generator.cpp @@ -127,7 +127,7 @@ void Generator::addInstantiatedContainersAndSmartPointers(const AbstractMetaType QString piece = isContainer ? QStringLiteral("container") : QStringLiteral("smart pointer"); QString warning = QString::fromLatin1("Skipping instantiation of %1 '%2' because it has template" - " arguments.").arg(piece).arg(type->originalTypeDescription()); + " arguments.").arg(piece, type->originalTypeDescription()); if (!context.isEmpty()) warning.append(QStringLiteral(" Calling context: %1").arg(context)); @@ -443,7 +443,7 @@ QTextStream& formatCode(QTextStream &s, const QString& code, Indentor &indentor) for (QString line : lst) { if (!line.isEmpty() && !emptyLine.match(line).hasMatch()) { - while (line.end()->isSpace()) + while (line.constEnd()->isSpace()) line.chop(1); int limit = 0; for(int i = 0; i < spacesToRemove; ++i) { diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index e9d801044..11e5625b8 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -701,7 +701,7 @@ void CppGenerator::writeVirtualMethodNative(QTextStream&s, const AbstractMetaFun qCWarning(lcShiboken) << "The expression used in return value contains an invalid index."; break; } - defaultReturnExpr.replace(match.captured(0), func->arguments()[argId]->name()); + defaultReturnExpr.replace(match.captured(0), func->arguments().at(argId)->name()); offset = match.capturedStart(1); } } @@ -1046,7 +1046,6 @@ void CppGenerator::writeEnumConverterFunctions(QTextStream& s, const TypeEntry* { if (!enumType) return; - QString enumFlagName = enumType->isFlags() ? QLatin1String("flag") : QLatin1String("enum"); QString typeName = fixedCppTypeName(enumType); QString enumPythonType = cpythonTypeNameExt(enumType); QString cppTypeName = getFullTypeName(enumType).trimmed(); @@ -3872,11 +3871,7 @@ void CppGenerator::writeMappingMethods(QTextStream &s, const AbstractMetaClass *metaClass, GeneratorContext &context) { - - QMap funcs; - - QHash< QString, QPair< QString, QString > >::const_iterator it = m_mappingProtocol.begin(); - for (; it != m_mappingProtocol.end(); ++it) { + for (auto it = m_mappingProtocol.cbegin(), end = m_mappingProtocol.cend(); it != end; ++it) { const AbstractMetaFunction* func = metaClass->findFunction(it.key()); if (!func) continue; @@ -3900,12 +3895,9 @@ void CppGenerator::writeSequenceMethods(QTextStream &s, const AbstractMetaClass *metaClass, GeneratorContext &context) { - - QMap funcs; bool injectedCode = false; - QHash< QString, QPair< QString, QString > >::const_iterator it = m_sequenceProtocol.begin(); - for (; it != m_sequenceProtocol.end(); ++it) { + for (auto it = m_sequenceProtocol.cbegin(), end = m_sequenceProtocol.cend(); it != end; ++it) { const AbstractMetaFunction* func = metaClass->findFunction(it.key()); if (!func) continue; @@ -3984,7 +3976,7 @@ void CppGenerator::writeTypeAsMappingDefinition(QTextStream& s, const AbstractMe QString baseName = cpythonBaseName(metaClass); s << INDENT << "memset(&" << baseName << "_TypeAsMapping, 0, sizeof(PyMappingMethods));" << endl; - for (QHash::const_iterator it = m_mpFuncs.cbegin(), end = m_mpFuncs.end(); it != end; ++it) { + for (auto it = m_mpFuncs.cbegin(), end = m_mpFuncs.cend(); it != end; ++it) { const QString &mpName = it.key(); if (funcs[mpName].isEmpty()) continue; @@ -4279,7 +4271,7 @@ void CppGenerator::writeRichCompareFunction(QTextStream &s, GeneratorContext &co int alternativeNumericTypes = 0; for (const AbstractMetaFunction *func : overloads) { if (!func->isStatic() && - ShibokenGenerator::isNumber(func->arguments()[0]->type()->typeEntry())) + ShibokenGenerator::isNumber(func->arguments().at(0)->type()->typeEntry())) alternativeNumericTypes++; } diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.cpp b/sources/shiboken2/generator/shiboken2/headergenerator.cpp index 0c3cf93f6..f6bd2cd7e 100644 --- a/sources/shiboken2/generator/shiboken2/headergenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/headergenerator.cpp @@ -417,7 +417,7 @@ bool HeaderGenerator::finishGeneration() // TODO-CONVERTER ------------------------------------------------------------------------------ macrosStream << "// Macros for type check" << endl; - for (const AbstractMetaEnum *cppEnum : globalEnums) { + for (const AbstractMetaEnum *cppEnum : qAsConst(globalEnums)) { if (cppEnum->isAnonymous() || cppEnum->isPrivate()) continue; includes << cppEnum->typeEntry()->include(); diff --git a/sources/shiboken2/generator/shiboken2/overloaddata.cpp b/sources/shiboken2/generator/shiboken2/overloaddata.cpp index 876185cbe..8fd16f83c 100644 --- a/sources/shiboken2/generator/shiboken2/overloaddata.cpp +++ b/sources/shiboken2/generator/shiboken2/overloaddata.cpp @@ -94,7 +94,7 @@ static bool typesAreEqual(const AbstractMetaType* typeA, const AbstractMetaType* */ struct OverloadSortData { - OverloadSortData() : counter(0) {}; + OverloadSortData() : counter(0) {} /** * Adds a typeName into the type map without associating it with @@ -211,7 +211,7 @@ void OverloadData::sortNextOverloads() << QLatin1String("long"); // sort the children overloads - for (OverloadData *ov : m_nextOverloadData) + for (OverloadData *ov : qAsConst(m_nextOverloadData)) ov->sortNextOverloads(); if (m_nextOverloadData.size() <= 1) @@ -220,7 +220,7 @@ void OverloadData::sortNextOverloads() // Populates the OverloadSortData object containing map and reverseMap, to map type names to ids, // these ids will be used by the topological sort algorithm, because is easier and faster to work // with graph sorting using integers. - for (OverloadData *ov : m_nextOverloadData) { + for (OverloadData *ov : qAsConst(m_nextOverloadData)) { sortData.mapType(ov); const QString typeName(getTypeName(ov)); @@ -293,7 +293,7 @@ void OverloadData::sortNextOverloads() MetaFunctionList involvedConversions; - for (OverloadData *ov : m_nextOverloadData) { + for (OverloadData *ov : qAsConst(m_nextOverloadData)) { const AbstractMetaType* targetType = ov->argType(); const QString targetTypeEntryName(getTypeName(ov)); int targetTypeId = sortData.map[targetTypeEntryName]; @@ -404,7 +404,7 @@ void OverloadData::sortNextOverloads() if (sortData.map.contains(QLatin1String("QString")) && sortData.map.contains(QLatin1String("QByteArray"))) graph.addEdge(sortData.map[QLatin1String("QString")], sortData.map[QLatin1String("QByteArray")]); - for (OverloadData *ov : m_nextOverloadData) { + for (OverloadData *ov : qAsConst(m_nextOverloadData)) { const AbstractMetaType* targetType = ov->argType(); if (!targetType->isEnum()) continue; @@ -435,9 +435,8 @@ void OverloadData::sortNextOverloads() // Dump overload graph QString graphName = QDir::tempPath() + QLatin1Char('/') + funcName + QLatin1String(".dot"); - QHash::const_iterator it = sortData.map.begin(); QHash nodeNames; - for (; it != sortData.map.end(); ++it) + for (auto it = sortData.map.cbegin(), end = sortData.map.cend(); it != end; ++it) nodeNames.insert(it.value(), it.key()); graph.dumpDot(nodeNames, graphName); qCWarning(lcShiboken).noquote() << qPrintable(msgCyclicDependency(funcName, graphName, involvedConversions)); @@ -521,7 +520,7 @@ void OverloadData::addOverload(const AbstractMetaFunction* func) for (int i = 0; m_headOverloadData->m_minArgs > 0 && i < origNumArgs; i++) { if (func->argumentRemoved(i + 1)) continue; - if (!ShibokenGenerator::getDefaultValue(func, func->arguments()[i]).isEmpty()) { + if (!ShibokenGenerator::getDefaultValue(func, func->arguments().at(i)).isEmpty()) { int fixedArgIndex = i - removed; if (fixedArgIndex < m_headOverloadData->m_minArgs) m_headOverloadData->m_minArgs = fixedArgIndex; @@ -670,7 +669,7 @@ const AbstractMetaArgument* OverloadData::argument(const AbstractMetaFunction* f argPos++; } - return func->arguments()[m_argPos + removed]; + return func->arguments().at(m_argPos + removed); } OverloadDataList OverloadData::overloadDataOnPosition(OverloadData* overloadData, int argPos) const @@ -755,7 +754,7 @@ const AbstractMetaFunction* OverloadData::getFunctionWithDefaultValue() const if (func->argumentRemoved(i + 1)) removedArgs++; } - if (!ShibokenGenerator::getDefaultValue(func, func->arguments()[m_argPos + removedArgs]).isEmpty()) + if (!ShibokenGenerator::getDefaultValue(func, func->arguments().at(m_argPos + removedArgs)).isEmpty()) return func; } return 0; @@ -822,7 +821,7 @@ QPair OverloadData::getMinMaxArguments(const AbstractMetaFunctionList& if (func->argumentRemoved(j + 1)) continue; int fixedArgIndex = j - removed; - if (fixedArgIndex < minArgs && !ShibokenGenerator::getDefaultValue(func, func->arguments()[j]).isEmpty()) + if (fixedArgIndex < minArgs && !ShibokenGenerator::getDefaultValue(func, func->arguments().at(j)).isEmpty()) minArgs = fixedArgIndex; } } -- cgit v1.2.3