【问题标题】:Running a Clang LibTooling tool over an iOS Xcode project在 iOS Xcode 项目上运行 Clang LibTooling 工具
【发布时间】:2014-02-26 21:25:53
【问题描述】:

我编写了一个基于 libtooling 的玩具工具,它可以对 ObjectiveC 代码进行一些分析/源代码重写。如何在 iOS Xcode 项目上运行它?

我查看了compiling the application through commandline/clang,但还没有开始工作。是否可以使用 xcodebuild 链接我的工具?或者有没有更好的方法在 Xcode 项目上运行该工具?

【问题讨论】:

  • 您是否需要在代码编译之前运行此工具?它需要什么作为输入?
  • 它需要在编译前运行,我想在编译前重写源代码。该工具需要源文件,并且应该能够为应用程序构建 AST - 这意味着修复所有框架链接问题,除非我对此采取了错误的方法。
  • 你做过这项工作吗@Sorcerer13?

标签: ios xcode clang llvm-clang


【解决方案1】:

我想你需要的是JSON-Compilation-Database

你可以使用xctool生成一个json编译数据库(xctool有生成这个东西的reporter,看readme。)

json 编译数据库只是一个 json 文件,其中包含需要传递给基于 clang 和 libtooling 的工具的所有编译器选项(例如,头文件搜索路径、框架搜索路径)。

【讨论】:

    【解决方案2】:

    如果您希望您的工具在代码中生成错误和警告,则它应该是一个 clang 插件,您只需更改项目的 clang 标志即可加载该插件。

    在您的情况下,您似乎正在使用更改源代码的 libtooling,您只需在“编译源”阶段之前将脚本添加到项目构建过程中。

    1. 在 Xcode -> 点击 Project -> 点击你想要的 Target -> Build Phases -> 点击 Editor (Menu Bar) -> Add Build Phase -> Add Run Script
    2. 将新的运行脚本拖到编译源之前
    3. 编辑运行脚本阶段以执行您想要的操作

    【讨论】:

    • 该工具需要为代码创建 AST 以启用重构 - 我还没有找到修复所有框架/头文件问题的魔法。使用运行脚本不会遇到相同类型的问题吗?我在 clang 插件上使用了 libtooling,因为似乎 libtooling 更适合重构,这是最终目标——无论哪种方式,我都没有真正的偏见。我再看看,谢谢。
    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多