0

我正在尝试创建一个重构工具,它允许我从 Objective-c 类中获取语法树,以便我可以更改类的结构并输出符合我的标准的不同版本。我正在查看 Clang 的 Libtooling 以生成 AST,然后从那里获取它,我遇到的问题是我需要以某种方式确保我提供了从该源导入的所有可能的标头的所有路径,这就是我想避免。

我想知道是否有一种方法可以为一个类生成 AST,而不必例如为包含我想要重构的类所持有的属性的类定义的框架提供路径。

理想情况下,我将能够在包含属性、函数等内容的源文件的原始文本中获取节点......这样我就可以遍历该树并更改其结构,以便稍后在所需的位置重新生成我的源方法。

4

1 回答 1

0

在做了更多的研究之后,我加深了对我试图做的事情甚至不可能作为LibTooling基础工具的理解need syntactic and semantic information about a program。可以通过compile_commands.json文档中所述的文件提供此信息:

Clang Tooling needs a compilation database to figure out specific build options for each file. Currently it can create a compilation database from the compile_commands.json file

对于 Xcode 项目,这个文件可以这样生成:

xcodebuild -project PROJECT_NAME.xcodeproj | xcpretty -r json-compilation-database --output compile_commands.json

您将需要安装xcprettygem。( gem install xcpretty)

来源:https ://clang.llvm.org/docs/HowToSetupToolingForLLVM.html

于 2019-03-29T09:52:18.220 回答