Clazy
קטגוריות:
מהדורות RSS
1.17.1 2026-03-22
המהדורה הזאת מתקנת את התקלות הבאות:
- fully-qualified-moc-types: תוקן שלילי כוזב שחזר לסוגי מצביע/הפניה ב־generics (כלליים).
1.16.1 2026-03-22
זאת מהדורת טלאי לתיקון בעיות שילוב מול QtCreator וגם
תאימות לגרסאות Qt חדשות. המהדורה הזאת תומכת בגרסאות 19 עד 21 של LLVM.
המהדורה הזאת מתקנת את התקלות הבאות:
- אבחנות תמיד נפלטות אפילו אם הן לא מכילות הצעות לתיקון. מיועד
- לשילוב בסביבות פיתוח משולבות (IDEs) שבהן התהליך clazy כותב קובץ YAML שמכיל
- את ההודעות, הטווחים והצעות לתיקון כרשות
- בדיקת readlock-detaching כוונה לעבוד כראוי לאור השינויים ב־Qt 6.11.
1.17 2026-02-15
המהדורה הזאת מתקנת את התקלות הבאות:
- תוקנה בעייה שבדיקת non-pod-static פולטת אזהרה לכל רשומה של מכולה
- תוקן מצב ש־use-arrow-operator-instead-of-data פולט חיובי כוזב כשהערך מומר
- לא להתיר QVariant עבור detaching-temporary. QVariant::toString תספק QString שאינו מנותק
- detaching-temporary בודק תנאים כראוי כשיותר משתי קריאות למתודות משורשרות
- הצעות לתיקון עבור detaching-temporary/detaching-member אמינות יותר עם טווחי הצעות לתיקון לקריאות לפעולות
- בעת שימוש ב־QT_NAMESPACE, clazy מטפל במחלקות Qt כראוי במרחב השם המסוים הזה
- תוקנה מתודת החלפה שגויה ל־QMap::operator[]
- אפשר לגרום למיזם לעבור הידור עם LLVM22. הבדיקות qhash-namespace, fully-qualified-moc-types, old-style-connect תוקנו
- בדיקת readlock-detaching כוונה לעבוד כראוי לאור השינויים ב־Qt 6.11.
- qstring-ref הועבר ל־manuallevel (רמה ידנית) מאחר שאינו נתמך ב־Qt6
המהדורה הזאת מוסיפה את היכולת הבאה:
- בדיקות חדשות: - compare-member-check: בודקת. האם סימני ההשוואה לא משתמשים בכל המשתנים שחברים במחלקה.
מעתה נדרשת תאימות לתקינת C++ 20 לצורך הידור
בדיקות הסבה מסוג qt6-\* הוסרו
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 מספק מעתה הצעות לתיקון לכל התרחישים. כמו כן, במקרים
- שבהם האורך מושווה באמצעות „==0”, „< 1”, „> 0” מדווחים מעתה כבעלי הצעות לתיקון.
- בדיקות הסבה מסוג qt6-\* נחשבות למיושנות מעתה והן תוסרנה במהדורה הבאה של clazy
- הבדיקות detaching-temporary ו־detaching-member מספקות הצעות לתיקון למתודות שיש להן משלים בצורת קבוע (const)
- 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 עבור מחליפי קבועים של ארגומנטים כלליים
- השתקת אזהרה חיובית כוזבת 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
המהדורה הזאת מתקנת את התקלות הבאות:
- תוקנה האטה ב־clazy שהחלה ב־1.8. מעתה יש שיפור ביצועים עד פי 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, נתרם על ידי ז׳אן מישאל סלרייה
level3 (רמה 3) הוסרה. כל הבדיקות ברמה 3 הועברו לרמה הידנית. לא הגיוני להפעיל את כולן.
יש לבחור כל אחת מהן בקפידה.
גרסת ה־LLVM המזערית עלתה ל־5.0
Clazy לא כותב יותר לקבצים ישירות כדי להימנע מתחרות כשהזנקות מקבילות משנות את אותה הכותרת.
Clazy מייצא מעתה קובץ yaml עם ההחלפות, מתאים להחלה עם clang-apply-replacements.
באותה הדרך שכלים אחרים של clang עושים את זה.
הדרך להפעיל שכתוב קוד מעתה היא: -Xclang -plugin-arg-clazy -Xclang export-fixes ל־clang
או -export-fixes=somefile.yaml ל־clazy-standalone
כל שאר הארגומנטים להצעות לתירון ומשתני הסביבה להצעות לתיקון הוסרו
תודה לכריסטיאן גגנרוד על תרומת מייצא ה־yaml להצעות לתיקון!
המהדורה הזאת מתקנת את התקלות הבאות:
- תוקנו תקלות חוזרות מול LLVM 9.0
- תשתית הצעות לתיקון שוכתבה
1.5 2019-01-31
המהדורה הזאת מוסיפה את היכולות הבאות:
- בדיקות חדשות:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- הצעות חדשות לתיקון:
- range-loop תומך מעתה בהוספת הפניות או 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, כולל הצעות לתיקון
- 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 קיבלה תמיכה ברשימות חסימה והיתר של משתמשים
container-inside-loop היא מעתה בדיקה ידנית במקום רמה2
השם של 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 הוא כעת בדיקה ברמה 2, במקום ברמה 1. כיוון שמפתחים, יכולים להשמיט את 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 בודק מעתה הסבה זמנית של QByteArrays ל־char* כשהוא מוחזר
- returning-data-from-temporary בודק מעתה גם הקצאות, לא רק הצהרות החזרה (return statements)
- 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 כדי להפעיל את תיקיית utils אם בחרת לפתח כלים שמשתמשים בפונקציות הנוחות של clazy, מה שסביר להניח שלא עשית.
- האפשרות CLAZY_INSTALL_NO_HEADERS הוסרה. יש להתקין את ספריית וכותרות utils או שום דבר כלל. כברירת מחדל, שום דבר לא מותקן, למעט התוסף ועמודי ההדרכה (man).
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% שיפורי ביצועים
- תוקנו מגוון חיוביים כוזבים