Clazy
Categorie:
Rilasci 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
Questa versione corregge i seguenti bug:
- Corregge il controllo non-pod-static che emette un avviso per ogni voce di un container
- Corregge l'emissione di falsi positivi da parte di use-arrow-operator-instead-of-data quando il valore viene convertito
- Non aggiunge QVariant alla lista bianca per detaching-temporary. QVariant::toString fornirà una QString che non è distaccata
- detaching-temporary controlla correttamente le condizioni quando sono concatenate più di due chiamate di metodo
- I fixit per detaching-temporary/detaching-member sono più affidabili con intervalli di fixit per le chiamate dell'operatore
- Quando si utilizza QT_NAMESPACE, clazy gestisce correttamente le classi Qt che si trovano in questo specifico spazio dei nomi
- Corregge il metodo di sostituzione errato per QMap::operator[]
- Rende il progetto compilabile con LLVM22. I test qhash-namespace, fully-qualified-moc-types e old-style-connect sono stati corretti
- Regola il controllo readlock-detaching per funzionare correttamente con le modifiche di Qt 6.11
- Sposta qstring-ref su manuallevel poiché non è compatibile con Qt6
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli: - compare-member-check: verifica se gli operatori di confronto non utilizzano tutte le variabili membro di una classe.
C++20 è ora richiesto per la compilazione
I controlli di conversione qt6-\* sono stati rimossi
1.16 2025-09-03
Questa versione corregge i seguenti bug:
- unused-result-check: corregge l'arresto anomalo quando la dichiarazione del metodo non può essere risolta
- use-chrono-in-qtimer: corregge l'arresto anomalo quando si utilizzano intestazioni precompilate
- qt6-qhash-signature: adatta il controllo per utilizzare una logica più appropriata per i cast e corregge l'arresto anomalo nei casi limite
- Assicura che clang21 funzioni correttamente con clazy e produca lo stesso numero di riga/lettera di prima (non corrisponde alle chiamate dell'operatore)
- non-pod-global-static: corregge il falso positivo con Q_IMPORT_PLUGIN in Qt-6.10
Questa versione aggiunge le seguenti funzionalità:
- Clazy può finalmente essere integrato in clang-tidy: un comando per governare tutto
- Tutti i controlli possono essere abilitati usando "clazy-<checkname>". Ad esempio:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, abilitazione di tutti i controlli utilizzando
- `clazy-*` abiliterà anche i controlli manuali. Si consiglia di essere piùgranulari.
- L'estensione può essere caricata utilizzando `-load=ClazyClangTidy.so`, per questo, l'estensione
- deve essere in LD_LIBRARY_PATH. In caso contrario, è possibile specificare un percorso assoluto.
- isempty-vs-count ora fornisce fixit per tutti gli scenari. Inoltre, i casi in cui
- la lunghezza viene confrontata utilizzando "== 0", "< 1", "> 0" ora vengono segnalati e hanno fixit.
- qt6-\* I controlli di conversione sono ora considerati deprecati e saranno rimossi nella prossima versione di clazy
- i controlli detaching-temporary e detaching-member forniscono fixit per i metodi che hanno controparti costanti
- NOLINT/NOLINTNEXTLINE/NOLINBEGIN/NOLINTEND ora funzionano tutti in Clazy come
- previsto. I controlli individuali di Clazy possono essere disabilitati quando si utilizza un prefisso
- «clazy-». Ad esempio "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
Questa versione corregge i seguenti bug:
- install-event-filter: corregge l'arresto anomalo quando non c'è alcun elemento figlio alla profondità specificata.BUG: 464372
- fully-qualified-moc-types: corregge enum/classe enum non valutata. BUG: 423780
- Corretto l'arresto anomalo in qstring-comparison-to-implicit-char. BUG: 502458
- Corretto l'arresto anomalo quando fully-qualified-moc-types incontra segnali con espressioni come "std::bitset<int(8)>"
- Corretto l'arresto anomalo in qvariant-template-instantiation
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- readlock-detaching
- Aggiorna il Clang/LLVM minimo a 19
- `clazy-standalone --version` contiene la versione git (output di `gitdescribe`) se non è un commit con tag
- Aggiunti metodi mancanti ai controlli per il distacco di elenchi o mappe temporanei/membri
1.14 2025-04-27
Gli avvisi di Clazy per la seguente riga possono essere disabilitati, ad esempio: clazy:exclude-next-line=check1,check2
Supporto per la compilazione con Clang 20
aumenta la verbosità di alcuni messaggi di avviso
Controlla `function-args-by-value` e `function-args-by-ref`: aggiunge il nome della funzione e il nome del parametro al messaggio di avviso
controlla `unused-non-trivial-variable` e `non-pod-global-static`: aggiunge il nome della variabile al messaggio di avviso
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- used-qunused-variable
Questa versione corregge i seguenti bug:
- Il controllo qstring-arg fornisce un fixit
- Corretto unused-non-trivial-variable che non avvisa quando è impostato [[maybe_unused]]
- Corretto qstring-arg per il prossimo rilascio di Qt 6.9
- Corretto il falso positivo fully-qualified-moc-types per i modificatori const degli argomenti generici
- Disattiva l'avviso di falso positivo non-pod-global-static per l'inizializzazione del modulo QML
- Corregge il falso positivo function-args-by-value che causava un errore di compilazione
- nei costruttori di copia, negli operatori di assegnazione e nei controlli di uguaglianza
- I falsi positivi per `Q_EMIT(someSignal())` sono stati ora corretti
1.12 2024-06-30
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- Rimosso il controllo inefficient-qlist (corretto in Qt6)
1.10 2021-07-20
Questa versione corregge i seguenti bug:
- Richiede C++17
- Correzioni di errori:
- Corretto un falso positivo -Wclazy-lambda-in-connect
- Corretto l'arresto anomalo in copyable-polymorphic quando PCH è abilitato
1.9 2021-01-10
Questa versione corregge i seguenti bug:
- Corretto il problema del rallentamento introdotto nella versione 1.8. Ora è fino a 4 volte più veloce.
- range-loop è stato diviso in range-loop-detach e range-loop-reference
- Corretti i falsi positivi -Wclazy-connect-non-signal
1.8 2020-11-22
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- fixit per missing-qobject-macro
1.7 2020-06-29
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- segnale sovraccarico
- firme JNI non valide
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: meno falsi positivi
Questa versione corregge i seguenti bug:
- connect-non-signal: corretto il caso in cui non veniva trovato il pmf
- qstring-arg avvisa quando si utilizza QLatin1String::arg(int), poiché esegue il cast in QChar
La compilazione di Clazy è più veloce del 30%
1.6 2019-10-12
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, contributo di Jean-Michaël Celerier
Rimosso il livello 3. Spostati tutti i controlli del livello 3 al livello manuale. Non ha senso abilitarli tutti.
Ciascuno di essi deve essere attentamente considerato.
La versione minima di LLVM è stata portata a 5.0
Clazy non riscrive più i file direttamente, per evitare conflitti quando le invocazioni parallele modificano la stessa intestazione.
Clazy ora esporta un file yaml con le sostituzioni, da applicare con clang-apply-replacements.
Nello stesso modo in cui lo fanno gli altri strumenti clang.
Il modo per abilitare la riscrittura del codice è ora: -Xclang -plugin-arg-clazy -Xclang export-fixes per clang
o -export-fixes=somefile.yaml per clazy-standalone
Tutti gli altri argomenti fixit e le variabili di ambiente fixit sono stati rimossi
Grazie a Christian Gagneraud per aver contribuito con l'esportatore yaml fixit!
Questa versione corregge i seguenti bug:
- Regressioni corrette con LLVM 9.0
- L'infrastruttura Fixit è stata revisionata
1.5 2019-01-31
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- Nuovi fixit:
- range-loop ora supporta l'aggiunta di riferimenti mancanti o const-ref
- range-loop ora supporta l'aggiunta di qAsConst()
- function-args-by-ref ora aggiunge i riferimenti mancanti o const-ref (sperimentale)
- Introdotta la variabile di ambiente CLAZY_FIXIT_SUFFIX
Rimosso il supporto per l'oscuro -DCLAZY_BUILD_UTILS_LIB per semplificare CMakeLists.txt
Rinominata l'estensione Clazy da ClangLazy.so a ClazyPlugin.so
fully-qualified-moc-types ora avvisa anche per i valori di ritorno slot/invokable. Devono essere completamente qualificati per QML.
Questa versione corregge il seguente bug:
- Risolto un arresto anomalo (clang assert) in raw-environment-function
1.4 2018-09-23
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- connect-by-name
- skipped-base-method
- qstring-varargs
- fully-qualified-moc-types
- qt-keywords, con fixit incluso
- qhash-with-char-pointer-key
- wrong-qevent-cast
- static-pmf
- raw-environment-function
- empty-qstringliteral
- auto-unexpected-qstringbuilder ora avvisa anche in caso di restituzione di lambda QStringBuilder
ottimizzazioni delle prestazioni
Aggiunta l'opzione -header-filter=<regex> a clazy-standalone. Solo le intestazioni corrispondenti all'espressione regolare
conterranno avvisi, oltre al file .cpp dell'unità di traduzione, che non viene mai filtrato.
Aggiunta l'opzione -ignore-dirs=<regex> a clazy-standalone e la sua equivalente variabile di ambiente CLAZY_IGNORE_DIRS.
Aggiunta la variabile di ambiente CLAZY_HEADER_FILTER che aggiunge la funzionalità di cui sopra sia a clazy che a clazy-standalone
opzione unused-non-trivial-variable got unused-non-trivial-variable-no-whitelist
unused-non-trivial-variable ha ottenuto il supporto per user-blacklist e user-whitelist
container-inside-loop è ora un controllo manuale invece di level2
HiddenLevel è stato rinominato in ManualLevel
connect-3arg-lambda ora avvisa quando si passa una lambda a QTimer::singleShot() o QMenu::addAction()
senza un oggetto di contesto
old-style-connect ora avvisa anche per QMenu::addAction() e QMessageBox::open()
1.3 2017-11-26
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- 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 è ora un controllo di livello 2, anziché di livello 1. Perché è possibile omettere Q_OBJECT intenzionalmente.
Aggiunta l'opzione -only-qt, che renderà più rapido il bailout di Clazy sui file non-Qt. A questo scopo, la definizione di un file Qt è ogni volta che viene passato -DQT_CORE_LIB, il che è solitamente il caso nella maggior parte dei sistemi di compilazione.
Aggiunta l'opzione -qt-developer: quando si compila Qt con Clazy, saranno rispettate le linee guida specifiche per Qt, che al momento non sono molte, ma l'elenco crescerà.
1.2 2017-07-08
Questa versione aggiunge le seguenti funzionalità:
- Nuovi controlli:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
Questa versione corregge i seguenti bug:
- Eseguibile clazy-standalone. Permette di eseguire clazy su un database di compilazione JSON anziché come estensione. clang-tidy non supporta il caricamento di moduli esterni (https://github.com/llvm/llvm-project/issues/32086), quindi questa è una buona soluzione alternativa.
- Modalità qt-compat. Consente di disabilitare i controlli specifici di Qt5 passando -Xclang -plugin-arg-clazy -Xclang qt4-compat
- returning-data-from-temporary ora controlla il cast temporaneo di QByteArrays in char* quando restituito
- returning-data-from-temporary ora controlla anche l'assegnazione, non solo le istruzioni return
- unused-non-trivial-variable ora avvisa per QList, QVector e molti altri tipi non utilizzati
- Ora sono supportati i controlli basati su ASTMatcher
- clang 3.7 è stato abbandonato a causa di incompatibilità con il codice sorgente di ASTMatcher.
- Utilizzo di clazy v1.1 per il supporto clang >= 3.6
- clazylib.so non viene più compilato in modo predefinito, viene compilata solo l'estensione (ClangLazy.so). Passa -DCLAZY_BUILD_UTILS_LIB=ON per abilitare la libreria utils se stai sviluppando strumenti utilizzando le funzioni di utilità di clazy, cosa che probabilmente non stai facendo.
- L'opzione CLAZY_INSTALL_NO_HEADERS è stata rimossa. Installa la libreria utils e gli header oppure non installare nulla. Per impostazione predefinita, non viene installato nulla, tranne l'estensione e le pagine man.
1.1 2017-02-20
Questa versione aggiunge le seguenti funzionalità:
- Supporto macOS e Windows
- Nuovi controlli:
- 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
- Correzioni per:
- clang 4.0
- Qt 5.9
- Note:
- Miglioramento delle prestazioni del 60%
- Risolti molti falsi positivi