Spring naar inhoud

Clazy

Categorieën:   Ontwikkeling
Schermafdruk van Clazy
Clazy is een clang-compilerplug-in die waarschuwingen uitstuurt gerelateerd aan de beste praktijken van Qt.
Installeren op
Linux
Deze knop werkt alleen met Discover en andere AppStream application stores. U kunt ook uw eigen pakketbeheerder van uw distributie gebruiken.

Uitgaven RSS

1.17.1 2026-03-22

Deze uitgave lost de volgende fout op:

  • fully-qualified-moc-types: vals positieve regressie voor aanwijzer/referentie typen in generieke argumenten is verholpen.
1.16.1 2026-03-22

Dit is een patch-uitgave om integratieproblemen met QtCreator op te lossen en

compatibiliteit met nieuwe Qt-versies. Deze uitgave ondersteunt LLVM-versies 19 tot en met 21.

Deze uitgave lost de volgende bugs op:

  • Diagnostische meldingen worden altijd gegenereerd, zelfs als ze geen oplossing bevatten. Dit wordt gebruikt
  • voor integratie in IDE's waar het Clazy-proces een YAML-bestand schrijft dat de volgende inhoud bevat
  • de berichten, reeksen en optionele oplossingen
  • De controle op het loskoppelen van de leesvergrendeling moet worden aangepast zodat deze correct werkt met de wijzigingen in Qt 6.11.
1.17 2026-02-15

Deze uitgave lost de volgende bugs op:

  • Los het probleem op dat de controle die niet-pod-statisch is, een waarschuwing geeft voor elke vermelding in een container.
  • Correctie voor het gebruik van de pijloperator in plaats van de gegevens, die een vals positief resultaat geeft wanneer de waarde hoofdletters wordt.
  • Voeg QVariant niet toe aan de whitelist voor tijdelijk loskoppelen. QVariant::toString zal een QString leveren die niet is losgekoppeld.
  • Tijdelijk losmaken controleert de voorwaarden correct wanneer meer dan twee methodeaanroepen aan elkaar gekoppeld zijn
  • Fixits voor het losmaken van tijdelijke onderdelen/onderdelen zijn betrouwbaarder met fixit-bereiken voor operatoroproepen
  • Bij gebruik van QT_NAMESPACE verwerkt Clazy Qt-klassen die zich in deze specifieke naamruimte bevinden op de juiste manier.
  • Corrigeer de onjuiste vervangingsmethode voor QMap::operator[]
  • Zorg ervoor dat het project compileert met LLVM22. qhash-namespace, fully-qualified-moc-types en old-style-connect tests zijn gecorrigeerd
  • De controle op het loskoppelen van de leesvergrendeling moet worden aangepast zodat deze correct werkt met de wijzigingen in Qt 6.11.
  • Verplaats qstring-ref naar handleidingniveau, aangezien het niet compatibel is met Qt6.

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles: - compare-member-check: controleert of vergelijkingsoperatoren niet alle lidvariabelen van een klasse gebruiken.

Voor compilatie is nu C++20 vereist

qt6-\* porting controles zijn verwijderd

1.16 2025-09-03

Deze uitgave lost de volgende bugs op:

  • unused-result-check: verhelpt een crash wanneer de methodedeclaratie niet kan worden opgelost
  • use-chrono-in-qtimer: verhelpt een crash bij gebruik van vooraf gecompileerde headers
  • qt6-qhash-signature: pas de controle aan om een ​​betere logica voor typeconversies te gebruiken en verhelp de crash in uitzonderlijke gevallen
  • Zorg ervoor dat clang21 correct werkt met clazy en hetzelfde regel/letternummer produceert als voorheen (dit komt niet overeen met oproepen van de operator)
  • non-pod-global-static: foutpositief bij Q_IMPORT_PLUGIN in Qt-6.10 verholpen

