Die Überprüfung der Qt-Signal-Slot-Verbindung zur Laufzeit ist eine Sorge für mich. Ich sollte eine statische Überprüfung der connect-Anweisungen ausführen können.
Existiert ein solches Tool?
Existiert ein solches Tool?
Es wäre schön, wenn es ein solches Werkzeug gäbe, aber leider existiert es nicht, weil der Signal / Slot-Mechanismus in qt implementiert ist. Aus diesem Grund ist es auch nicht möglich, statisch zu prüfen, ob ein Signal in den Steckplatz passt.
Wenn qt etwas wie Boost's Signal / Slots verwendet, wäre es möglich.
Sie könnten erwägen, ein GCC-Plugin in C oder eine MELT Erweiterung zu erstellen. MELT ist eine domänenspezifische Sprache, um einfach GCC-Erweiterungen zu codieren . Mit Plugins oder MELT-Erweiterungen könnten Sie die internen Repräsentationen (insbesondere Tree-s, die C + + -Klasse- und -Funktionsdeklarationen darstellen) analysieren und ein spezielles Werkzeug dafür erstellen.
Die Erweiterung des GCC erfordert jedoch, seine recht komplexe interne Repräsentation zu verstehen, und würde mehr als eine Woche an Bemühungen für eine Person erfordern, die die GCC Interna nicht kennt.
Vielleicht lohnt sich ein solcher Aufwand nicht, es sei denn, Ihre Qt-Anwendung ist wirklich groß. Wenn Sie darüber nachdenken, mit MELT zu arbeiten, würde ich mich freuen, Ihnen zu helfen.
Sie können dies nicht zur Kompilierzeit überprüfen, aber wenn Sie das Programm im Debug-Modus innerhalb von Qt Creator ausführen, wird eine hilfreiche Diagnosemeldung im Bereich Anwendungsausgabe angezeigt, wenn ein connect
-Aufruf fehlschlägt. Siehe meine Antwort hier .
Um mit einer großen Qt4-Codebasis zu arbeiten, habe ich einen solchen Checker als Plugin geschrieben für Clang Static Analyzer
Siehe: Ссылка
Beispiel für eine Testabdeckung:
%Vor%Tags und Links c++ qt static-analysis signals-slots