除了我读过的几篇文章和官方页面外,我没有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也可以与源代码交互,但看起来功能更强大,但层次更低。
我想知道的是:
https://github.com/apple/swift/blob/master/tools/SourceKit/docs/Protocol.md
谢谢
答案 0 :(得分:1)
根据最终目标,您可以选择以下几种方式:
SwiftSyntax
是Apple提供的新的(测试版)开源框架,用于遍历/修改文档的AST(抽象语法树)。 GitHub repository上有更多信息和示例。
如上所述,SourceKitten
是用于与SourceKit
通信的Swift库。 SourceKit
是Xcode的骨干,实际上,Xcode只是没有它的美化文本编辑器。它提供了从语义分析的子结构和生成的接口到代码完成和语法突出显示等所有内容,这是IDE所需的一切。这是最全面的选项,并且很快就不会出现(如Maxim所述,Apple甚至为此开发了一个LSP接口。)无耻的插件:我进一步开发了Sylvester
,这是类型化的XPC可用的SourceKitten
(SourceKit
)接口,带有一些糖。 SKEditorOpen
请求应为您提供足够的信息,以从源文档中提取所需内容。
XcodeKit
为与源代码的交互提供了极为有限的API。实际上,它仅在用户从中调用命令的编辑器中提供了打开文档的可变缓冲区。
对于在编辑器中检索当前打开的文档的查询,您唯一的选择是使用Xcode公开的 wonderful 脚本接口。可以在 /Applications/Xcode.app/Contents/Resources/Xcode.sdef 中找到Xcode SDEF文件。您可以使用ScriptingBridge
框架在Cocoa应用程序中进行操作。如果您使用的是Swift,那么SwiftScripting
存储库将非常有用。
答案 1 :(得分:0)
您的分析是正确的,XcodeKit允许与编辑器窗口及其中的(所选)文本进行交互,并且SourceKit具有编程语言语法的知识。 AFAIK,SourceKit非常活跃,下一个重要的东西将是LSP-https://github.com/apple/sourcekit-lsp