Deze uitgave voegt de volgende functies toe:

  • Clazy kan eindelijk in clang-tidy worden geïntegreerd - één commando om ze te besturen
  • allemaal! Alle controles kunnen ingeschakeld worden met "clazy-<checkname>". Bijvoorbeeld:
  • `clazy-qstring-arg,clazy-qfileinfo-exists`, alle controles met
  • `clazy-*` zal ook handmatige controles inschakelen. Het is aan te raden om gedetailleerder te zijn.
  • De plug-in kan geladen worden met `-load=ClazyClangTidy.so`, hiervoor moet de plug-in
  • in het pad LD_LIBRARY_PATH zijn. Anders kan een absoluut pad gespecificeerd worden.
  • isempty-vs-count levert nu reparaties voor alle scenario's. Ook, gevallen waar
  • de lengte wordt vergeleken met "== 0", "< 1", "> 0" worden nu gerapporteerd en hebben reparaties.
  • qt6-\* overzetcontroles worden nu als verouderd beschouwd en zullen verwijderd worden in de volgende uitgave van clazy
  • De controles 'detaching-temporary' en 'detaching-member' bieden oplossingen voor methoden met constante tegenhangers.
  • NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND werken allemaal nu in clazy zoals
  • verwacht. Individuele clazy controles kunnen uitgeschakeld worden bij gebruik van voorvoegsel "clazy-".
  • Bijvoorbeeld "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12

Deze uitgave lost de volgende bugs op:

  • install-event-filter: repareer crash wanneer er geen child op de gegeven diepte is. BUG: 464372
  • fully-qualified-moc-types: repareer enum/enum klasse die niet geëvalueerd wordt. BUG: 423780
  • Crash gerepareerd in qstring-comparison-to-implicit-char. BUG: 502458
  • Een crash is verholpen die optrad wanneer fully-qualified-moc-types signalen tegenkwamen met expressies zoals "std::bitset<int(8)>"
  • Een crash in qvariant-template-instantiation is verholpen

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • readlock-detaching
  • Minimum Clang/LLVM naar 19 bijwerken
  • `clazy-standalone --version` bevat de git-versie (uitvoer van `git describe`) als het geen getagde commit is.
  • Ontbrekende methoden toegevoegd aan controles voor het loskoppelen van tijdelijke-/ledenlijsten of kaarten.
1.14 2025-04-27

Clazy-waarschuwingen voor de volgende regel kunnen worden uitgeschakeld, bijvoorbeeld: clazy:exclude-next-line=check1,check2

Ondersteuning voor compilatie met Clang 20

de uitgebreidheid van sommige waarschuwingsberichten verhogen

controleert `function-args-by-value` en `function-args-by-ref`: voeg de functienaam en parameternaam toe aan het waarschuwingsbericht

controleert `unused-non-triviale-variabele` en `non-pod-global-static`: voeg de variabelenaam toe aan het waarschuwingsbericht

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • qbytearray-conversion-to-c-style
1.13 2024-12-28

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • used-qunused-variable

Deze uitgave lost de volgende bugs op:

  • qstring-arg controle levert een repareer-het
  • De ongebruikte niet-triviale variabele is aangepast zodat er geen waarschuwing meer wordt gegeven wanneer [[maybe_unused]] is ingesteld.
  • qstring-arg gerepareerd voor komende Qt 6.9
  • De foutieve melding 'fully-qualified-moc-types' voor 'const'-modifiers van generieke argumenten is verholpen
  • Onderdruk de valse positieve waarschuwing 'non-pod-global-static' voor de initialisatie van de QML-module
  • Corrigeer de foutieve melding 'function-args-by-value' die een compilatiefout veroorzaakte
  • in kopieerconstructors, toewijzingsoperatoren en gelijkheidscontroles
  • De foutieve meldingen voor `Q_EMIT(someSignal())` zijn nu verholpen
1.12 2024-06-30

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • qt-keyword-emit
  • sanitize-inline-keyword
1.11 2022-01-21

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • use-arrow-operator-instead-of-data
  • use-static-qregularexpression
  • unexpected-flag-enumerator-value
  • Verwijderd inefficient-qlist controle (gerepareerd in Qt6)
1.10 2021-07-20

Deze uitgave lost de volgende bugs op:

  • Vereist C++17
  • Verbeterde bugs:
  • opgelost een -Wclazy-lambda-in-connect false-positive
  • opgelost crash in copyable-polymorphic wanneer PCH was ingeschakeld
1.9 2021-01-10

Deze uitgave lost de volgende bugs op:

  • opgelost clazy vertraging geïntroduceerd in 1.8. Het kan nu tot 4x sneller.
  • range-loop was gesplitst in range-loop-detach en range-loop-reference
  • opgelost -Wclazy-connect-non-signal false-positives
