问题标签 [libtooling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clang - 如何检查 Decl 是否在 #if 指令的范围内?
我正在构建一个clang libtool,我怎样才能获得预处理器信息,告诉我给定的Decl是否在#if #ifdef #ifndef的范围内?
objective-c - 将 Objective-C 对象指针类型与 Clang 的 LibTooling 中的可空性说明符匹配
可以说我有这样的代码:
现在,我想创建一个匹配器来匹配变量声明。
目前我有这样的事情:
有,objcObjectPointerType()
但它只匹配a
。有一些指针/引用匹配器,但它们根本不适用于这些变量声明。此外,我尝试过,isAnyPointer()
但它适用于任何指针,无论是否为 obj-c。
我试图type()
确保我所做的一切都是正确的,并且它有效。
那么,我怎样才能只匹配 obj-c 变量声明,有或没有可空性说明符?
谢谢!
c++ - 单行多变量声明的clang ast访问者
我是 Clang libTooling 开发的新手。
考虑以下变量声明
对于我的项目要求,我想捕获整个声明表达式,包括“i”、“j”和“k”。
如何使用 clang libTooling 捕获完整的声明表达式,包括所有变量?
我正在经历的是,我没有让访问者获得完整的表达式,而是获得了访问者进行单个变量声明。
这是 clang libTooling 中的预期行为还是我遗漏了什么?
请建议我捕获单行多个声明或任何解决方法的正确方法?任何形式的帮助将不胜感激。
谢谢,赫曼特
c++ - 如何在 clang AST 中获取无效/未解析类型的实际名称
考虑以下代码
在上面的代码片段中,“unknownType”在编译时没有被解析,所以 clang 会将默认类型作为 int 放入 AST 并将声明标记为无效。
现在的问题是在遍历 AST 时,如何获得名称“unknownType”。用现有API获取类型名会给出int,其来源范围也是无效的。
有人遇到这样的问题吗?请帮忙?
谢谢,赫曼特
c++11 - clang libtooling 3.8.1 中未推断出“auto”类型
我正在使用 clang 3.8.1 libtooling 库。我已经为 C++ 自动类型编写了访问者。当我尝试获取推导类型时,我得到 NULL-TYPE。
有人遇到过类似的问题吗?请告诉我铿锵的自动类型扣除,因为它让我无处可去。
示例代码:
clang - 铿锵工具。键入不带关键字的名称
我正在开发一些 clang 工具,我需要生成具有未明确指定的类型的源代码。我从中获得的具有类型的字符串clang::QualType
类似于:class std::initializer_list<int>
. 问题是获取没有关键字的类型。
我尝试向所有继承人dyn_cast<>
键入 ( ),但结果始终为空。clang::Type
TypeWithKeyword
当然,我可以从类型名称的字符串中删除所有出现的“class”、“struct”等,但我想用“clang 方式”解决这个问题。
c++11 - 在某些输入文件上运行自定义 clang 前端工具时出现异常
我根据以下链接编写了一个自定义 clang 前端工具。 http://clang.llvm.org/docs/RAVFrontendAction.html
现在我将 clang 源代码本身提供给我的前端工具进行静态分析。我的工具为此测试用例抛出异常 https://llvm.org/svn/llvm-project/cfe/trunk/test/CXX/expr/expr.const/p2-0x.cpp
从这个测试用例的文档来看,它是为未定义的行为而编写的。在此测试中运行 ClangTool 时,即使在控件进入 HandleTranslationUnit 之前,它也会引发 stackoverflow 异常。
由于 clang 可以为上述测试用例生成 AST,我认为异常可能在编译期间出现。现在的问题是我不能继续访问这些文件的 AST 节点,因为我不关心输入源文件的语义。我只对静态分析感兴趣。
这是预期的行为吗?那么如何遍历生成的 AST 并访问节点。我真的被困在这一刻,不知道如何继续。请你帮我解决这个问题。
提前致谢!
谢谢,赫曼特·巴加特
c++ - 替换在 clang RefactoringTool 中返回空地图
我有一个 MatchFinder 定义为:
而 DeclarationMatcher 和 MatchCallback 如下:
在我的主代码中,我为查找器执行前端操作,并获取替换:
虽然我可以观察到在执行 FrontendAction 时会填充 FuncPrinter 中的 Replace 变量,但Tool.getReplacements()
返回一个空的std::map<std::string, Replacements>
. 如果有人能指出我出错的地方,我将不胜感激。