Clazy
Kategorije:
Izdaje 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
Ta izdaja odpravlja naslednje napake:
- unused-result-check: Popravi sesutje, ko ni mogoče razrešiti deklaracije metode
- use-chrono-in-qtimer: popravi sesutje pri uporabi vnaprej prevedenih glav
- qt6-qhash-signature: Prilagodi preverjanje za uporabo ustreznejše logike za ulitke in popravi sesutje v robnih primerih
- Prepriča se, da clang21 pravilno deluje s clazy in ustvari isto številko vrstice/črke kot prej (neujemanje s klici operatorja)
- non-pod-global-static: Popravi lažno pozitivno vrednost z Q_IMPORT_PLUGIN v Qt-6.10
Ta izdaja dodaja naslednje zmožnosti:
- Clazy je končno mogoče vključiti v clang-tidy - en ukaz za vladanje
- vsa! Vsa preverjanja je mogoče omogočiti z uporabo "clazy-<checkname>". Na primer:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, omogoča vsa preverjanja z
- `clazy-*` bo omogočil tudi ročna preverjanja. Priporočljivo je, da je bolj zrnat.
- Vtičnik lahko naložite z `-load=ClazyClangTidy.so`, za to vtičnik
- mora biti v LD_LIBRARY_PATH. V nasprotnem primeru je lahko določena absolutna pot.
- isempty-vs-count zdaj ponuja popravke za vse scenarije. Tudi primeri, ko
- se dolžina primerja z uporabo "== 0", "< 1", "> 0" se zdaj poroča in ima popravke.
- qt6-\* Prenosi preverjanj veljajo za zastarela in bodo odstranjena v naslednji izdaji clazy
- detaching-temporary in detaching-member nudijo popravke za metode, ki imajo const coutnerparts
- NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND zdaj vsi delujejo v clazy kot
- pričakovano. Posamezna preverjanja clazy je mogoče onemogočiti, če uporabljate predlogo "clazy-"
- Na primer "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
Ta izdaja odpravlja naslednje napake:
- install-event-filter: Popravi sesutje, ko na dani globini ni otroka. NAPAKA: 464372
- fully-qualified-moc-types: popravljen razred enum/enum, ki ni bil ocenjen. NAPAKA: 423780
- Popravljeno sesutje v qstring-comparison-to-implicit-char. NAPAKA: 502458
- Popravljeno sesutje, ko fully-qualified-moc-types naleti na signale z izrazi, kot je "std::bitset<int(8)>"
- Popravljeno sesutje v primeru qvariant-template-instanciation
Ta izdaja dodaja naslednje zmožnosti:
- Novi pregledi:
- readlock-detaching
- Posodobite minimalnega Clang/LLVM na 19
- `clazy-standalone --version` vsebuje različico git (izhod `git describe`), če ni označena potrditev
- Dodane manjkajoče metode preverjanja za odklop začasnih/članskih seznamov ali mape
1.14 2025-04-27
Clazy opozorila za naslednjo vrstico lahko onemogočite, na primer: clazy:exclude-next-line=check1,check2
Podpora za prevajanje proti Clang 20
povečati komunikativnost nekaterih opozorilnih sporočil
preveri `function-args-by-value` in `function-args-by-ref`: doda ime funkcije in ime parametra opozorilnemu sporočilu
preveri `unused-non-trivial-variable` in `non-pod-global-static`: dodajte ime spremenljivke v opozorilno sporočilo
Ta izdaja dodaja naslednje zmožnosti:
- Novi pregledi:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- used-qunused-variable
Ta izdaja odpravlja naslednje napake:
- qstring-arg check zagotavlja popravek
- Popravljena unused-non-trivial-variable, ki ne opozarja, ko je nastavljen [[maybe_unused]]
- Popravljen qstring-arg za prihajajoči Qt 6.9
- Popravljen lažno pozitiven fully-qualified-moc-types za modifikatorje const generičnih argumentov
- Utišaj lažno pozitivno non-pod-global-static opozorilo za inicializacijo modula QML
- Popravi napačno pozitiven argument funkcije po vrednosti, ki bi povzročil napako pri prevajanju
- v konstruktorjih kopiranja, operatorjih dodeljevanja in preverjanjih enakosti
- Lažni pozitivni rezultati za `Q_EMIT(someSignal())` so zdaj popravljeni
1.12 2024-06-30
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- Odstranjeno preverjanje neučinkovitega qlist (popravljeno v Qt6)
1.10 2021-07-20
Ta izdaja odpravlja naslednje napake:
- Zahteva C++17
- Popravki napak:
- Popravljen lažno pozitiven -Wclazy-lambda-in-connect
- Odpravljeno sesutje v copyable-polymorphic, ko je bil omogočen PCH
1.9 2021-01-10
Ta izdaja odpravlja naslednje napake:
- Popravljena clazy upočasnitev, uvedena v 1.8. Zdaj sem lahko do 4x hitrejša.
- range-loop je bil razdeljen na range-loop-detach in range-loop-reference
- Popravljeni lažni pozitivni učinki -Wclazy-connect-non-signal
1.8 2020-11-22
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- popravek za manjkajoči-qobject-macro
1.7 2020-06-29
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- preobremenjen signal
- neveljavni podpisi JNI
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: manj lažno pozitivnih
Ta izdaja odpravlja naslednje napake:
- connect-non-signal: Popravi primer, ko ni našel pmf
- qstring-arg opozori pri uporabi QLatin1String::arg(int), saj predvaja v QChar
Sama gradnja clazy je 30% hitrejša
1.6 2019-10-12
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, prispeval Jean-Michaël Celerier
Odstranjena raven 3. Vsa preverjanja stopnje 3 premaknjena na ročno raven. Nima smisla omogočiti vseh.
Vsakega je treba natančno preučiti.
Najmanjši LLVM je bil dvignjen na 5,0
Clazy ne prepisuje več datotek neposredno, da se izogne dirkam, ko vzporedni klici spremenijo isto glavo.
Clazy zdaj izvozi datoteko yaml z zamenjavami, ki se uporabijo s clang-apply-replacements.
Na enak način kot to počnejo druga orodja clang.
Način za omogočanje prepisovanja kode je zdaj: -Xclang -plugin-arg-clazy -Xclang izvozni popravki za clang
ali -export-fixes=somefile.yaml za clazy-standalone
Vsi drugi argumenti fixit in spremenljivke fixit env so bili odstranjeni
Hvala Christianu Gagneraudu za prispevek k izvozniku fixit yaml!
Ta izdaja odpravlja naslednje napake:
- Popravljene regresije z LLVM 9.0
- Infrastruktura Fixit je bila prenovljena
1.5 2019-01-31
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- Novi popravki:
- range-loop zdaj podpira dodajanje manjkajočih ref ali const-ref
- range-loop zdaj podpira dodajanje qAsConst()
- funkcija-args-by-ref zdaj dodaja manjkajoče ref ali const-ref (eksperimentalno)
- Predstavljena spremenljivka env CLAZY_FIXIT_SUFFIX
Odstranjena podpora za nejasen -DCLAZY_BUILD_UTILS_LIB za poenostavitev CMakeLists.txt
Vtičnik clazy je bil preimenovan iz ClangLazy.so v ClazyPlugin.so
fully-qualified-moc-types zdaj opozarja tudi za vrnjene vrednosti reže/priklica. Biti morajo popolnoma usposobljeni za QML.
Ta izdaja odpravlja naslednjo napako:
- Popravljeno sesutje (clang assert) v raw-environment-function
1.4 2018-09-23
Ta izdaja dodaja naslednje zmožnosti:
- Nova preverjanja:
- connect-by-name
- skipped-base-method
- qstring-varargs
- fully-qualified-moc-types
- qt-keywords, with fixit included
- qhash-with-char-pointer-key
- wrong-qevent-cast
- static-pmf
- raw-environment-function
- empty-qstringliteral
- auto-unexpected-qstringbuilder zdaj opozarja tudi na lambde, ki vračajo QStringBuilder
optimizacije delovanja
Dodana možnost -header-filter=<regex> v clazy-standalone. Samo glave, ki se ujemajo z regularnim izrazom, bodo
imele opozorila, poleg datoteke .cpp iz prevajalske enote, ki ni nikoli filtrirana.
Dodana možnost -ignore-dirs=<regex> v clazy-standalone in njen ekvivalent spremenljivke env CLAZY_IGNORE_DIRS.
Dodana spremenljivka env CLAZY_HEADER_FILTER, ki doda zgornjo funkcionalnost v clazy in cv lazy-standalone
unused-non-trivial-variable je pridobila možnost unused-non-trivial-variable-no-whitelist
unused-non-trivial-variable je dobila podporo za črni in beli seznam uporabnikov
container-inside-loop je zdaj ročno preverjanje namesto level2
HiddenLevel je bil preimenovan v ManualLevel
connect-3arg-lambda zdaj opozori pri posredovanju lambda v QTimer::singleShot() ali QMenu::addAction()
brez kontekstnega predmeta
old-style-connect opozarja tudi za QMenu::addAction() in QMessageBox::open() na zdaj
1.3 2017-11-26
Ta izdaja dodaja naslednje zmožnosti:
- Novi pregledi:
- 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 je zdaj preverjanje level2 namesto level1. Ker lahko ljudje namerno izpustijo Q_OBJECT.
Dodana možnost -only-qt, ki bo omogočila zgodnjo reševanje datotek, ki niso Qt. V ta namen je definicija datoteke Qt vsakič, ko je posredovan -DQT_CORE_LIB, kar je običajno v večini gradbenih sistemov.
Dodana možnost -qt-developer, pri izdelavi Qt s programom clazy bo upošteval posebne smernice za Qt, ki jih trenutno ni veliko, vendar se bo seznam povečal.
1.2 2017-07-08
Ta izdaja dodaja naslednje zmožnosti:
- Novi pregledi:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
Ta izdaja odpravlja naslednje napake:
- samostojna izvršljiva datoteka. Omogoča zagon Crazy proti zbirki podatkov JSON namesto kot vtičnik. clang-tidy ne podpira nalaganja zunanjih modulov (https://github.com/llvm/llvm-project/issues/32086), zato je to dobra rešitev.
- način qt-compat. Omogoča onemogočanje posebnih preverjanj Qt5 s posredovanjem -Xclang -plugin-arg-clazy -Xclang qt4-compat
- returning-data-from-temporary zdaj preverja začasne QByteArrays, ki se ob vrnitvi pretvorijo v char*
- returning-data-from-temporary zdaj preverja tudi dodelitev, ne samo povratnih ukazov
- unused-non-trivial-variable zdaj opozarja na neuporabljene QList, QVector in številne druge vrste
- Preverjanja na podlagi ASTMatchers so zdaj podprta
- clang 3.7 je bil opuščen zaradi nezdružljivosti vira ASTMatchers.
- Uporabi clazy v1.1 za podporo za clang >= 3.6
- clazylib.so se ne gradi več privzeto, ampak samo vtičnik (ClangLazy.so). Podajte -DCLAZY_BUILD_UTILS_LIB=ON, da omogočite knjižnico pripomočkov, če razvijate orodja z uporabo priročnih funkcij clazy, kar verjetno niste.
- Možnost CLAZY_INSTALL_NO_HEADERS je bila odstranjena. Ali namestite knjižnico pripomočkov in glave ali pa sploh nič. Privzeto ni nameščeno nič, razen strani vtičnika in priročnika.
1.1 2017-02-20
Ta izdaja dodaja naslednje zmožnosti:
- podpora za macOS in Windows
- Novi pregledi:
- 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
- Popravki proti:
- clang 4.0
- Qt 5.9
- Opombe:
- 60% izboljšanje zmogljivosti
- Popravljenih veliko lažnih pozitivnih rezultatov