Clazy
Kategorier:
Utgåvor RSS
1.17.1 2026-03-22
Den här utgåvan rättar följande fel:
- fully-qualified-moc-types: Åtgärda falskt positiv regression för pekartyper/referenstyper i generiska objekt.
1.16.1 2026-03-22
Det här är en programfixutgåva för att åtgärda integrationsproblem med QtCreator och
kompatibilitet med nya Qt-versioner. Den här utgåvan stöder LLVM-versionerna 19 till 21.
Den här utgåvan rättar följande fel:
- Diagnostik avges alltid även om den inte innehåller några fixit. Det används
- för integration i grafiska användargränssnitt där clazy-processen skriver en YAML-fil som innehåller
- meddelanden, intervall och valfritt fixits
- Justera kontrollen för bortkoppling av läsningslåsning så att den fungerar korrekt med ändringar i Qt 6.11.
1.17 2026-02-15
Den här utgåvan rättar följande fel:
- Åtgärda att varningar avges för varje post i en behållare vid non-pod-static kontroll
- Rätta att use-arrow-operator-instead-of-data avger falsk positiv när ett värde typkonverteras
- Vitlista inte QVariant för detaching-temporary. QVariant::toString tillhandahåller en QString som inte är bortkopplad
- Egenskapen detaching-temporary kontrollerar villkor när mer än två metodanrop kedjas
- Fixits för detaching-temporary/detaching-member är tillförlitligare med fixit-intervall för operatoranrop
- När QT_NAMESPACE används, hanterar clazy Qt-klasser som är i den specifika namnrymden riktigt
- Rätta felaktig ersättningsmetod för QMap::operator[]
- Se till att project kompileras med LLVM22. qhash-namespace, fully-qualified-moc-types, old-style-connect tester är fasta
- Justera kontrollen för bortkoppling av läsningslåsning så att den fungerar korrekt med ändringar i Qt 6.11.
- Ändra qstring-ref till manuallevel eftersom det inte är kompatibelt med Qt6
Den här utgåvan lägger till följande funktion:
- Nya kontroller: compare-member-check: Kontrollerar om jämförelseoperatorer inte använder alla medlemsvariabler i en klass.
C++20 krävs nu för kompilering
Konverteringschecker för qt6-\* har tagits bort
1.16 2025-09-03
Den här utgåvan rättar följande fel:
- unused-result-check: Rätta krasch när metoddeklaration inte kan lösas upp
- use-chrono-in-qtimer: Rätta krasch när förkompilerade deklarationsfiler används
- qt6-qhash-signature: Anpassa checken för att använda lämpligare logik för typkonverteringar och rätta krasch i undantagsfall
- Säkerställ att clang21 fungerar riktigt med clazy och producerar samma rad- och teckennummer som tidigare (felaktigheter med operatoranrop)
- non-pod-global-static: Rätta falsk positiv med Q_IMPORT_PLUGIN i Qt-6.10
Den här utgåvan lägger till följande funktioner:
- Clazy kan till sist integreras i clang-tidy: ett kommando att härska
- över dem alla! Alla kontroller kan aktiveras genom att använda "clazy-<kontrollnamn>". Till exempel:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, aktivera alla checker med
- `clazy-*`som också aktiverar manuella kontroller. Det rekommenderas att vara mer finkornig.
- Insticksprogrammet kan laddas med `-load=ClazyClangTidy.so`, för det,
- måste insticksprogrammet vara i LD_LIBRARY_PATH. Annars kan en absolut sökväg anges.
- isempty-vs-count tillhandahåller nu fixits för alla scenarier. Dessutom, för fall där
- längden jämförs med "== 0", "< 1", "> 0" rapporteras nu att ha fixits.
- Konverteringskontroller med qt6-\* anses nu vara föråldrade och kommer att tas bort i nästa utgåva av clazy
- Kontrollerna detaching-temporary och detaching-member tillhandahåller fixits för metoder som har motsvarigheter med const
- NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND fungerar alla i clazy nu som
- förväntat. Individuella clazy kontroller kan inaktiveras när "clazy-" prefixet
- används. Exempelvis "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
Den här utgåvan rättar följande fel:
- install-event-filter: Rätta krasch när det inte finns något underliggande objekt på angivet djup. FEL: 464372
- fully-qualified-moc-types: Rätta att enum/enum class inte utvärderas. FEL: 423780
- Rättade krasch i qstring-comparison-to-implicit-char. FEL: 502458
- Rättade när fully-qualified-moc-types stöder på signaler med uttryck som "std::bitset<int(8)>"
- Rättade krasch i qvariant-template-instantiation
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- readlock-detaching
- Uppdatera minimal Clang/LLVM till 19
- `clazy-standalone --version` innehåller git version ( utmatning från `git describe`) om det inte är en taggad incheckning
- Tillägg saknade metoder för att kontrollera att temporary/member lists eller maps kopplas bort
1.14 2025-04-27
Clazy varningar för följande rad kan inaktiveras, till exempel: clazy:exclude-next-line=check1,check2
Stöd för kompilering med Clang 20
Öka detaljnivån för vissa varningsmeddelanden
Kontrollerna `function-args-by-value` och `function-args-by-ref`: lägg till funktionsnamn och parameternamn i varningsmeddelanden
kontrollerna `unused-non-trivial-variable` och `non-pod-global-static`: lägg till variabelnamn i varningsmeddelanden
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- used-qunused-variable
Den här utgåvan rättar följande fel:
- qstring-arg kontroller tillhandahåller en fix-it
- Rättade unused-non-trivial-variable att inte varna när [[maybe_unused]] är inställt
- Rättade qstring-arg för kommande Qt 6.9
- Rättade fully-qualified-moc-types falsk positiv för const modifierare av generiska argument
- Tysta falska positiv non-pod-global-static varning för initiering av QML-modul
- Rätta function-args-by-value falsk positiv som skulle orsaka kompilatorfel
- i kopieringskonstruktorer, tilldelningsoperatorer och likhetskontroller
- Falska positiv för `Q_EMIT(someSignal())` är nu rättade
1.12 2024-06-30
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- Ta bort inefficient-qlist kontrollen (rättad i Qt6)
1.10 2021-07-20
Den här utgåvan rättar följande fel:
- Kräver C++17
- Felrättningar:
- Rättade en -Wclazy-lambda-in-connect falsk positiv
- Rättade krasch i copyable-polymorphic när PCH var aktiverad
1.9 2021-01-10
Den här utgåvan rättar följande fel:
- Rättade clazy prestandaförsämring introducerad i 1.8. Det kan vara upp till 4 gånger snabbare nu.
- range-loop delades i range-loop-detach och range-loop-reference
- Rättade -Wclazy-connect-non-signal falsk positiv
1.8 2020-11-22
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- fixit för missing-qobject-macro
1.7 2020-06-29
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- överlagrad signal
- ogiltiga JNI-signaturer
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: färre falska positiv
Den här utgåvan rättar följande fel:
- connect-non-signal: Rätta fall när den inte hittade pmf
- qstring-arg varnar vid användning av QLatin1String::arg(int), när den typkonverteras till QChar
Att bygga clazy självt är 30 % snabbare
1.6 2019-10-12
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, bidragit av Jean-Michaël Celerier
Tog bort nivå 3. Flyttade alla nivå 3 kontroller till den manuella nivå. Det är inte meningsfullt att aktivera alla.
Var och en måste noggrant övervägas.
Minimal LLVM ökades till 5.0
Clazy skriver inte längre om filer direkt, för att undvika kapplöpning när parallella anrop ändrar samma deklarationsfiler.
Clazy exporterar nu en yaml-fil med ersättningarna, för att verkställas med clang-apply-replacements.
På samma sätt som andra clang-verktyg gör det.
Sättet att aktivera omskrivning av kod är nu: -Xclang -plugin-arg-clazy -Xclang export-fixes för clang
eller -export-fixes=somefile.yaml för clazy-standalone
Alla andra fixit-argument och fixit miljövariabler togs bort
Tack till Christian Gagneraud för att ha bidragit med fixit yaml-exportverktyget.
Den här utgåvan rättar följande fel:
- Rättade regression med LLVM 9.0
- Fixit-infrastrukturen renoverades
1.5 2019-01-31
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- Nya fixits:
- range-loop stöder nu tillägg av saknade refs eller const-ref
- range-loop stöder nu tillägg av qAsConst()
- function-args-by-ref lägger nu till saknade refs eller const-ref (experimentell)
- Introducerade CLAZY_FIXIT_SUFFIX miljövariabler
Tog bort stöd för det obskyra -DCLAZY_BUILD_UTILS_LIB för att förenkla CMakeLists.txt
Bytte namn på clazy insticksprogrammet från ClangLazy.so till ClazyPlugin.so
fully-qualified-moc-types varnar nu också för slot/invokable returvärden. De måste vara fullständigt kvalificerade för QML.
Den här utgåvan rättar följande fel:
- Rättade en krasch (clang assert) i raw-environment-function
1.4 2018-09-23
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- connect-by-name
- skipped-base-method
- qstring-varargs
- fully-qualified-moc-types
- qt-keywords, med inkluderad fixit
- qhash-with-char-pointer-key
- wrong-qevent-cast
- static-pmf
- raw-environment-function
- empty-qstringliteral
- auto-unexpected-qstringbuilder varnar nu också för lambda som returnerar QStringBuilder
prestandaoptimeringar
Tillägg av alternativ -header-filter=<regex> till clazy-standalone. Bara deklarationsfiler som matchar det reguljära uttrycket
har varningar, förutom .cpp-filen från översättningsenheten, som aldrig filtreras bort.
Tillägg av alternativet -ignore-dirs=<regex> i clazy-standalone, och dess ekvivalenta CLAZY_IGNORE_DIRS miljövariabel.
Tillägg av miljövariabeln CLAZY_HEADER_FILTER som lägger till ovanstående funktionalitet till clazy och clazy-standalone
unused-non-trivial-variable fick alternativet unused-non-trivial-variable-no-whitelist
unused-non-trivial-variable fick stöd för user-blacklist och user-whitelist
container-inside-loop är nu en manuell kontroll istället för nivå 2
Namnet på HiddenLevel ändrades till ManualLevel
connect-3arg-lambda varnar nu när lambta skickas till QTimer::singleShot() eller QMenu::addAction()
utan ett sammanhangsobjekt
old-style-connect varnar nu också för QMenu::addAction() and QMessageBox::open()
1.3 2017-11-26
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- 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 är nu en nivå 2 kontroll, istället för nivå 1. Eftersom man kan utelämna Q_OBJECT med avsikt.
Tillägg av -only-qt option, som gör att clazy hoppar ut tidigt för filer som inte ingår i Qt. För det ändamålet är definitionen av en Qt-fil varje gång -DQT_CORE_LIB skickas, vilket vanligtvis är fallet i de flesta byggsystem.
Tillägg av alternativet -qt-developer, när Qt byggs med clazy följer det specifika riktlinjer för Qt, vilket inte är många just nu, men listan kommer att växa.
1.2 2017-07-08
Den här utgåvan lägger till följande funktioner:
- Nya kontroller:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
Den här utgåvan rättar följande fel:
- clazy-standalone körbart program. Tillåter att köra clazy med en JSON-kompileringsdatabas istället för som ett insticksprogram. clang-tidy stöder inte laddning av externa moduler (https://github.com/llvm/llvm-project/issues/32086) så det är en bra lösning.
- qt-compat mode. Tillåter att inaktivera Qt5 specifika kontroller genom att använda -Xclang -plugin-arg-clazy -Xclang qt4-compat
- returning-data-from-temporary kontrollerar nu tillfällig typkonvertering av QByteArrays till char* när det returneras
- returning-data-from-temporary kontrollerar nu också tilldelning, inte bara retursatser
- unused-non-trivial-variable varnar nu för oanvänd QList, QVector och många fler typer
- ASTMatchers-baserade kontroller stöds nu
- clang 3.7 togs bort på grund av inkompatibilitet med ASTMatchers-källkod.
- Använd clazy v1.1 för stöd av clang ≥ 3.6
- clazylib.so byggs inte längre normalt, bara insticksprogrammet (ClangLazy.so) byggs. Ange -DCLAZY_BUILD_UTILS_LIB=ON för att aktivera biblioteket utils om verktyg utvecklas där bekvämlighetsfunktionerna i clazy används, vilket troligtvis inte är fallet.
- Alternativet CLAZY_INSTALL_NO_HEADERS har tagits bort. Installera antingen biblioteket utils och deklarationsfiler eller ingenting alls. Normalt installeras ingenting, förutom insticksprogrammet och manualsidorna.
1.1 2017-02-20
Den här utgåvan lägger till följande funktioner:
- Stöd för macOS och Windows
- Nya kontroller:
- 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
- Rättningar mot:
- clang 4.0
- Qt 5.9
- Anmärkningar:
- 60% prestandaförbättring
- Rättade många falska positiv