私は C++ の初心者で、Clang を使用して Objective-C コードをリントしようとしています。ノードとプロパティがASTでアクセスされる前に、マクロが最初に展開されることを理解しています。
という名前のマクロがNIL_CHECK
あり、多数のファイルで使用されています。lint の実行中に、このマクロが展開/使用されている行の変数宣言をスキップしたいと考えています。
たとえば、この例の最初の行は lint する必要がありますが、2 行目はスキップして、マクロ展開があるときに誤検出がスローされないようにする必要があります。
// Must be checked
NSDictionary *playerParams = @{ @"videoId" : videoId, @"playerVars" : playerVars };
// Must be skipped since there's a macro
PlayerProfile *const playerProfile = [[PlayerProfile alloc] initWithData:NIL_CHECK(playerParams)];
次に示すのは、VisitVarDecl
適切な lint チェックを実行するために各変数宣言をトラバースするビジター メソッドです。
bool VisitVarDecl(VarDecl *node) {
if (isCollectionType(node -> getType()) && !hasTypeArguments(node -> getType())) {
addViolation(node, this, description(node -> getNameAsString()));
}
return true;
}
マクロを特定し、そのような変数宣言をスキップするにはどうすればよいですか?