除了我阅读的几篇文章和官方页面外,我没有 XcodeKit 和 SourceKit 的经验
https://developer.apple.com/documentation/xcodekit#topics
https://github.com/apple/swift/tree/master/tools/SourceKit
我试图了解两者之间的差异以及他们能够做什么。
我认为 XcodeKit 本质上让您可以向 Xcode 菜单添加命令,并可以通过创建应用扩展来与您打开的源代码进行交互,然后您也可以通过 App Store 分发该扩展。
据我所知,XcodeKit 只让你从当前的焦点文件(不是项目中的所有文件)中获取信息,然后你可以获得选定的文本等......至少这是我在 Xcode 9 之前读到的内容,不确定是否事情现在好多了。
SourceKit 也与源代码交互,但看起来更强大但更底层。
我想知道的是:
例如,假设我想提取结构和类、每个类的方法等信息,然后从中生成某种输出。
我如何使用 SourceKit(或 XcodeKit?)来做到这一点?
https://github.com/apple/swift/blob/master/tools/SourceKit/docs/Protocol.md
谢谢
最佳答案
根据您的最终目标,您有几个选择:
SwiftSyntax
是来自 Apple 的一个新的(测试版)开源框架,用于遍历/修改文档的 AST(抽象语法树)。更多信息和示例请访问 GitHub repository . SourceKitten
是一个用于与 SourceKit
通信的 Swift 库. SourceKit
是 Xcode 的支柱,没有它,它实际上只是一个美化的文本编辑器。它提供了从语义分析的子结构和生成的接口(interface)到代码完成和语法高亮的一切——IDE 需要的一切。它是最全面的选择,而且不会很快出现(正如 Maxim 所提到的,Apple 甚至为其开发了 LSP 接口(interface)。) 无耻插件:我进一步开发了 Sylvester
😼,打字,XPC 可用 SourceKitten
( SourceKit
) 与一些糖接口(interface)。 SKEditorOpen
request 应该为您提供足够的信息来从源文档中提取您想要的任何内容。 XcodeKit
公开了一个极其有限的 API 来与源代码交互。事实上,它只是在编辑器中提供了用户调用命令的打开文档的可变缓冲区。 至于您在编辑器中检索当前打开的文档的查询,您唯一的选择是使用 Xcode 公开的精彩脚本界面。 Xcode SDEF 文件位于/Applications/Xcode.app/Contents/Resources/Xcode.sdef。您可以使用
ScriptingBridge
从 Cocoa 应用程序中执行此操作的框架。如果您使用的是 Swift,那么 SwiftScripting
存储库非常有用。
关于sourcekit - XcodeKit 和 SourceKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54467130/