Salta fins al contingut

Clazy

Categories:   Desenvolupament
Captura de pantalla de Clazy
Clazy és un connector del compilador Clang que emet avisos relacionats amb les millors pràctiques de les Qt.
Instal·leu a
Linux
Este botó només funcionarà amb Discover i altres botigues d'aplicacions d'AppStream. També podreu utilitzar el gestor de paquets de la vostra distribució.

Llançaments RSS

1.17 2026-02-15

This release fixes the following bugs:

  • Fix non-pod-static check emitting warning for each entry of a container
  • Fix use-arrow-operator-instead-of-data emitting false positive when value is casted
  • Do not whitelist QVariant for detaching-temporary. QVariant::toString will provide a QString that is not detached
  • detaching-temporary properly checks conditions when more than two method calls are chained
  • Fixits for detaching-temporary/detaching-member are more reliable with fixit ranges for operator calls
  • When using QT_NAMESPACE, clazy properly handles Qt classes being in this specific namespace
  • Fix wrong replacement method for QMap::operator[]
  • Make project compile with LLVM22. qhash-namespace, fully-qualified-moc-types, old-style-connect tests are fixed
  • Adjust readlock-detaching check to work properly with Qt 6.11 changes
  • Move qstring-ref to manuallevel since it is not compatible with Qt6

This release adds the following feature:

  • New checks: - compare-member-check: Checks whether comparison operators do not use all member variables of a class.

C++20 is now required for compilation

qt6-\* porting checks are removed

1.16 2025-09-03

Esta versió corregix els errors següents:

  • unused-result-check: corregix una fallada quan no es pot resoldre la declaració del mètode
  • use-chrono-in-qtimer: corregix una fallada en utilitzar capçaleres precompilades
  • qt6-qhash-signature: adapta la comprovació per a utilitzar una lògica més adequada per a les conversions i corregix una fallada en casos extrems
  • Assegura que clang21 funciona correctament amb clazy i produïx el mateix número de línia/lletra que abans (no coincidix amb crides d'operador)
  • non-pod-global-static: corregix un fals positiu amb Q_IMPORT_PLUGIN a les Qt-6.10

Esta versió afig les característiques següents:

  • clazy finalment es pot integrar a clang-tidy, una ordre per a governar
  • a tots ells! Totes les comprovacions es poden habilitar utilitzant «clazy-<checkname>». Per exemple:
  • `clazy-qstring-arg,clazy-qfileinfo-exists`, habilita totes les comprovacions utilitzant
  • `clazy-*` també habilitarà les comprovacions manuals. Es recomana ser més granular.
  • El connector es pot carregar utilitzant `-load=ClazyClangTidy.so`, per a açò, el connector
  • ha d'estar en el LD_LIBRARY_PATH. En cas contrari, es pot especificar un camí absolut.
  • isempty-vs-count ara proporciona correccions per a tots els escenaris. A més, casos on
  • la llargària es compara utilitzant "== 0", "< 1", "> 0" ara s'informen i tenen correccions.
  • qt6-\* L'adaptació de les comprovacions ara es consideren obsoletes i s'eliminaran en la propera versió de clazy
  • les comprovacions «detaching-temporary» i «detaching-member» proporcionen correccions per als mètodes que tenen contraparts «const»
  • NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND ara funcionen totes com
  • s'esperava. Les comprovacions individuals de clazy es poden desactivar quan s'utilitza un prefix
  • «clazy-». Per exemple «NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)»
1.15 2025-06-12

Esta versió corregix els errors següents:

  • install-event-filter: corregix una fallada quan no hi ha cap fill a la profunditat indicada. ERROR: 464372
  • fully-qualified-moc-types: corregix la classe enum/enum que no s'avaluava. ERROR: 423780
  • S'ha corregit una fallada a qstring-comparison-to-implicit-char. ERROR: 502458
  • S'ha corregit una fallada quan fully-qualified-moc-types troba senyals amb expressions com «std::bitset<int(8)>»
  • S'ha corregit una fallada a qvariant-template-instantiation

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • readlock-detaching
  • Actualitza Clang/LLVM mínim a 19
  • `clazy-standalone --version` conté la versió git (eixida de `git describe`) si no és una comissió etiquetada
  • S'han afegit mètodes que falten per a comprovar si es desactiven llistes temporals/membres o mapes
1.14 2025-04-27

Es poden desactivar els avisos de Clazy per a la línia següent, per exemple: clazy:exclude-next-line=check1,check2

Suport per a la compilació amb Clang 20

augmenta el nivell de detall d'alguns missatges d'avís

