Skip to content
Screenshot of Clazy
Clang კომპილატორის დამატება, რომელიც Qt-ის საუკეთესო პრაქტიკის გათვალისწინებით გაჩვენებთ გაფრთხილებებს.
Install on
Linux
This button only works with Discover and other AppStream application stores. You can also use your distribution’s package manager.

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% წარმადობის გაუმჯობესება
  • გასწორდა ბევრი ცდრუდადებითი
1.0 2016-09-12
0.0.1 2015-06-10
პირველი რელიზი