Clazy
Categories:
Releases 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
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- unused-result-check: გასწორდა ავარიული დასრულება, როცა მეთოდის აღწერის ამოხსნა შეუძლებელია
- use-chrono-in-qtimer: გასწორდა ავარიული დასრულება წინასწარ დაკომპილებული თავსართების გამოყენებისას
- qt6-qhash-signature: შემოწმება გარდაქმნებისთვის უფრო მართებული ლოგიკის გამოსაყენებლად შეიცვალა და გასწორდა ავარია გამონაკლის შემთხვევებში
- დარწმუნდით, რომ clang21 clazy-სთან გამართულად მუშაობს და ისეთივე ხაზის/ასოს ნომერს აბრუნებს, როგორსაც ადრე (შეუსაბამობები ოპერატორის გამოძახებებთან)
- non-pod-global-static: გასწორდა ცრუ დადებითი ალამთან Q_IMPORT_PLUGIN Qt-6.10-ში
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- Clazy-ს ინტეგრაცია clang-tidy-ში საბოლოოდ შესაძლებელია — ერთი ბრძანება სამართავად
- ყველა მათგანს! ყველა შემოწმების გააქტიურება შესაძლებელია "clazy-<checkname>" გამოყენებით. მაგალითად:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, ჩაირთო ყველა შემოწმება პროგრამით
- clazy-* ასევე გაააქტიურებს ხელით შემოწმებებს უფრო დეტალური პარამეტრების გამოყენებაა რეკომენდებული.
- დამატების ჩატვირთვა შესაძლებელია -load=ClazyClangTidy.so გამოყენებით ამისთვის დამატება
- უნდა იყოს LD_LIBRARY_PATH-ში. წინააღმდეგ შემთხვევაში შესაძლებელია აბსოლუტური გზის მითითება.
- isempty-vs-count ახლა უკვე ყველა სცენარისთვის უზრუნველყოფს Fixit-ებს. ასევე, შემთხვევებშიც, სადაც
- სიგრძე შედარებულია "== 0" "< 1" "> 0" გამოყენებით ახლა უკვე აღირიცხება და გააჩნია Fixit-ები.
- qt6-\* პორტირების შემოწმებები ახლა უკვე მოძველებულად ითვლება და clazy-ს შემდეგ ვერსიაში ამოღებული იქნება
- detaching-temporary და detaching-member შემოწმებები უზრუნველყოფს Fixit-ებს იმ მეთოდებისთვის რომლებსაც მუდმივი ანალოგები გააჩნიათ
- NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND ყველა მათგანი ახლა უკვე მუშაობს clazy-ში როგორც
- მოსალოდნელია. ინდივიდუალური clazy შემოწმებების გამორთვა შესაძლებელია "clazy-" გამოყენებისას
- პრეფიქსი. მაგალითად "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- install-event-filter: გასწორდა ავარია, როცა მოცემულ სიღრმეზე შვილი ობიექტი არ არსებობს. ხარვეზი: 464372
- fully-qualified-moc-types: გასწორდა ჩამონათვალის/ჩამონათვალის კლასის შეფასების ხარვეზი. ხარვეზი: 423780
- გასწორდა შეცდომა qstring-comparison-to-implicit-char-ში. შეცდომა: 502458
- fully-qualified-moc-types: გასწორდა ავარია, როცა "std::bitset<int(8)>" მსგავსი გამოსახულებების მქონე სიგნალები გვხვდება
- გასწორდა შეცდომა qvariant-template-instantiation-შ
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- readlock-detaching
- მინიმალური Clang/LLVM-ის ვერსია განახლდა 19-მდე
- clazy-standalone --version git-ის ვერსიას შეიცავს (git describe ბრძანების შედეგს), თუ ის მონიშნული კომიტი არაა
- დაემატა ნაკლული მეთოდები დროებითი ან წევრი სიების და ასახვების განცალკევების შესამოწმებლად
1.14 2025-04-27
Clazy გაფრთხილებების გამორთვა შესაძლებელია შემდეგი ხაზისთვის. მაგ: clazy:exclude-next-line=check1,check2
Clang 20-ით კომპილაციის მხარდაჭერა
გაიზარდა ზოგიერთი გაფრთხილების შეტყობინების დეტალურობა
ამოწმებს 'function-args-by-value'-ს და 'function-args-by-ref'-ს: გაფრთხილების შეტყობინებისთვის ფუნქციის სახელის და პარამეტრის სახელის დამატება
ამოწმებს 'unused-non-trivial-variable'-ს და 'non-pod-global-static'-ს: გაფრთხილების შეტყობინებისთვის ცვლადის სახელის დამატება
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- used-qunused-variable
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- qstring-arg შემოწმება მოგაწვდით გასწორებას
- გასწორდა unused-non-trivial-variable რომ არ გამოაგდოს გაფრთხილება, როცა [[maybe_unused]] დაყენებულია
- გასწორდა qstring-arg Qt 6.9-ისთვის, რომელიც მალე გამოვა
- გასწორდა fully-qualified-moc-types-ის ცრუ დადებითი ზოგადი არგუმენტების const მოდიფიკატორისთვის
- ცრუ დადებითი non-pod-global-static-ის გაფრთხილების გაჩუმება QML მოდულის ინიციალიზაციისთვის
- გასწორდა ფუნქციის function-args-by-value ცრუ დადებითი რაც კომპილაციის შეცდომას გამოიწვევდა
- ასლის კონსტრუქტორებში მინიჭების ოპერატორებსა და ტოლობის შემოწმებებში
- გასწორდა ცრუ დადებითები `Q_EMIT(someSignal())`-ისთვის
1.12 2024-06-30
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- წაიშალა შემოწმება inefficient-qlist (გასწორდა Qt6-ში)
1.10 2021-07-20
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- მოითხოვს: C++17
- შეცდომების გასწორება:
- გასწორდა -Wclazy-lambda-in-connect ცრუ-დადებითი
- გასწორდა ავარიული დასრულება copyable-polymorphic-ში, როცა PCH ჩართული იყო
1.9 2021-01-10
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- გასწორდა 1.8 ვერსიაში გაჩენილი clazy-ს შენელება და ახლა 4-ჯერ უფრო სწრაფია.
- range-loop გაიყო ორად: range-loop-detach და range-loop-reference
- გასწორდა -Wclazy-connect-non-signal ცრუ დადებითები
1.8 2020-11-22
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- გასწორება missing-qobject-macro-ისთვის
1.7 2020-06-29
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- გადატვირთული სიგნალი
- არასწორი JNI ხელმოწერები
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: ნაკლები ცრუ დადებითი
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- connect-non-signal: გასწორდა შემთხვევა, როცა მან pmf ვერ იპოვა
- qstring-arg გაგაფრთხილებთ QLatin1String::arg(int)-ის გამოყენებისას, რადგან ის მას QChar-ში გადაჰყავს
clazy-ის აგება ახლა 30%-ით უფრო სწრაფია
1.6 2019-10-12
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, შემოგვწირა Jean-Michaël Celerier-მა
წაიშალა level3: level3-ის ყველა შემოწმება manual დონეზე გადავიდა რადგან ყველას ჩართვას აზრი არ აქვს.
თითოეული დაწვრილებით უნდა განიხილოთ.
LLVM-ის მინიმალური ვერსია აწეულია 5.0-ზე
Clazy აღარ გადააწერს ფაილებს ზედ პირდაპირ, რომ თავიდან აიცილოს იშვიათი შემთხვევა, როცა პარალელური გაშვება იგივე თავსართს ცვლის.
Clazy ახლა yaml ფაილს ჩანაცვლებებით გაიტანს, რომ გადაატაროთ ბრძანებით clang-apply-replacements.
იგივენაირად, როგორც ამას clang აკეთებს.
ახლა გზა, რომლითაც კოდის გადაწერა შეგიძლიათ, ჩართოთ, არის: -Xclang -plugin-arg-clazy -Xclang export-fixes clang-ისთვის
ან -export-fixes=somefile.yaml clazy-standalone-ისთვის
წაიშალა ყველა სხვა fixit არგუმენტი და fixit გარემოს ცვლადი
მადლობა Christian Gagneraud-ს fixit yaml გამტანისთვის!
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- გასწორდა რეგრესიები LLVM 9.0-ისთან
- Fixit-ის ინფრასტრუქტურა სრულად განახლდა
1.5 2019-01-31
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- ახალი Fixit-ები:
- range-loop-ს ახლა აქვს ნაკლული refs-ების, ან const-ref-ების დამატების მხარდაჭერა
- range-loop-ს ახლა qAsConst()-ის დამატების მხარდაჭერა აქვს
- function-args-by-ref ახლა ამატებს ნაკლულ refs-ებს, ან const-ref-ებს (ექსპერიმენტული)
- გამოჩნდა CLAZY_FIXIT_SUFFIX გარემოს ცვლადი
წაიშალა ნაკლებად ცნობილი -DCLAZY_BUILD_UTILS_LIB-ის მხარდაჭერა CMakeLists.txt-ის გასამარტივებლად
clazy დამატების სახელი შეიცვალა ClangLazy.so-დან ClazyPlugin.so-ზე
fully-qualified-moc-types ახლა სლოტის/ჩაწოდებად დაბრუნებულ მნიშვნელობებზეც იძლევა გაფრთხილებას, რადგან QML-ისთვის სრული კვალიფიკაციაა საჭირო.
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- გასწორდა ავარიული დასრულება (clang assert) ფუნქციაში raw-environment-function
1.4 2018-09-23
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- connect-by-name
- skipped-base-method
- qstring-varargs
- fully-qualified-moc-types
- qt-keywords, Fixit-ის ჩათვლით
- qhash-with-char-pointer-key
- wrong-qevent-cast
- static-pmf
- raw-environment-function
- empty-qstringliteral
- auto-unexpected-qstringbuilder ახლა ასევე გაგაფრთხილებთ ლამბდებზე, რომლებიც QStringBuilder-ს აბრუნებენ
წარმადობის ოპტიმიზაციები
დაემატა -header-filter=<regex> პარამეტრი clazy-standalone-ისთვის. მხოლოდ თავსართებს, რომლებიც რეგგამოსს დაემთხვევა
ექნებათ გაფრთხილებები, .cpp ფაილების გარდა თარგმნის ერთეულიდან, რომელიც არასდროს გაიფილტრება.
დაემატა -ignore-dirs=<regex> პარამეტრი clazy-standalone-ს და მისი CLAZY_IGNORE_DIRS გარემოს ცვლადის ეკვივალენტი.
დაემატა გარემოს ცვლადი CLAZY_HEADER_FILTER, რომელიც ამატებს ზემორე ფუნქციონალს ორივეს, clazy-ს და clazy-standalone-ს
unused-non-trivial-variable-მა მიიღო პარამეტრი unused-non-trivial-variable-no-whitelist
unused-non-trivial-variable-მა მიიღო user-blacklist-ის და user-whitelist-ის მხარდაჭერა
container-inside-loop ახლა ხელით შემოწმებაა level2-ის მაგიერ
გადაერქვა სახელი HiddenLevel-ს ManualLevel-ად
connect-3arg-lambda ახლა გასცემს გაფრთხილებას QTimer::singleShot(), ან QMenu::addAction() ფუნქციისთვის ლამბდას გადაცემისას
კონტექსტის ობიექტის გარეშე
old-style-connect გაგაფრთხილებთ, თუ QMenu::addAction() და QMessageBox::open() მეტისმეტად დაბალია
1.3 2017-11-26
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- 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 ახლა პირველი დონის მაგიერ მეორე დონის შემოწმებაა, რადგან ხალხს შეუძლია, Q_OBJECT წინასწარგანზრახულად გამოიძახოს.
დაემატა პარამეტრი -only-qt, რომელიც clazy-ს აიძულებს, ადრეულ ეტაპზევე გამოეთიშოს არა-Qt ფაილებს. ამ მიზნით Qt-ის ფაილად მიიჩნევა ნებისმიერი ფაილი, რომლისთვისაც -DQT_CORE_LIB ფუნქციაა გადაცემული, რაც ჩვეულებრივ აგების სისტემების უმრავლესობაში ხდება.
დაემატა პარამეტრი -qt-developer. როცა მიმდინარეობს Qt-ის აგება clazy-ით, ის გაითვალისწინებს სპეციალურ პარამეტრებს Qt-ისთვის, რომლებიც ახლა ბევრი არაა, მაგრამ სია გაიზრდება.
1.2 2017-07-08
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- ახალი შემოწმებები:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
ამ რელიზში გასწორდა შემდეგი ხარვეზები:
- clazy-standalone გამშვები ფაილი საშუალებას იძლევა, clazy გაეშვას JSON კომპილაციის მონაცემთა ბაზაზე დანატების ნაცვლად. clang-tidy-ს არ აქვს გარე მოდულების ჩატვირთვის მხარდაჭერა(https://github.com/llvm/llvm-project/issues/32086), ამიტომ ეს კარგი გამოსავალია.
- qt-compat რეჟიმი. საშუალებას იძლევა Qt5-ის სპეციფიკური შემოწმებები გაითიშოს -Xclang -plugin-arg-clazy -Xclang qt4-compat პარამეტრების გადაცემით
- returning-data-from-temporary ახლა დაბრუნებისას ამოწმებს დროებითი QByteArray-ების char*-ში გარდაქმნას
- returning-data-from-temporary ახლა ამოწმებს მინიჭებებსაც, არა, მხოლოდ, დაბრუნებულ ოპერატორებს
- unused-non-trivial-variable ახლა გაგაფრთხილებთ გამოუყენებელი QList, QVector და კიდევ ბევრი სხვა ტიპისთვის
- ASTMatchers-ზე დაფუძნებული შემოწმებების მხარდაჭერა ახლა უკვე ხელმისაწვდომია
- clang 3.7-ის მხარდაჭერა შეწყდა ASTMatchers-თან წყაროს შეუთავსებლობის გამო.
- გამოიყენეთ clazy v1.1 clang >= 3.6-ის მხარდაჭერისთვის
- სტანდარტულად clazylib.so-ის აგება აღარ ხდება და ხდება, მხოლოდ, ClangLazy.so-ის აგება. გამოიყენეთ -DCLAZY_BUILD_UTILS_LIB=ON დამხმარე ბიბლიოთეკის ჩასართავად თუ ხელსაწყოების შესაქმნელად იყენებთ ფუნქციის clazy-ს მოხერხებულობას რაც სავარაუდოდ ასე არ არის.
- მოცილებულია პარამეტრი CLAZY_INSTALL_NO_HEADERS. ან მოხდება ბიბლიოთეკის utils და თავსართების დაყენება, ან არაფრის. ნაგულისხმევად არაფრის დაყენება ხდება, დამატებისა და სახელმძღვანელოს გვერდების გარდა.
1.1 2017-02-20
ეს რელიზი ამატებს შემდეგ ფუნქციებს:
- macOS-ის და Windows-ის მხარდაჭერა
- ახალი შემოწმებები:
- 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
- გასწორებები ვერსიასთან:
- clang 4.0
- Qt 5.9
- შენიშვნები:
- 60% წარმადობის გაუმჯობესება
- გასწორდა ბევრი ცდრუდადებითი