1.8 2020-11-22

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • qt6-qhash-signature
  • qt6-header-fixes
  • qt6-deprecated-api-fixes
  • use-chrono-in-qtimer
  • reparatie voor missing-qobject-macro
1.7 2020-06-29

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • overladen signaal
  • ongeldige JNI-ondertekeningen
  • qstring-comparison-to-implicit-char
  • qt6-qlatin1string-to-u
  • heap-allocated-small-trivial-type: minder false-positives

Deze uitgave lost de volgende bugs op:

  • connect-non-signal: opgelost geval waar het de pmf niet vond
  • qstring-arg waarschuwt wanneer QLatin1String::arg(int) wordt gebruikt, zoals het omvormt naar QChar

Clazy zelf bouwen is 30% sneller

1.6 2019-10-12

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • heap-allocated-small-trivial-type
  • signal-with-return-value
  • qproperty-type-mismatch, bijgedragen door Jean-Michaël Celerier

Niveau 3 verwijderd. Alle niveau 3-controles verplaatst naar handmatig niveau. Het heeft geen zin om ze allemaal in te schakelen.

Elk aspect moet zorgvuldig worden overwogen.

De minimale LLVM-waarde is verhoogd naar 5.0

Clazy herschrijft bestanden niet langer rechtstreeks om raceomstandigheden te voorkomen wanneer parallelle aanroepen dezelfde header wijzigen.

Clazy exporteert nu een YAML-bestand met de vervangingen, dat kan worden toegepast met clang-apply-replacements.

Op dezelfde manier als andere clang-hulpmiddelen dat doen.

De manier om codeherschrijving in te schakelen is nu: -Xclang -plugin-arg-clazy -Xclang export-fixes voor clang

of -export-fixes=somefile.yaml voor clazy-standalone

Alle overige Fixit-argumenten en Fixit-omgevingsvariabelen zijn verwijderd.

Met dank aan Christian Gagneraud voor zijn bijdrage aan de fixit YAML-exporteur!

Deze uitgave lost de volgende bugs op:

  • Opgeloste regressies met LLVM 9.0
  • De infrastructuur van Fixit is vernieuwd
1.5 2019-01-31

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • ifndef-define-typo
  • lowercase-qml-type-name
  • qrequiredresult-candidates
  • Nieuwe Fixits:
  • range-loop ondersteunt nu het toevoegen van ontbrekende refs of const-ref.
  • range-loop ondersteunt nu toevoegen van qAsConst()
  • function-args-by-ref voegt nu ontbrekende refs of const-ref toe (experimenteel)
  • CLAZY_FIXIT_SUFFIX omgevingsvariabele geïntroduceerd

Ondersteuning voor de obscure -DCLAZY_BUILD_UTILS_LIB is verwijderd om het bestand CMakeLists.txt te vereenvoudigen.

De Clazy-plug-in is hernoemd van ClangLazy.so naar ClazyPlugin.so

De functie fully-qualified-moc-types geeft nu ook een waarschuwing voor slot/invokable retourwaarden. Deze moeten volledig gekwalificeerd zijn voor QML.

Deze uitgave lost de volgende fout op:

  • Een crash (clang assert) in raw-environment-function is verholpen
1.4 2018-09-23

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • connect-by-name
  • skipped-base-method
  • qstring-varargs
  • fully-qualified-moc-types
  • qt-keywords, met fixit ingesloten
  • qhash-with-char-pointer-key
  • wrong-qevent-cast
  • static-pmf
  • raw-environment-function
  • empty-qstringliteral
  • auto-unexpected-qstringbuilder geeft nu ook een waarschuwing voor lambda-functies die een QStringBuilder retourneren

prestatie optimalisaties

De optie -header-filter=<regex> is toegevoegd aan clazy-standalone. Alleen headers die overeenkomen met de reguliere expressie zullen

waarschuwingen bevatten, naast het .cpp-bestand van de vertaaleenheid, dat nooit wordt gefilterd.

De optie -ignore-dirs=<regex> is toegevoegd aan clazy-standalone en de bijbehorende omgevingsvariabele CLAZY_IGNORE_DIRS.

De omgevingsvariabele CLAZY_HEADER_FILTER is toegevoegd, waardoor bovenstaande functionaliteit beschikbaar komt voor zowel clazy als clazy-standalone.

