Clazy
Kategorie:
Wydania RSS
1.17.1 2026-03-22
To wydanie naprawia następujący błąd:
- fully-qualified-moc-types: Naprawienie regresji fałszywych alarmów dla typów wskaźnikowych/referencyjnych w typach ogólnych.
1.16.1 2026-03-22
To wydanie poprawkowe naprawia problemy z integracją z QtCreator oraz
zgodność z nowymi wersjami Qt. To wydanie obsługuje wersje LLVM od 19 do 21.
To wydanie naprawia następujące błędy:
- Diagnostyka jest zawsze wysyłana, nawet jeśli nie zawiera żadnej poprawki. Jest to używane
- do integracji w środowiskach IDE, w których proces clazy zapisuje plik YAML zawierający
- komunikaty, zakresy oraz opcjonalnie poprawki
- Dostosowanie sprawdzania readlock-detaching do poprawnego działania ze zmianami w Qt 6.11.
1.17 2026-02-15
To wydanie naprawia następujące błędy:
- Naprawienie sprawdzania non-pod-static wysyłającego ostrzeżenie dla każdego wpisu w kontenerze
- Naprawienie sprawdzania use-arrow-operator-instead-of-data wysyłającego fałszywy alarm, gdy wartość jest rzutowana
- Nie umieszczaj QVariant na białej liście dla detaching-temporary. QVariant::toString dostarczy QString, który nie jest odłączony
- detaching-temporary poprawnie sprawdza warunki, gdy łańcuch zawiera więcej niż dwa wywołania metod
- Poprawki dla detaching-temporary/detaching-member są bardziej niezawodne z zakresami poprawek dla wywołań operatorów
- Podczas używania QT_NAMESPACE clazy poprawnie obsługuje klasy Qt znajdujące się w tej konkretnej przestrzeni nazw
- Naprawienie błędnej metody zastępowania dla QMap::operator[]
- Dostosowanie projektu do kompilacji z LLVM22. Naprawiono testy dla qhash-namespace, fully-qualified-moc-types oraz old-style-connect
- Dostosowanie sprawdzania readlock-detaching do poprawnego działania ze zmianami w Qt 6.11.
- Przeniesienie qstring-ref do manuallevel, ponieważ nie jest zgodne z Qt6
To wydanie dodaje następującą funkcję:
- Nowe sprawdzenia: - compare-member-check: Sprawdza, czy operatory porównania nie pomijają zmiennych składowych klasy
C++20 jest teraz wymagane
Sprawdzenia związane z portowaniem na qt6-* zostały usunięte
1.16 2025-09-03
This release fixes the following bugs:
- unused-result-check: Fix crash when method decleration can not be resolved
- use-chrono-in-qtimer: Fix crash when using precompiled headers
- qt6-qhash-signature: Adapt check to use more proper logic for casts and fix crash in edgecases
- Ensure that clang21 works properly with clazy and produces same line/letter number as before (mismatches with operator calls)
- non-pod-global-static: Fix false positive with Q_IMPORT_PLUGIN in Qt-6.10
This release adds the following features:
- Clazy can finally be integrated into clang-tidy - one command to rule
- them all! All checks can be enabled using "clazy-<checkname>". For example:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, enabling all checks using
- `clazy-*` will also enable manual checks. It is recommended to be more granular.
- The plugin can be loaded using `-load=ClazyClangTidy.so`, for this, the plugin
- must be in the LD_LIBRARY_PATH. Otherwise, an absolute path may be specified.
- isempty-vs-count now provides fixits for all scenarios. Also, cases where
- the length is compared using "== 0", "< 1", "> 0" are now reported and have fixits.
- qt6-\* Porting checks are considered deprecated now and will be removed in the next release of clazy
- detaching-temporary and detaching-member checks provide fixits for methods that have const coutnerparts
- NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND all work in clazy now as
- expected. Individual clazy checks can be disabled when using a "clazy-"
- prefix. For example "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
This release fixes the following bugs:
- install-event-filter: Fix crash when there is no child at the given depth. BUG: 464372
- fully-qualified-moc-types: Fix enum/enum class not being evaluated. BUG: 423780
- Fixed crash in qstring-comparison-to-implicit-char. BUG: 502458
- Fixed crash when fully-qualified-moc-types encounters signals with expressions like "std::bitset<int(8)>"
- Fixed crash in qvariant-template-instantiation
This release adds the following features:
- New checks:
- readlock-detaching
- Update minimum Clang/LLVM to 19
- `clazy-standalone --version` contains git version ( output of `git describe`) if it is not a tagged commit
- Added missing methods to checks for detaching temporary/member lists or maps
1.14 2025-04-27
Ostrzeżenia clazy dla poniższej linii mogą zostać wyłączone, na przykład: clazy:exclude-next-line=check1,check2
Pomoc dla kompilowania na Clang 20
Zwiększenie szczegółowości (verbosity) niektórych komunikatów ostrzeżeń
sprawdzenia function-args-by-value oraz function-args-by-ref: dodanie nazwy funkcji oraz nazwy parametru do komunikatu ostrzeżenia
sprawdzenia unused-non-trivial-variable oraz non-pod-global-static: dodanie nazwy zmiennej do komunikatu ostrzeżenia
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- used-qunused-variable
To wydanie naprawia następujące błędy:
- sprawdzenie qstring-arg udostępnia automatyczną poprawkę (fix-it)
- Naprawienie błędu w unused-non-trivial-variable polegającego na zgłaszaniu ostrzeżeń, gdy ustawiono atrybut [[maybe_unused]]
- Dostosowanie qstring-arg do nadchodzącego Qt 6.9
- Naprawienie fałszywie pozytywnego wyniku (false positive) w fully-qualified-moc-types dla modyfikatorów const w argumentach generycznych
- Wyciszenie fałszywie pozytywnego wyniku (false positive) ostrzeżenia non-pod-global-static dla inicjalizacji modułu QML
- Naprawienie fałszywie pozytywnego wyniku (false positive) w function-args-by-value, który powodowałby błąd kompilacji
- w konstruktorach kopiujących, operatorach przypisania i sprawdzeniach równości
- Naprawienie fałszywie pozytywnych wyników (false positives) dla Q_EMIT(someSignal())
1.12 2024-06-30
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- Usunięcie sprawdzenia inefficient-qlist (naprawione w Qt6)
1.10 2021-07-20
To wydanie naprawia następujące błędy:
- Wymaga C++17
- Poprawki błędów:
- Naprawienie fałszywie pozytywnego wyniku (false positive) dla -Wclazy-lambda-in-connect
- Naprawienie awarii (crash) w copyable-polymorphic, gdy włączone było PCH
1.9 2021-01-10
To wydanie naprawia następujące błędy:
- Naprawienie spowolnienia clazy wprowadzonego w wersji 1.8. Działanie może być teraz nawet 4x szybsze.
- range-loop zostało rozdzielone na range-loop-detach i range-loop-reference
- Naprawienie fałszywie pozytywnych wyników (false positives) dla -Wclazy-connect-non-signal
1.8 2020-11-22
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- fixit dla missing-qobject-macro
1.7 2020-06-29
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- overloaded-signal
- niepoprawne sygnatury JNI
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: mniej fałszywie pozytywnych wyników (false positives)
To wydanie naprawia następujące błędy:
- connect-non-signal: Naprawienie przypadku, w którym nie znajdowano pmf
- qstring-arg ostrzega przy użyciu QLatin1String::arg(int), jako że rzutuje ono na QChar
Budowanie samego clazy jest o 30% szybsze
1.6 2019-10-12
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, nadesłane przez Jean-Michaëla Celeriera
Usunięto level3. Przeniesiono wszystkie sprawdzenia z level3 do poziomu manual. Włączanie ich wszystkich nie ma sensu.
Każde z nich musi być dokładnie przeanalizowane.
Minimalna wersja LLVM została podniesiona do 5.0
To powtórzony tekst, już to tłumaczyliśmy. Dawaj następny segment, szkoda czasu na duble.
Clazy eksportuje teraz plik YAML ze zmianami, które należy zastosować za pomocą clang-apply-replacements.
The same way other clang tooling does it.
Sposób na włączenie przepisywania kodu (code rewrite) to teraz: -Xclang -plugin-arg-clazy -Xclang export-fixes dla clang
lub -export-fixes=somefile.yaml dla clazy-standalone
All other fixit arguments and fixit env variables were removed
Podziękowania dla Christiana Gagnerauda za nadesłanie eksportera YAML z poprawkami (fixit yaml exporter)!
To wydanie naprawia następujące błędy:
- Naprawiono regresje w wersji z LLVM 9.0
- Infrastruktura poprawek (Fixit infrastructure) została gruntownie przebudowana
1.5 2019-01-31
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- Nowe poprawki (New Fixits):
- range-loop obsługuje teraz dodawanie brakujących referencji lub const-ref
- range-loop obsługuje teraz dodawanie qAsConst()
- function-args-by-ref obsługuje teraz dodawanie brakujących referencji lub const-ref (eksperymentalne)
- Wprowadzono zmienną środowiskową CLAZY_FIXIT_SUFFIX
Usunięto wsparcie dla niszowego -DCLAZY_BUILD_UTILS_LIB w celu uproszczenia CMakeLists.txt
Zmieniono nazwę wtyczki clazy z ClangLazy.so na ClazyPlugin.so
fully-qualified-moc-types ostrzega teraz również o wartościach zwracanych przez sloty/metody oznaczone jako invokable. Muszą być one w pełni kwalifikowane (fully qualified) dla QML.
To wydanie naprawia następujący błąd:
- Naprawiono awarię (asercję clanga) w raw-environment-function
1.4 2018-09-23
This release adds the following features:
- New Checks:
- 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 now also warns for lambdas returning QStringBuilder
performance optimizations
Added -header-filter=<regex> option to clazy-standalone. Only headers matching the regexp will
have warnings, besides the .cpp file from the translation unit, which is never filtered out.
Added -ignore-dirs=<regex> option to clazy-standalone, and its CLAZY_IGNORE_DIRS env variable equivalent.
Added CLAZY_HEADER_FILTER env variable which adds above functionality to both clazy and clazy-standalone
unused-non-trivial-variable got unused-non-trivial-variable-no-whitelist option
unused-non-trivial-variable got user-blacklist and user-whitelist support
container-inside-loop is now a manual check instead of level2
HiddenLevel was renamed to ManualLevel
connect-3arg-lambda now warns when passing a lambda to QTimer::singleShot() or QMenu::addAction()
without a context object
old-style-connect warns for QMenu::addAction() and QMessageBox::open() too now
1.3 2017-11-26
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- thread-with-slots
- connect-3arg-lambda
- qproperty-without-notify
- virtual-signal
- overridden-signal
- qhash-namespace
- onst-signal-or-slot
- lambda-unique-connection
missing-qobject-macro jest teraz testem poziomu level2 zamiast level1. Ponieważ ludzie mogą celowo pomijać Q_OBJECT.
Dodano opcję -only-qt, która powoduje, że clazy szybko rezygnuje z dalszego przetwarzania plików innych niż Qt. Na potrzeby tej opcji plik jest uznawany za plik Qt zawsze wtedy, gdy przekazana jest flaga -DQT_CORE_LIB, co zazwyczaj ma miejsce w większości systemów budowania.
Dodano opcję -qt-developer. Podczas budowania Qt za pomocą clazy, narzędzie to będzie uwzględniać specyficzne wytyczne dla Qt, których na razie nie ma zbyt wiele, ale lista ta będzie się powiększać.
1.2 2017-07-08
To wydanie dodaje następujące funkcje
- Nowe sprawdzenia:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
To wydanie naprawia następujące błędy:
- Plik wykonywalny clazy-standalone. Umożliwia uruchomienie clazy z użyciem bazy danych kompilacji JSON zamiast działania jako wtyczka. clang-tidy nie obsługuje ładowania zewnętrznych modułów (https://github.com/llvm/llvm-project/issues/32086), więc jest to dobre obejście tego problemu.
- Tryb qt-compat. Umożliwia wyłączenie testów specyficznych dla Qt5 poprzez przekazanie flagi -Xclang -plugin-arg-clazy -Xclang qt4-compat
- returning-data-from-temporary sprawdza teraz, czy tymczasowe obiekty QByteArray są rzutowane na char w momencie ich zwracania*
- returning-data-from-temporary sprawdza teraz również przypisania, a nie tylko instrukcje return
- unused-non-trivial-variable ostrzega teraz o nieużywanych obiektach QList, QVector oraz wielu innych typach
- Testy oparte na ASTMatchers są teraz obsługiwane
- Wsparcie dla clang 3.7 zostało porzucone z powodu niezgodności źródłowych w ASTMatchers.
- Użyj clazy v1.1, aby uzyskać wsparcie dla clang >= 3.6
- clazylib.so nie jest już budowane domyślnie – budowana jest tylko wtyczka (ClangLazy.so). Przekaż -DCLAZY_BUILD_UTILS_LIB=ON, aby włączyć bibliotekę narzędziową, jeśli tworzysz narzędzia korzystające z wygodnych funkcji clazy, a co do czego istnieje prawdopodobieństwo, że tego nie robisz.
- Opcja CLAZY_INSTALL_NO_HEADERS została usunięta. Albo instalujesz bibliotekę narzędziową wraz z nagłówkami, albo nic z tych rzeczy. Domyślnie nie jest instalowane nic poza wtyczką i stronami podręcznika systemowego (man).
1.1 2017-02-20
To wydanie dodaje następujące funkcje
- Wsparcie dla macOS i Windows
- Nowe sprawdzenia:
- 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
- Poprawki błędów w:
- clang 4.0
- Qt 5.9
- Uwagi:
- 60% wzrost wydajności
- Naprawiono wiele fałszywych alarmów (false positives)