【问题标题】: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 也是缺失的匹配器之一。支持的匹配器在以下行中注册。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      相关资源
      最近更新 更多