Ich versuche, eine OCLint-Regel zu erstellen, die den beiden Deklarationen typedef enum
und typedef NS_ENUM
entspricht, mit wenig Erfolg.
Ich habe eine Objective-C-Datei (TestClass.m) mit folgenden enum-Deklarationen:
Dumping der AST mit diesem Befehl:
%Vor%Gibt mir diese Ausgabe mit folgendem Inhalt:
%Vor% Ich habe eine ASTMatcherRule (ObjCNsEnumRule), in der ich versuche, sowohl typedef enum
als auch typedef NS_ENUM
zu finden. Hier ist der Code dafür:
Beim Ausführen dieser Regel erhalte ich jedoch nur die Ausgabe für die Deklaration typedef enum
.
Was mache ich hier falsch? Beide Enums werden im AST-Dump angezeigt, in der OCLint-Regel jedoch nur eins.
Bearbeiten
Ich denke, dass das mit dem AST Dump zu tun haben mag, der die EnumDecl
für die NS_ENUM
wie in einer anderen Quelldatei definiert (wahrscheinlich wegen des NS_ENUM Makros) anzeigt, da ich die Typedef, aber nicht die enumdecl.
Es sieht nicht so aus, als ob es momentan eine Möglichkeit gibt, dies in Oklint zu tun. Makros unterliegen keinen Oclint-Regeln für die Regeln ASTVisitor
oder ASTMatcher
. Siehe hier: Ссылка
Ich habe dies als eine einfache SourceCodeReaderRule
implementiert, wie folgt:
Tags und Links c++ clang abstract-syntax-tree oclint libtooling