unused-non-trivial-variable kreeg optie unused-non-trivial-variable-no-whitelist

unused-non-trivial-variable kreeg ondersteuning voor user-blacklist en user-whitelist

container-inside-loop is nu een handmatige controle in plaats van niveau2

HiddenLevel was hernoemd tot ManualLevel

connect-3arg-lambda geeft nu een waarschuwing wanneer een lambda wordt doorgegeven aan QTimer::singleShot() of QMenu::addAction()

zonder contextobject

old-style-connect geeft nu ook waarschuwingen voor QMenu::addAction() en QMessageBox::open()

1.3 2017-11-26

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • thread-with-slots
  • connect-3arg-lambda
  • qproperty-without-notify
  • virtual-signal
  • overridden-signal
  • qhash-namespace
  • const-signal-or-slot
  • lambda-unique-connection

missing-qobject-macro is nu een niveau2-controle in plaats van niveau1. Dit komt omdat mensen Q_OBJECT opzettelijk kunnen weglaten.

De optie -only-qt is toegevoegd, waardoor er vroegtijdig een clazy-bailout plaatsvindt bij niet-Qt-bestanden. Voor dit doel wordt een Qt-bestand gedefinieerd als het bestand dat wordt aangeleverd met -DQT_CORE_LIB, wat in de meeste bouwsystemen het geval is.

De optie -qt-developer is toegevoegd. Bij het compileren van Qt met Clazy wordt rekening gehouden met specifieke richtlijnen voor Qt. Deze richtlijnen zijn er momenteel nog niet veel, maar de lijst zal worden uitgebreid.

1.2 2017-07-08

Deze uitgave voegt de volgende functies toe:

  • Nieuwe controles:
  • install-event-filter
  • qcolor-from-literal
  • strict-iterators
  • connect-not-normalized

Deze uitgave lost de volgende bugs op:

  • clazy-standalone uitvoerbaar bestand. Hiermee kan clazy worden uitgevoerd met een JSON-compilatiedatabase in plaats van als een plug-in. clang-tidy ondersteunt het laden van externe modules niet (https://github.com/llvm/llvm-project/issues/32086), dus dit is een goede workaround.
  • Modus qt-compat. Hiermee kunnen Qt5-specifieke controles worden uitgeschakeld door -Xclang -plugin-arg-clazy -Xclang qt4-compat door te geven.
  • De functie `returning-data-from-temporary` controleert nu of tijdelijke QByteArrays worden gecast naar char* wanneer ze worden geretourneerd
  • De functie `returning-data-from-temporary` controleert nu ook op toewijzing, niet alleen op retourinstructies
  • unused-non-triviale-variable geeft nu een waarschuwing voor ongebruikte QList, QVector en vele andere typen
  • Op ASTMatchers gebaseerde controles worden no ondersteund
  • clang 3.7 is verlaten vanwege incompatibiliteiten in broncode van ASTMatchers.
  • Gebruik clazy v1.1 voor ondersteuning van clang >= 3.6
  • clazylib.so wordt niet langer standaard gecompileerd, alleen de plug-in (ClangLazy.so) wordt gecompileerd. Geef -DCLAZY_BUILD_UTILS_LIB=ON door om de bibliotheek van hulpprogramma's in te schakelen als u hulpmiddelen ontwikkelt die gebruikmaken van de handige functies van clazy, wat u waarschijnlijk niet doet.
  • Optie CLAZY_INSTALL_NO_HEADERS is verwijderd. Ofwel installeer de hulpprogrammabibliotheek en headers of helemaal niets. Standaard wordt niets geïnstalleerd, behalve de plug-in en manpagima's.
1.1 2017-02-20

Deze uitgave voegt de volgende functies toe:

  • Ondersteuning van MacOS en Windows
  • Nieuwe controles:
  • child-event-qobject-cast
  • ctor-missing-parent-argument
  • returning-data-from-temporary
  • qt-macros
  • base-class-event
  • connect-non-signal
  • incorrect-emit
  • tr-non-literal
  • Oplossingen tegen:
  • clang 4.0
  • Qt 5.9
  • Notities:
  • 60% verbetering in prestatie
  • Veel valse positieven opgelost
1.0 2016-09-12
0.0.1 2015-06-10
Eerste uitgave