Clazy
Categories:
Llançaments RSS
1.17.1 2026-03-22
This release fixes the following bug:
- fully-qualified-moc-types: Fix false positive regression for pointer/reference types in generics.
1.16.1 2026-03-22
This is a patch release to fix QtCreator integration issues and
compatibility with new Qt versions. This release supports LLVM versions 19 to 21.
This release fixes the following bugs:
- Diagnostics are always emitted even if they contain no fixit. This is used
- for integration in IDEs where the clazy process writes a YAML file containing
- the messages, ranges and optionally fixits
- Adjust readlock-detaching check to work properly with Qt 6.11 changes
1.17 2026-02-15
Esta versió corregix els errors següents:
- Corregix la comprovació «non-pod-static» que emet un avís per a cada entrada d'un contenidor
- Corregix «use-arrow-operator-instead-of-data» que emet un fals positiu quan el valor es convertix
- No posa a la llista blanca QVariant per a «detaching-temporary». QVariant::toString proporcionarà una QString que no està deslligada
- «detaching-temporary» comprova adequadament les condicions quan estan encadenades més de dues crides a mètodes
- Les correccions «detaching-temporary»/«detaching-member» són més fiables amb els intervals de correccions per a crides d'operador
- Quan s'utilitza QT_NAMESPACE, clazy gestiona adequadament les classes de les Qt que es troben en este espai de noms específic
- Corregix un mètode de reemplaçament incorrecte per a QMap::operator[]
- Fa que el projecte compile amb LLVM22. S'han corregit les proves «qhash-namespace», «fully-qualified-moc-types», «old-style-connect»
- Ajusta la comprovació «readlock-detaching» per a funcionar correctament amb els canvis de les Qt 6.11
- Mou «qstring-ref» a «manuallevel», ja que no és compatible amb les Qt6
Esta versió afig la característica següent:
- Comprovacions noves: «compare-member-check»: comprova si els operadors de comparació no utilitzen totes les variables de membres d'una classe.
Ara és necessari C++20 per a la compilació
S'han eliminat les comprovacions d'adaptació de les qt6-\*
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 deslliguen 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 es convertix 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 conversions 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