【问题标题】:List Clang-Query Matchers列出 Clang 查询匹配器
【发布时间】:2018-08-03 12:13:40
【问题描述】:
有没有办法在clang-query 中列出所有可能的匹配器? AST matcher reference 列表不一定是最新版本。即使ASTMatchers.h clang 标头 (clang-6.0.0) 中的列表也没有显示当前可用的内容。例如,equalsNode 匹配器包含在列表中,而在 clang-query 中不可用。
【问题讨论】:
标签:
compiler-construction
static-analysis
llvm-clang
clang-static-analyzer
clang-query
【解决方案1】:
似乎有些匹配器有缺陷,仍在进行中。因此,虽然它们的名称包含在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 也是缺失的匹配器之一。支持的匹配器在以下行中注册。