Я создал if(isa<IfStmt>(s))
а также if(isa<ReturnStmt>(s))
который печатает что-то, если найден. Я создал этот простой код C ++, который содержит оператор возврата внутри оператора if
#include <stdlib.h>
int main(int argc, char** argv) {
int a = atoi(argv[1]);
if(a == 0)
return 1;
else
return 10;
return 0;
}
Можно ли пропустить / игнорировать заявление о возврате внутри если еще заявление ?
clang-query test.cpp --
match returnStmt(unless(hasAncestor(ifStmt()))
Чтобы решить такие проблемы, Справочник AST Matcher и лязг -ast-dump
параметр твои друзья. А также clang-query
сам, так как он принимает в основном тот же DSL, что и clang
API C ++.
Других решений пока нет …