comprovacions `function-args-by-value` i `function-args-by-ref`: afig el nom de la funció i el nom del paràmetre al missatge d'avís

comprovacions `unused-non-trivial-variable` i `non-pod-global-static`: afig un nom de variable al missatge d'avís

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • qbytearray-conversion-to-c-style
1.13 2024-12-28

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • used-qunused-variable

Esta versió corregix els errors següents:

  • la comprovació qstring-arg proporciona una correcció
  • S'ha corregit unused-non-trivial-variable per no avisar quan s'ha establit [[maybe_unused]]
  • S'ha corregit qstring-arg per a les properes Qt 6.9
  • S'han corregit els tipus falsos positius de fully-qualified-moc-types per als modificadors «const» d'arguments genèrics
  • Silencia l'avís fals positiu non-pod-global-static per a la inicialització del mòdul QML
  • Corregix el fals positiu de function-args-by-value que provocaria un error de compilació
  • als constructors de còpies, operadors d'assignació i comprovacions d'igualtat
  • S'han corregit els falsos positius de `Q_EMIT(someSignal())`
1.12 2024-06-30

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • qt-keyword-emit
  • sanitize-inline-keyword
1.11 2022-01-21

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • use-arrow-operator-instead-of-data
  • use-static-qregularexpression
  • unexpected-flag-enumerator-value
  • S'ha eliminat la comprovació inefficient-qlist (corregida a les Qt6)
1.10 2021-07-20

Esta versió corregix els errors següents:

  • Requerix C++17
  • Esmena d'errors:
  • S'ha corregit un fals positiu -Wclazy-lambda-in-connect
  • S'ha corregit una fallada a copyable-polymorphic quan s'ha activat el PCH
1.9 2021-01-10

Esta versió corregix els errors següents:

  • S'ha corregit un alentiment de clazy introduït a la 1.8. Ara pot ser fins a 4x més ràpid.
  • range-loop s'ha dividit entre range-loop-detach i range-loop-reference
  • S'han corregit els falsos positius de -Wclazy-connect-non-signal
1.8 2020-11-22

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • qt6-qhash-signature
  • qt6-header-fixes
  • qt6-deprecated-api-fixes
  • use-chrono-in-qtimer
  • correcció de missing-qobject-macro
1.7 2020-06-29

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • senyal de sobrecarregat
  • signatures JNI no vàlides
  • qstring-comparison-to-implicit-char
  • qt6-qlatin1string-to-u
  • heap-allocated-small-trivial-type: menys falsos positius

Esta versió corregix els errors següents:

  • connect-non-signal: corregix el cas en què no s'ha trobat el pmf
  • qstring-arg avisa quan s'utilitza QLatin1String::arg(int), ja que s'assigna a QChar

La construcció del mateix clazy és un 30% més ràpida

1.6 2019-10-12

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • heap-allocated-small-trivial-type
  • signal-with-return-value
  • qproperty-type-mismatch, aportat per Jean-Michaël Celerier

S'ha eliminat level3. S'han mogut totes les comprovacions del level3 al nivell manual. No té sentit habilitar-les totes.

Cal tindre en compte a cadascuna.

El LLVM mínim s'ha pujat a 5.0

Clazy ja no reescriu fitxers directament, per a evitar competicions quan les invocacions paral·leles canvien la mateixa capçalera.

EL Clazy ara exporta un fitxer yaml amb els reemplaçaments, que s'aplicarà amb clang-apply-replacements.

De la mateixa manera que ho fan altres eines de clang.

La manera d'habilitar la reescriptura de codi és ara: -Xclang -plugin-arg-clazy -Xclang export-fixes per a clang

o -export-fixes=somefile.yaml per a clazy-standalone

S'han eliminat tots els altres arguments de correccions i variables env de correccions

Gràcies a Christian Gagneraud per col·laborar amb l'exportador yaml de correccions!

Esta versió corregix els errors següents:

  • S'han corregit les regressions amb LLVM 9.0
  • S'ha revisat la infraestructura de correccions
1.5 2019-01-31

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • ifndef-define-typo
  • lowercase-qml-type-name
  • qrequiredresult-candidates
  • Correccions noves:
  • range-loop ara permet afegir refs o const-ref que falten
  • range-loop ara permet afegir qAsConst()
  • function-args-by-ref ara afig refs o const-ref que falten (experimental)
  • S'ha introduït la variable «env» de CLAZY_FIXIT_SUFFIX

S'ha eliminat el suport per a l'obscur -DCLAZY_BUILD_UTILS_LIB per a simplificar els CMakeLists.txt

S'ha canviat el nom del connector clazy de ClangLazy.so a ClazyPlugin.so

