1

私は 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;
    }

マクロを特定し、そのような変数宣言をスキップするにはどうすればよいですか?

4

1 に答える 1