列出C语查询匹配器

时间:2018-08-03 12:13:40

标签: compiler-construction static-analysis llvm-clang clang-static-analyzer clang-query

是否可以列出clang-query中所有可能的匹配项? AST matcher reference列表不一定是最新版本。甚至ASTMatchers.h lang页眉(clang-6.0.0)中的列表也不显示当前可用的内容。例如,equalsNode匹配器包含在列表中,而clang-query中不可用。

1 个答案:

答案 0 :(得分:0)

似乎某些匹配器存在缺陷,并且仍在进行中。因此,尽管它们的名称包含在ASTMatchers.h头文件中,但不能使用它们。可以从clang-6.0.0/lib/ASTMatchers/Dynamic/Registry.cpp:Line 95处的以下注释中推论得出:

// TODO: Here is the list of the missing matchers, grouped by reason.
//
// Need Variant/Parser fixes:
// ofKind
//
// Polymorphic + argument overload:
// findAll
//
// Other:
// equalsNode

REGISTER_OVERLOADED_2(callee);
...

可以看出,equalsNode也是缺少的匹配项之一。支持的匹配器在以下各行中注册。