Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package clazy for openSUSE:Factory checked in at 2024-03-11 15:35:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/clazy (Old) and /work/SRC/openSUSE:Factory/.clazy.new.1770 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clazy" Mon Mar 11 15:35:00 2024 rev:24 rq:1156909 version:1.11git.20240311T110110~ebf99de Changes: -------- --- /work/SRC/openSUSE:Factory/clazy/clazy.changes 2024-02-27 22:46:11.317839737 +0100 +++ /work/SRC/openSUSE:Factory/.clazy.new.1770/clazy.changes 2024-03-11 15:43:05.754669585 +0100 @@ -1,0 +2,8 @@ +Mon Mar 11 11:09:18 UTC 2024 - christo...@krop.fr + +- Update to version 1.11git.20240311T110110~ebf99de: + * Fix false positives when using a typedef in combination with a generic + * Add fitit for qstring-arg check + * [cmake] Increase mimimum required CMake version to 3.8 + +------------------------------------------------------------------- Old: ---- clazy-1.11git.20240225T163906~f353355.obscpio New: ---- clazy-1.11git.20240311T110110~ebf99de.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ clazy.spec ++++++ --- /var/tmp/diff_new_pack.lPdbWA/_old 2024-03-11 15:43:06.438694798 +0100 +++ /var/tmp/diff_new_pack.lPdbWA/_new 2024-03-11 15:43:06.442694945 +0100 @@ -17,7 +17,7 @@ Name: clazy -Version: 1.11git.20240225T163906~f353355 +Version: 1.11git.20240311T110110~ebf99de Release: 0 Summary: Qt oriented code checker based on the Clang framework License: LGPL-2.0-or-later ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.lPdbWA/_old 2024-03-11 15:43:06.486696567 +0100 +++ /var/tmp/diff_new_pack.lPdbWA/_new 2024-03-11 15:43:06.490696714 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://invent.kde.org/sdk/clazy.git</param> - <param name="changesrevision">f353355a7d75a570a81005c133df8631bc0205f3</param></service></servicedata> + <param name="changesrevision">ebf99de982239da1aa1ce425ef2b233162a32bb8</param></service></servicedata> (No newline at EOF) ++++++ clazy-1.11git.20240225T163906~f353355.obscpio -> clazy-1.11git.20240311T110110~ebf99de.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/CMakeLists.txt new/clazy-1.11git.20240311T110110~ebf99de/CMakeLists.txt --- old/clazy-1.11git.20240225T163906~f353355/CMakeLists.txt 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/CMakeLists.txt 2024-03-11 12:01:10.000000000 +0100 @@ -5,7 +5,7 @@ # The man page is not available on Windows. # -cmake_minimum_required(VERSION 3.7) +cmake_minimum_required(VERSION 3.8) project(clazy) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/src/checks/level0/fully-qualified-moc-types.cpp new/clazy-1.11git.20240311T110110~ebf99de/src/checks/level0/fully-qualified-moc-types.cpp --- old/clazy-1.11git.20240225T163906~f353355/src/checks/level0/fully-qualified-moc-types.cpp 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/src/checks/level0/fully-qualified-moc-types.cpp 2024-03-11 12:01:10.000000000 +0100 @@ -107,6 +107,12 @@ } if (auto *typedefDecl = ptr->getAs<TypedefType>(); typedefDecl && typedefDecl->getDecl()) { return typedefDecl->getDecl()->getQualifiedNameAsString(); + } else if (auto templateSpec = ptr->getAs<TemplateSpecializationType>()) { + // In case one uses a typedef with generics, like QVector<QString> in Qt6 + // The docs indicate getAsTemplateDecl might be null - so be prepared for that + if (auto *decl = templateSpec->getTemplateName().getAsTemplateDecl()) { + return decl->getQualifiedNameAsString(); + } } else if (auto recordDecl = ptr->getAsRecordDecl()) { return recordDecl->getQualifiedNameAsString(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/src/checks/level0/qstring-arg.cpp new/clazy-1.11git.20240311T110110~ebf99de/src/checks/level0/qstring-arg.cpp --- old/clazy-1.11git.20240225T163906~f353355/src/checks/level0/qstring-arg.cpp 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/src/checks/level0/qstring-arg.cpp 2024-03-11 12:01:10.000000000 +0100 @@ -11,6 +11,7 @@ #include "StringUtils.h" #include "Utils.h" #include "clazy_stl.h" +#include "clang/Basic/Diagnostic.h" #include <clang/AST/Decl.h> #include <clang/AST/DeclCXX.h> @@ -94,13 +95,43 @@ bool QStringArg::checkMultiArgWarningCase(const std::vector<clang::CallExpr *> &calls) { - const int size = calls.size(); - for (int i = 1; i < size; ++i) { - auto *call = calls.at(i); - if (calls.at(i - 1)->getNumArgs() + call->getNumArgs() <= 9) { - emitWarning(call->getEndLoc(), "Use multi-arg instead"); - return true; + if (calls.size() == 1) { + return false; // Nothing to do + } + std::string replacement; + SourceLocation beginLoc; + CallExpr *call = nullptr; + int argAggregated = 0; + for (int i = 0, size = calls.size(); i < size; ++i) { + call = calls.at(i); + for (auto *arg : call->arguments()) { + if (!isa<CXXDefaultArgExpr>(arg)) { + ++argAggregated; + } + } + if (argAggregated > 9) { // Relevant for Qt5 + return false; + } + if (!beginLoc.isValid()) { + beginLoc = call->getBeginLoc(); } + + std::string callArgs; + for (auto *arg : call->arguments()) { + if (!isa<CXXDefaultArgExpr>(arg)) { + if (!callArgs.empty()) { + callArgs += ", "; + } + callArgs += Lexer::getSourceText(CharSourceRange::getTokenRange(arg->getSourceRange()), sm(), lo()).str(); + } + } + // The args for the chained calls have to be prepended instead of appended + replacement = callArgs + (replacement.empty() ? "" : ", ") + replacement; + } + if (auto *subexprCall = clazy::getFirstChildOfType<MemberExpr>(call)) { + emitWarning(beginLoc, + "Use multi-arg instead", + {FixItHint::CreateReplacement(SourceRange(subexprCall->getEndLoc(), calls.at(0)->getEndLoc()), "arg(" + replacement + ")")}); } return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/tests/fully-qualified-moc-types/main.cpp new/clazy-1.11git.20240311T110110~ebf99de/tests/fully-qualified-moc-types/main.cpp --- old/clazy-1.11git.20240225T163906~f353355/tests/fully-qualified-moc-types/main.cpp 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/tests/fully-qualified-moc-types/main.cpp 2024-03-11 12:01:10.000000000 +0100 @@ -61,7 +61,7 @@ } - +template<typename T> using DummyListAlias = QList<T>; namespace { // annonymous struct AnnonFoo {}; }; @@ -91,6 +91,7 @@ inline void nestedGeneric(QDBusPendingReply<std::shared_ptr<MyObj2>>) {} // OK inline void nestedNotFullyQualifiedGeneric(QDBusPendingReply<std::shared_ptr<MyList>>) {} // WARN inline const MyList& notQualWithModifier() {return lst;}; + DummyListAlias<int> myList() { return {1,2,3};}; private: MyList lst; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/tests/fully-qualified-moc-types/main.cpp.fixed.expected new/clazy-1.11git.20240311T110110~ebf99de/tests/fully-qualified-moc-types/main.cpp.fixed.expected --- old/clazy-1.11git.20240225T163906~f353355/tests/fully-qualified-moc-types/main.cpp.fixed.expected 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/tests/fully-qualified-moc-types/main.cpp.fixed.expected 2024-03-11 12:01:10.000000000 +0100 @@ -61,7 +61,7 @@ } - +template<typename T> using DummyListAlias = QList<T>; namespace { // annonymous struct AnnonFoo {}; }; @@ -91,6 +91,7 @@ inline void nestedGeneric(QDBusPendingReply<std::shared_ptr<MyObj2>>) {} // OK inline void nestedNotFullyQualifiedGeneric(QDBusPendingReply<std::shared_ptr<MyObj2::MyList>>) {} // WARN inline const MyObj2::MyList& notQualWithModifier() {return lst;}; + DummyListAlias<int> myList() { return {1,2,3};}; private: MyList lst; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/config.json new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/config.json --- old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/config.json 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/config.json 2024-03-11 12:01:10.000000000 +0100 @@ -1,7 +1,8 @@ { "tests": [ { - "filename": "main.cpp" + "filename": "main.cpp", + "has_fixits": true }, { "filename": "fill-char-overloads.cpp", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/main.cpp new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/main.cpp --- old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/main.cpp 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/main.cpp 2024-03-11 12:01:10.000000000 +0100 @@ -28,4 +28,5 @@ QString().arg(s1, s2, s3, s4, s5).arg(s1, s2, s3, s4, s5); // OK QString().arg(s1, s2, s3, s4, s5).arg(s1, s2, s3, s4); // Warning QT_REQUIRE_VERSION(argc, argv, "5.2.0"); // OK (bug #391851) + QString().arg("x").arg("combineme").arg(s, -38).arg("abc"); // WARN, first two args may be multiarg } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/main.cpp.expected new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/main.cpp.expected --- old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/main.cpp.expected 2024-02-25 16:39:06.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/main.cpp.expected 2024-03-11 12:01:10.000000000 +0100 @@ -1,2 +1,3 @@ -qstring-arg/main.cpp:27:46: warning: Use multi-arg instead [-Wclazy-qstring-arg] -qstring-arg/main.cpp:29:37: warning: Use multi-arg instead [-Wclazy-qstring-arg] +qstring-arg/main.cpp:27:10: warning: Use multi-arg instead [-Wclazy-qstring-arg] +qstring-arg/main.cpp:29:5: warning: Use multi-arg instead [-Wclazy-qstring-arg] +qstring-arg/main.cpp:31:5: warning: Use multi-arg instead [-Wclazy-qstring-arg] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/main.cpp.fixed.expected new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/main.cpp.fixed.expected --- old/clazy-1.11git.20240225T163906~f353355/tests/qstring-arg/main.cpp.fixed.expected 1970-01-01 01:00:00.000000000 +0100 +++ new/clazy-1.11git.20240311T110110~ebf99de/tests/qstring-arg/main.cpp.fixed.expected 2024-03-11 12:01:10.000000000 +0100 @@ -0,0 +1,32 @@ +#include <QtCore/QString> +#include <QtWidgets/QMessageBox> +#include <QtWidgets/QApplication> + + +void test(int argc, char**argv) +{ + QString s; + QString s1; + s = s.arg(1,1); // OK + s = s.arg(s1); // OK + s = s.arg(s1,s1); // OK + s = s.arg(s1,s1,s1); // OK + s = s.arg(s1,s1,s1,s1); // OK + s = s.arg(1); // OK + s = s.arg('1'); // OK + s = s.arg('1', 10); // OK + int i; + + + s = s.arg(1, 1, 10); // OK + int m_labelFieldWidth, latitude; + s = s.arg(1, m_labelFieldWidth); // OK + + QString("%1").arg(s, -38); // OK + QString s2, s3, s4, s5; + s5 = QString("%1 %2 %3 %4").arg(s, s1, s3, s4); // Warning + QString().arg(s1, s2, s3, s4, s5).arg(s1, s2, s3, s4, s5); // OK + QString().arg(s1, s2, s3, s4, s5, s1, s2, s3, s4); // Warning + QT_REQUIRE_VERSION(argc, argv, "5.2.0"); // OK (bug #391851) + QString().arg("x", "combineme").arg(s, -38).arg("abc"); // WARN, first two args may be multiarg +} ++++++ clazy.obsinfo ++++++ --- /var/tmp/diff_new_pack.lPdbWA/_old 2024-03-11 15:43:06.814708657 +0100 +++ /var/tmp/diff_new_pack.lPdbWA/_new 2024-03-11 15:43:06.818708805 +0100 @@ -1,5 +1,5 @@ name: clazy -version: 1.11git.20240225T163906~f353355 -mtime: 1708875546 -commit: f353355a7d75a570a81005c133df8631bc0205f3 +version: 1.11git.20240311T110110~ebf99de +mtime: 1710154870 +commit: ebf99de982239da1aa1ce425ef2b233162a32bb8