fully-qualified-moc-types ara també avisa dels valors de retorn «slot/invokable». Han d'estar plenament qualificats per a QML.

Esta versió corregix l'error següent:

  • S'ha corregit una fallada (asserció de clang) a raw-environment-function
1.4 2018-09-23

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • connect-by-name
  • skipped-base-method
  • qstring-varargs
  • fully-qualified-moc-types
  • qt-keywords, amb correcció inclosa
  • qhash-with-char-pointer-key
  • wrong-qevent-cast
  • static-pmf
  • raw-environment-function
  • empty-qstringliteral
  • auto-unexpected-qstringbuilder ara també avisa de les lambdas que retorna el QStringBuilder

optimitzacions de rendiment

S'ha afegit l'opció -header-filter=<regex> a clazy-standalone. Només ha faran les capçaleres que coincidisquen amb l'expressió regular

tindran avisos, a banda del fitxer .cpp de la unitat de traducció, que no es filtra mai.

S'ha afegit l'opció -ignore-dirs=<regex> a clazy-standalone, i la seua variable d'entorn equivalent CLAZY_IGNORE_DIRS.

S'ha afegit la variable «env» de CLAZY_HEADER_FILTER que afig la funcionalitat anterior tant a clazy com a clazy-standalone

unused-non-trivial-variable s'ha incorporat a l'opció unused-non-trivial-variable-no-whitelist

unused-non-trivial-variable s'ha incorporat a la implementació d'user-blacklist i user-whitelist

container-inside-loop és ara una comprovació manual en lloc de level2

HiddenLevel s'ha canviat de nom a ManualLevel

connect-3arg-lambda ara avisa quan passa una lambda a QTimer::singleShot() o QMenu::addAction()

sense un objecte de context

old-style-connect ara també avisa de QMenu::addAction() i QMessageBox::open()

1.3 2017-11-26

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • 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 ara és una comprovació de level2, en lloc de level1. Perquè la gent pot ometre Q_OBJECT intencionadament.

S'ha afegit l'opció -only-qt, que eixirà de clazy abans prompte en fitxers que no siguen Qt. Per a este propòsit, la definició d'un fitxer Qt és sempre que es passa -DQT_CORE_LIB, que sol ser el cas en la majoria dels sistemes de construcció.

S'ha afegit l'opció -qt-developer, que quan es construïsquen les Qt amb clazy complirà les directrius específiques per a les Qt, que ara mateix no són moltes, però la llista creixerà.

1.2 2017-07-08

Esta versió afig les característiques següents:

  • Comprovacions noves:
  • install-event-filter
  • qcolor-from-literal
  • strict-iterators
  • connect-not-normalized

Esta versió corregix els errors següents:

  • executable de clazy-standalone. Permet executar clazy amb una base de dades de compilació JSON en lloc de com a connector. clang-tidy no admet la càrrega de mòduls externs (https://github.com/llvm/llvm-project/issues/32086) així que esta és una solució bona.
  • Mode «qt-compat». Permet desactivar les comprovacions específiques de les Qt5 passant -Xclang -plugin-arg-clazy -Xclang qt4-compat
  • return-data-from-temporary ara comprova si hi ha assignacions QByteArrays temporals a char* quan retornen
  • return-data-from-temporary ara també comprova les assignacions, no només retorna les sentències
  • unused-non-trivial-variable ara avisa de QList, QVector i molts més tipus no utilitzats
  • ara s'admeten comprovacions basades en ASTMatchers
  • clang 3.7 s'ha eliminat per les incompatibilitats del codi font d'ASTMatchers.
  • Utilitza clazy v1.1 per a la implementació de clang >= 3.6
  • clazylib.so ja no es construïx de manera predeterminada, només es construïx el connector (ClangLazy.so). Passeu -DCLAZY_BUILD_UTILS_LIB=ON per a activar la biblioteca d'utilitats si esteu desenvolupant eines que fan servir les funcions d'utilitat de clazy, que probablement no.
  • S'ha eliminat l'opció CLAZY_INSTALL_NO_HEADERS. Instal·leu la biblioteca d'utilitats i les capçaleres o res en absolut. De manera predeterminada no hi ha res instal·lat, excepte les pàgines del connector i man.
1.1 2017-02-20

Esta versió afig les característiques següents:

  • Suport de macOS i Windows
  • Comprovacions noves:
  • 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
  • Correccions a:
  • clang 4.0
  • Qt 5.9
  • Notes:
  • Millora el rendiment un 60%
  • S'han corregit molts falsos positius
1.0 2016-09-12
0.0.1 2015-06-10
Primer llançament