Clazy 1.5 bringt neue Checks für Qt-Code

Das Tool zum Prüfen von Qt-Code versucht unter anderem Tippfehler in #ifndef-Blöcken zu erkennen.

In Pocket speichern vorlesen Druckansicht
Clazy 1.5 bringt neue Prüfbefehle für Qt-Code
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

KDAB hat Version 1.5 von Clazy veröffentlicht. Das aktuelle Release des Compiler-Plug-ins zum Überprüfen von Qt-Code bringt zwar vor allem Bugfixes mit, hat aber auch drei neue Prüfbefehle und ein paar Ergänzungen bei den Fixits zur automatischen Codekorrektur an Bord. Außerdem heißt das Clazy-Plug-in nun nicht mehr "ClangLazy.so", sondern "ClazyPlugin.so".

Der neue Check ifndef-define-typo hat die Funktion bereits im Befehlsnamen: Er versucht zu erkennen, wenn Entwickler in #ifndef-Blöcken mit #define-Anweisungen Tippfehler haben, also der abgefragte nicht definierte Wert und dessen folgende Definition leicht voneinander abweichen, wie das Beispiel aus der Clazy-Ankündigung zeigt:

#ifndef GL_FRAMEBUFFER_SRG // Durch den Tippfehler fehlt das "B"
# define GL_FRAMEBUFFER_SRGB 0x8DB9
#endif

Zum Erkennen nutzt Clazy die Levenshtein-Distanz oder Editierdistanz, die überprüft, wie viele Textänderungen durch Ändern, Einfügen oder Löschen nötig sind, um eine Zeichenkette in eine andere umzuwandeln. Das bedeutet freilich, dass Clazy nur ähnliche Namen erkennt. Da der Check leicht zu unerwünschten False-Positives führen kann, ist er standardmäßig deaktiviert.

Ebenfalls neu ist die Prüfung lowercase-qml-type-name, die mit qmlRegisterType() oder qmlRegisterUncreatableType() registrierte QML-Typen findet, die nicht wie von der QML-Engine gefordert mit einem Großbuchstaben starten. Schließlich versucht qrequiredresult-candidates zu erkennen, wenn eine Funktion mit Q_REQUIRED_RESULT annotiert sein sollte. Die Qt-Annotation entspricht dem C++17-Attribut [[nodiscard]] und erzeugt Compiler-Warnungen, wenn Entwickler das Ergebnis der markierten Funktion nicht auswerten.

Weitere Neuerungen wie die erweiterten Fixits für range-loop und function-args-by-ref lassen sich der offiziellen Ankündigung entnehmen. Clazy ist ein Open-Source-Projekt. Der Sourcecode ist auf GitHub zu finden. Da der Master-Zweig stets den aktuellen Entwicklungsstand widerspiegelt, ist das Repository zum Release von Version 1.5 bereits auf Clazy 1.6 ausgelegt. Binaries der fertigen Releases befinden sich auf der Download-Seite bei KDAB. (rme)