跳过 If 语句中的语句

Skipping statements inside an IfStatements

我创建了一个 if(isa<IfStmt>(s))if(isa<ReturnStmt>(s)),如果找到它会打印一些东西。我创建了这个简单的 C++ 代码,它在 if 语句

中包含 return 语句
#include <stdlib.h>
int main(int argc, char** argv) {
  int a = atoi(argv[1]);
  if(a == 0)
    return 1;
  else
    return 10;
  return 0;
}

是否可以在 if else 语句 中 skip/ignore return 语句

clang-query test.cpp --

match returnStmt(unless(hasAncestor(ifStmt()))

要解决此类问题,AST matcher's reference and clang's -ast-dump parameter 是您的朋友。还有 clang-query 本身,因为它接受与 clang 的 C++ API.

几乎相同的 DSL