Beim Überschreiben einer virtuellen Methode habe ich bemerkt, dass ich, wenn ich einen Fehler in der Sichtbarkeit mache (geschützte Methode als öffentliche Methode überschrieben), nicht vom Compiler gewarnt werde.
Es ist C ++ gültig, aber normalerweise ist es ein Fehler.
Zum Beispiel:
%Vor%Ich habe versucht, mit gcc und clang, mit -Wall -Wextra, ohne Glück zu kompilieren. Ich habe CppCheck auf diesen Code ausgeführt, immer noch kein Glück.
Welches Tool kann mir helfen, dies zu erkennen? Ich muss die ganzen Quellen einer Bibliothek reparieren, an der ich arbeite.
Ich habe mit Ctags eine Lösung für meine Bedürfnisse gefunden.
CTags können C ++ analysieren und Informationen in eine Datei ausgeben.
Verwenden Sie die folgenden Optionen:
%Vor%Ich kann alle benötigten Informationen in einem leicht analysierbaren Format erhalten.
Piping $TAGFILE
durch ein paar grep
-Befehle, ich kann überprüfen, ob ein bekannter Funktionsname die erwartete Sichtbarkeit hat, und andernfalls eine Warnung mit der inkriminierten Datei ausgeben.
Hier ist ein Bash-Snippet, um Informationen aus der Ctags-Ausgabe zu extrahieren:
%Vor%