Clazy
Categories:
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