问题标签 [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 - Clang: write a function's AST from original file to a new file
I'm a novice for Clang who is trying to analyze AST via libtooling. I want to find a particular function, and move its AST from original source file to a new file.
I've known how to find the function by MatchFinder. Now, I was wondering how to write its AST to a new file(.c or .cpp)
Thanks in advance!
clang - Clang工具,检查是否最终或覆盖
是否有“clang 方式”来检查是否CXXMethodDecl
用override
orfinal
关键字指定?
我可以通过std::string::find(" override")
字符串来检查它CXXMethodDecl
,但是这种方式看起来有点难看。
c++ - 如何从 CXXMemberCallExpr 中提取类型和名称?
我想从 A::WriteData 方法定义中提取整个调用者对象的类型和名称以及成员调用表达式的参数类型。
用于 WriteData 方法的 clang AST 的相关部分在这里-
在这种情况下,我想从我的匹配器获得的信息是:
我尝试了以下匹配器:
这给了我想要提取的正确陈述。
我提取了以下内容(下面是无效的 c++):
通过将参数的 QualType 作为字符串获取参数类型:
/li>参数名称:
/li>对象调用者的类型:
/li>对象调用方法:
/li>
如何获取对象调用者本身? 有没有更好的方法来获取传递给 Write 方法的参数名称?
看着 AST,我不知道从哪里开始。
c++ - Clang 使用 LibTooling Rewriter 生成新文件?
我正在使用 LibTooling 进行一些分析。我知道如何遍历 AST 并将一些文本插入某处。例如,
现在我想知道是否有任何方法可以保存代码?(天气保存到原始文件或生成新文件)
因为分析后,我只能在终端上读取结果,这对我来说还不够。
clang - 运行 clang libtooling 时出现分段错误(核心转储)
我实现了一个简单的重构工具,它可以将函数名称替换为用户特定的名称。
当我在测试代码(没有任何头文件)上运行该工具时,它运行良好。
但是,如果我在测试代码中包含头文件,例如
...然后,我再次运行它。存在分段错误(核心转储):
我对此感到困惑,因为我只添加了一个“#include <...>”你能帮忙检查一下故障信息吗?提前致谢!
include - 如何使用 clang libtooling 获取#includes 的源位置?
有没有办法通过它的或什么来获取clang::SourceLocation
每个#include
文件? clang::FileID
clang::FileEntry
clang - addToCallGraph 可以为我做所有事情来生成调用图吗?
我想为 .cpp 文件中的特定函数生成调用图。我通过使用 AST Matcher 获得函数的 decl。然后,我将 decl 传递给 addToCallGraph 函数;
之后,我尝试打印调用图:
但是,我发现结果并不完整。例如调用关系是A()->B();B()->C() 结果是:
B 和 C 之间的关系尚未显示。
我的问题是,
1) addToCallGraph 是否完成了所有调用图的生成过程?
2)我们如何检查A,B和C之间的所有关系?
提前致谢!
c - clang libtooling 安全地插入新标头
我正在使用 clang 的 libtooling 来修改一些代码,并且我正在尝试找到一种方法来在我的工具用于 C 文件时安全地插入标头。
我已阅读What's the right way to match #includes (or #defines) using Clang's libtooling? 关于对预处理器的匹配调用的问题,但我仍然不确定使用它来插入代码。
使用 libtooling 重写器插入新 #include 的正确方法是什么?