Preskoči na vsebino

Clazy

Kategorije:   Razvoj
Zaslonska slika Clazy
Clazy je vtičnik prevajalnika clang, ki oddaja opozorila povezana z najboljšimi praksami Qt.
Namesti na
Linux
Ta gumb deluje samo z Discover in ostalimi trgovinami aplikacij AppStream. Lahko uporabite tudi upravljalnik paketov vaše distribucije.

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
1.0 2016-09-12
0.0.1 2015-06-10
Prva izdaja