Clazy
Kategórie:
Vydania RSS
1.17.1 2026-03-22
Toto vydanie opravuje nasledujúcu chybu:
- fully-qualified-moc-types: Oprava falošne pozitívnej regresie pre typy ukazovateľov/referencií v generikách.
1.16.1 2026-03-22
Toto je opravné vydanie na riešenie problémov s integráciou QtCreator a
kompatibility s novými verziami Qt. Toto vydanie podporuje verzie LLVM 19 až 21.
Táto verzia opravuje nasledujúce chyby:
- Diagnostiky sa vždy generujú, aj keď neobsahujú opravu. Toto sa používa
- na integráciu do IDE, kde proces clazy zapisuje súbor YAML obsahujúci
- správy, rozsahy a voliteľne opravy
- Prispôsobenie kontroly readlock-detaching pre správnu funkčnosť so zmenami Qt 6.11
1.17 2026-02-15
Táto verzia opravuje nasledujúce chyby:
- Oprava kontroly non-pod-static generujúcej varovanie pre každý prvok kontajnera
- Oprava use-arrow-operator-instead-of-data generujúcej falošne pozitívny výsledok pri pretypovaní hodnoty
- Nepridávať QVariant na biely zoznam pre detaching-temporary. QVariant::toString poskytne QString, ktorý nie je odpojený
- detaching-temporary správne kontroluje podmienky pri reťazení viac ako dvoch volaní metód
- Opravy pre detaching-temporary/detaching-member sú spoľahlivejšie s rozsahmi opráv pre volania operátorov
- Pri použití QT_NAMESPACE clazy správne spracováva triedy Qt v tomto špecifickom mennom priestore
- Oprava nesprávnej náhradnej metódy pre QMap::operator[]
- Umožniť kompiláciu projektu s LLVM22. Testy qhash-namespace, fully-qualified-moc-types, old-style-connect boli opravené
- Prispôsobenie kontroly readlock-detaching pre správnu funkčnosť so zmenami Qt 6.11
- Presunúť qstring-ref na manuálnu úroveň, pretože nie je kompatibilný s Qt6
Toto vydanie pridáva nasledujúcu funkciu:
- Nové kontroly: - compare-member-check: Kontroluje, či porovnávacie operátory nepoužívajú všetky členské premenné triedy.
Na kompiláciu sa teraz vyžaduje C++20
Kontroly portovania qt6-\* boli odstránené
1.16 2025-09-03
Táto verzia opravuje nasledujúce chyby:
- unused-result-check: Oprava pádu, keď nie je možné rozpoznať deklaráciu metódy
- use-chrono-in-qtimer: Oprava pádu pri použití predkompilovaných hlavičiek
- qt6-qhash-signature: Prispôsobenie kontroly na správnejšiu logiku pre pretypovania a oprava pádu v hraničných prípadoch
- Zabezpečiť správnu funkčnosť clang21 s clazy a rovnaké čísla riadkov/znakov ako predtým (nezhody s volaniami operátorov)
- non-pod-global-static: Oprava falošne pozitívneho výsledku s Q_IMPORT_PLUGIN v Qt-6.10
Toto vydanie pridáva nasledujúce funkcie:
- Clazy sa konečne môže integrovať do clang-tidy - jeden príkaz na ovládanie
- všetkého! Všetky kontroly možno povoliť pomocou "clazy-<checkname>". Napríklad:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, povolenie všetkých kontrol pomocou
- `clazy-*` povolí aj manuálne kontroly. Odporúča sa väčšia granularita.
- Modul je možné načítať pomocou `-load=ClazyClangTidy.so`, modul
- musí byť v LD_LIBRARY_PATH. Inak je možné zadať absolútnu cestu.
- isempty-vs-count teraz poskytuje opravy pre všetky scenáre. Tiež prípady, kde
- sa dĺžka porovnáva pomocou "== 0", "< 1", "> 0" sú teraz nahlasované a majú opravy.
- Kontroly portovania qt6-\* sa teraz považujú za zastarané a budú odstránené v nasledujúcom vydaní clazy
- Kontroly detaching-temporary a detaching-member poskytujú opravy pre metódy, ktoré majú konštantné náprotivky
- NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND v clazy teraz fungujú
- podľa očakávania. Jednotlivé kontroly clazy je možné zakázať pri použití predpony
- "clazy-". Napríklad "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
Táto verzia opravuje nasledujúce chyby:
- install-event-filter: Oprava pádu, keď na danej hĺbke nie je žiadny potomok. BUG: 464372
- fully-qualified-moc-types: Oprava nevyhodnocovania enum/enum class. BUG: 423780
- Opravený pád v qstring-comparison-to-implicit-char. BUG: 502458
- Opravený pád, keď fully-qualified-moc-types narazí na signály s výrazmi ako "std::bitset<int(8)>"
- Opravený pád v qvariant-template-instantiation
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- readlock-detaching
- Aktualizácia minimálnej verzie Clang/LLVM na 19
- `clazy-standalone --version` obsahuje verziu git (výstup `git describe`), ak nejde o označený commit
- Pridané chýbajúce metódy do kontrol pre odpájanie dočasných/členských zoznamov alebo máp
1.14 2025-04-27
Varovania clazy pre nasledujúci riadok je možné zakázať, napríklad: clazy:exclude-next-line=check1,check2
Podpora kompilácie proti Clang 20
zvýšenie podrobnosti niektorých varovných správ
kontroly `function-args-by-value` a `function-args-by-ref`: pridanie názvu funkcie a parametra do varovnej správy
kontroly `unused-non-trivial-variable` a `non-pod-global-static`: pridanie názvu premennej do varovnej správy
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- used-qunused-variable
Táto verzia opravuje nasledujúce chyby:
- Kontrola qstring-arg poskytuje opravu
- Opravená unused-non-trivial-variable, aby nevarovala pri nastavení [[maybe_unused]]
- Opravená qstring-arg pre nadchádzajúce Qt 6.9
- Opravený falošne pozitívny výsledok fully-qualified-moc-types pre konštantné modifikátory generických argumentov
- Potlačenie falošne pozitívneho varovania non-pod-global-static pre inicializáciu modulu QML
- Oprava falošne pozitívneho výsledku function-args-by-value, ktorý by spôsobil chybu kompilácie
- v kopírovacích konštruktoroch, operátoroch priradenia a kontrolách rovnosti
- Falošne pozitívne výsledky pre `Q_EMIT(someSignal())` sú teraz opravené
1.12 2024-06-30
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- Odstránená kontrola inefficient-qlist (opravené v Qt6)
1.10 2021-07-20
Táto verzia opravuje nasledujúce chyby:
- Vyžaduje C++17
- Opravy chýb:
- Opravený falošne pozitívny výsledok -Wclazy-lambda-in-connect
- Opravený pád v copyable-polymorphic pri povolení PCH
1.9 2021-01-10
Táto verzia opravuje nasledujúce chyby:
- Opravené spomalenie clazy zavedené vo verzii 1.8. Teraz môže byť až 4x rýchlejšie.
- range-loop bola rozdelená na range-loop-detach a range-loop-reference
- Opravené falošne pozitívne výsledky -Wclazy-connect-non-signal
1.8 2020-11-22
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- oprava pre missing-qobject-macro
1.7 2020-06-29
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- preťažený signál
- neplatné podpisy JNI
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: menej falošne pozitívnych výsledkov
Táto verzia opravuje nasledujúce chyby:
- connect-non-signal: Oprava prípadu, keď nenašiel pmf
- qstring-arg varuje pri použití QLatin1String::arg(int), pretože sa pretypuje na QChar
Zostavenie samotného clazy je o 30 % rýchlejšie
1.6 2019-10-12
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, prispel Jean-Michaël Celerier
Odstránená úroveň 3. Všetky kontroly úrovne 3 presunuté na manuálnu úroveň. Nemá zmysel povoliť ich všetky.
Každá musí byť starostlivo zvážená.
Minimálna verzia LLVM bola zvýšená na 5.0
Clazy už priamo neprepisuje súbory, aby sa predišlo kolíziám pri paralelných volaniach meniacich rovnakú hlavičku.
Clazy teraz exportuje súbor yaml s náhradami, na aplikovanie pomocou clang-apply-replacements.
Rovnakým spôsobom ako iné nástroje clang.
Spôsob povolenia prepisu kódu je teraz: -Xclang -plugin-arg-clazy -Xclang export-fixes pre clang
alebo -export-fixes=somefile.yaml pre clazy-standalone
Všetky ostatné argumenty opráv a premenné prostredia pre opravy boli odstránené
Vďaka Christianovi Gagneraudovi za príspevok exportéra opráv yaml!
Táto verzia opravuje nasledujúce chyby:
- Opravené regresie s LLVM 9.0
- Infraštruktúra opráv bola prepracovaná
1.5 2019-01-31
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- Nové opravy:
- range-loop teraz podporuje pridanie chýbajúcich referencií alebo const-ref
- range-loop teraz podporuje pridanie qAsConst()
- function-args-by-ref teraz pridáva chýbajúce referencie alebo const-ref (experimentálne)
- Zavedená premenná prostredia CLAZY_FIXIT_SUFFIX
Odstránená podpora pre málo známy -DCLAZY_BUILD_UTILS_LIB na zjednodušenie CMakeLists.txt
Premenovaný modul clazy z ClangLazy.so na ClazyPlugin.so
fully-qualified-moc-types teraz varuje aj pre návratové hodnoty slotov/invokable. Pre QML musia byť plne kvalifikované.
Toto vydanie opravuje nasledujúcu chybu:
- Opravený pád (assert clang) v raw-environment-function
1.4 2018-09-23
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- connect-by-name
- skipped-base-method
- qstring-varargs
- fully-qualified-moc-types
- qt-keywords, vrátane opravy
- qhash-with-char-pointer-key
- wrong-qevent-cast
- static-pmf
- raw-environment-function
- empty-qstringliteral
- auto-unexpected-qstringbuilder teraz varuje aj pre lambdy vracajúce QStringBuilder
optimalizácie výkonu
Pridaná možnosť -header-filter=<regex> do clazy-standalone. Iba hlavičky zodpovedajúce regulárnemu výrazu budú
mať varovania, okrem súboru .cpp z prekladovej jednotky, ktorý sa nikdy nefiltruje.
Pridaná možnosť -ignore-dirs=<regex> do clazy-standalone a jej ekvivalent v premennej prostredia CLAZY_IGNORE_DIRS.
Pridaná premenná prostredia CLAZY_HEADER_FILTER, ktorá pridáva vyššie uvedenú funkčnosť do clazy aj clazy-standalone
unused-non-trivial-variable získala možnosť unused-non-trivial-variable-no-whitelist
unused-non-trivial-variable získala podporu user-blacklist a user-whitelist
container-inside-loop je teraz manuálna kontrola namiesto úrovne 2
HiddenLevel bola premenovaná na ManualLevel
connect-3arg-lambda teraz varuje pri odovzdávaní lambdy do QTimer::singleShot() alebo QMenu::addAction()
bez kontextového objektu
old-style-connect teraz varuje aj pre QMenu::addAction() a QMessageBox::open()
1.3 2017-11-26
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- 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 teraz kontrola úrovne 2 namiesto úrovne 1. Pretože ľudia môžu Q_OBJECT vynechať zámerne.
Added -only-qt option, which will make clazy bailout early on non-Qt files. For this purpose, the definition of a Qt file is whenever -DQT_CORE_LIB is passed, which is usually the case in most build systems.
Added -qt-developer option, when building Qt with clazy it will honour specific guidelines for Qt, which are not many right now but the list will grow.
1.2 2017-07-08
Toto vydanie pridáva nasledujúce funkcie:
- Nové kontroly:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
Táto verzia opravuje nasledujúce chyby:
- clazy-standalone executable. Allows to run clazy against a JSON compilation database instead of as a plugin. clang-tidy doesn't support loading external modules (https://github.com/llvm/llvm-project/issues/32086) so this is a good workaround.
- qt-compat mode. Allows to disable Qt5 specific checks by passing -Xclang -plugin-arg-clazy -Xclang qt4-compat
- returning-data-from-temporary now checks for temporary QByteArrays casting to char* when returned
- returning-data-from-temporary now checks for assignment too, not only return statements
- unused-non-trivial-variable now warns for unused QList, QVector and many more types
- Kontroly založené na ASTMatchers sú teraz podporované
- clang 3.7 bol vyradený kvôli nekompatibilite zdrojového kódu ASTMatchers.
- Použite clazy v1.1 pre podporu clang >= 3.6
- clazylib.so no longer gets built by default, only the plugin (ClangLazy.so) gets built. Pass -DCLAZY_BUILD_UTILS_LIB=ON to enable the utils library if you're developing tools using clazy's convenience functions, which you're probably not.
- CLAZY_INSTALL_NO_HEADERS option was removed. Either install the utils library and headers or nothing at all. By default nothing is installed, except the plugin and man pages.
1.1 2017-02-20
Toto vydanie pridáva nasledujúce funkcie:
- Podpora macOS a Windows
- Nové kontroly:
- 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
- Opravy pre:
- clang 4.0
- Qt 5.9
- Poznámky:
- 60 % zlepšenie výkonu
- Opravených mnoho falošne pozitívnych výsledkov