首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏移动应用开发专栏

    一文读懂 Xcode 代码索引原理

    这就要引入一个新的工具 SourceKit,上述的 Xcode 代码操作相关功能,都是基于 SourceKit 实现的。 SourceKit 和 Xcode 通过 XPC 进行通信,SourceKit 是 Xcode 代码索引功能的幕后主角,Xcode 是客户端,负责收集用户操作,转换成请求发给 SourceKit,最后展示计算结果 ;SourceKit 是后端,负责生成索引数据,计算 Xcode 请求。 图片图片三、SourceKit - 代码索引幕后主角3.1 SKAgent了解了整个工作流程,接下来我们来讲讲 SourceKit 的一些工作细节。 图片3.2 SourceKit 通信协议探索为了进一步探索 SourceKit 在背后究竟做了什么,我们将 Xcode 和 SourceKit 通信日志打印出来分析,通过以下命令启动 Xcode,可以将日志打印到指定文件

    5.5K30编辑于 2023-01-04
  • 来自专栏肘子的Swift记事本

    在Linux下搭建Swift开发调试环境

    SourceKit-LSP 什么是LSP LSP的全程是Language Sever Protocol,是微软提出的一项标准化协议,旨在统一开发工具与Lanuguage Server之间的通信。 $cd sourcekit-lsp/Editors/vscode/ $npm run createDevPackage 2021年8月更新 新的LSP版本更改了插件编译命令 $ cd sourcekit-lsp 配置vscode 通过命令行将插件安装到vscode上 $cd ~/sourcekit-lsp/Editors/vscode/out $code --install-extension sourcekit-lsp-vscode-dev.vsix "sourcekit-lsp.serverPath": "/usr/share/swift/usr/bin/sourcekit-lsp" 安装完成后,vscode便可支持代码自动补全、定义跳转等功能。 swiftformat更多的表现在对代码的自动修改上,而swiftlint由于直接hook了Clang和Sourcekit,因此提供了swiftformat所不具备的,代码录入阶段的实时验证和提示功能(

    11.1K20编辑于 2022-07-28
  • 来自专栏韦弦的偶尔分享

    [译] 苹果在 iOS 10.1 和 macOS 10.12 中使用了 Swift

    /Versions/A/Frameworks/libswiftCore.dylib /Applications/Xcode.app/Contents/SharedFrameworks/SourceKit.framework /Versions/A/Frameworks/libswiftDarwin.dylib /Applications/Xcode.app/Contents/SharedFrameworks/SourceKit.framework /Versions/A/Frameworks/libswiftDispatch.dylib /Applications/Xcode.app/Contents/SharedFrameworks/SourceKit.framework /Versions/A/Frameworks/libswiftIOKit.dylib /Applications/Xcode.app/Contents/SharedFrameworks/SourceKit.framework /Versions/A/SourceKit 结论 Apple 在 iOS 10.1 和 macOS 10.12.1 中对 Swift 的使用极其有限。

    1.9K20编辑于 2021-12-24
  • 来自专栏Swift社区

    使用 Swift Package 插件生成代码

    使用sourcekit,或者更具体地说,SourceKitten,扫描这些.swift文件并收集类型信息。这将允许提取符合Fetchable协议的所有类型,以便可以针对它们编写测试。 请注意,环境变量(IN_PROCESS_SOURCEKIT)也被设置为true。这需要确保选择源套件的进程中版本,以便它能够遵守插件的沙盒规则。 Xcode附带两个版本的sourcekit可执行文件,一个版本解析进程中的文件,另一个使用XPC向解析进程外文件的守护进程发送请求。 后者是mac上的默认版本,为了能够将sourcekit用作插件进程的一部分,必须选择进程中版本。 这最近在SourceKitten上作为环境变量实现,是运行引擎盖下使用sourcekit的其他可执行文件的关键,例如SwiftLint。

    3K20编辑于 2022-12-12
  • 来自专栏FreeBuf

    Swiftshield:SwiftOBJ-C 代码混淆工具

    cxncjnx8fh83FDJSDd() { return vPAOSNdcbif372hFKF() } } 自动模式(仅限 Swift) 使用-automatic标签,SwiftShield将使用SourceKit 2.没有调用Swift方法的Objective-C类(调用Objective-C方法的Swift类是可以的,除非涉及到接口) 3.最新的Swift版本和Xcode命令行工具(适用于所有版本,但由于SourceKit 版本不同,结果可能也会有所不同) 4.确保你的项目不包含SourceKit的bug。 示例:MyLib,MyAppRichNotifications,MyAppWatch_Extension show-sourcekit-queries:打印发送到SourceKit的查询。

    3.1K00发布于 2019-10-10
  • 来自专栏SpringSpace.cn

    RHEL 4.7 (64bit) 环境安装 GCC 4.6 测试记录 (更新至gcc-4.6.1)

    unknown-linux-gnu/4.6.0 export PATH=$GCC46_HOME/bin:$PATH gcc 编译测试(一段自打印程序): [root@Linux cpp-sourcekit 未作类型转换 [enabled by default] testc.c:1:1: 附注:需要类型‘const char *’,但实参的类型为‘int’ [root@Linux cpp-sourcekit /testc main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}[root@Linux cpp-sourcekit Michael Chen from Creaway Automation." << endl;         return 0; } [root@Linux cpp-sourcekit ]# g++ -o test test.cpp [root@Linux cpp-sourcekit]# .

    1.2K20发布于 2018-09-05
  • 来自专栏Swift社区

    Apple 新品发布会亮点有哪些 | Swift 周报 issue 61

    该功能将包含在与 Swift 6.1 捆绑的 SourceKit-LSP 中,并将在下一个 VS Code Swift 扩展版本中发布。 workspace/getReferenceDocument: 这个扩展使得 VS Code Swift 扩展可以向 SourceKit-LSP 服务器请求并检索文档(例如 Swift 宏展开)的内容。 自定义 URL 方案:Lokesh 引入了一个新的自定义 URL 方案 (sourcekit-lsp\://),用于编码生成任何形式内容(特别是 Swift 宏展开)所需的数据。 实施细节实施过程中涉及到几个关键组件的紧密互动:VS Code-Swift 扩展: 作为 VS Code 和 SourceKit-LSP 之间的桥梁。 SourceKit-LSP: 提供必要的编辑器功能,并通过 LSP 进行通信。SourceKitD: 嵌入在 Swift 编译器中的后台服务,提供宏展开所需的原始数据和操作。

    67410编辑于 2024-09-20
  • 来自专栏iOS面试

    如何通过静态分析提高iOS代码质量

    对于OC语言的静态分析可以完全通过Clang,对于Swift的静态分析除了Clange还需要借助于SourceKit。 它的实现是 Hook 了 Clang 和 SourceKit 从而能够使用 AST 来表示源代码文件的更多精确结果。Clange我们了解了,那SourceKit是干什么用的? SourceKit包含在Swift项目的主仓库,它是一套工具集,支持Swift的大多数源代码操作特性:源代码解析、语法突出显示、排版、自动完成、跨语言头生成等工作。

    2.7K30发布于 2020-05-26
  • 来自专栏快乐阿超

    SwiftLint

    SwiftLint Hook 了 Clang 和 SourceKit 从而能够使用 AST 来表示源代码文件的更多精确结果。 该项目遵守 贡献者契约行为守则。一旦参与,你将被视为支持这一守则。 使用多个 Swift 版本 SwiftLint 工作于 SourceKit 这一层,所以 Swift 版本发生变化时它也能继续工作! 环境变量来标记一个特定的 Swift 工具集版本: $ TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 swiftlint autocorrect 在 Linux 上,SourceKit 默认需要位于 /usr/lib/libsourcekitdInProc.so 或者通过 LINUX_SOURCEKIT_LIB_PATH 环境变量进行指定。

    1.7K10编辑于 2024-11-18
  • 来自专栏用户4822892的专栏

    Web App Development: 12 Best Practices You Can't Miss

    You could move to cloud-based IDEs such as Cloud IDE, Kondigngen, Cloud 9, Codeanywhere, and Sourcekit

    58430发布于 2019-07-24
  • 来自专栏CoderStar

    Xcode 常见 CLI 工具

    语言的编译前端;路径:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; sourcekit-lsp 由红帽、微软和 Codenvy 联合推出,可以让不同的程序编辑器与集成开发环境(IDE)方便嵌入各种程序语言,允许开发人员在最喜爱的工具中使用各种语言来撰写程序,SourceKit-LSP 是 Apple 如 VSCode; 路径:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp

    5.1K21编辑于 2022-09-23
  • 来自专栏Swift社区

    Swift 周报 第三十八期

    讨论VSCode 5.9:停止服务器失败[9] 自从升级到 5.9 以来,VSCode 上的 sourcekit-lsp 变得更加不稳定,我不断收到“客户端 SourceKit 语言服务器:与服务器的连接出错 unregistering for change notifications of a file that isn’t watched by ahoppen · Pull Request #828 · apple/sourcekit-lsp

    90430编辑于 2023-09-25
  • 来自专栏肘子的Swift记事本

    切勿将辅助驾驶宣传成智能驾驶 | 肘子的 Swift 周报 #078

    同时,SourceKit-LSP 现已默认开启后台索引,显著提升开发期间的响应速度与智能感知表现。

    44800编辑于 2025-04-09
  • 来自专栏Swift社区

    Swift 周报 第十一期

    这些领域包含:SwiftPM、SourceKit-LSP、VSCode 扩展、LSP、Swift Format、API Breaking Change checker、Swiftly、Docker 镜像

    1.4K20编辑于 2022-12-12
  • 来自专栏Swift社区

    苹果、华为“撞档”上新 | Swift 周报 issue 62

    SourceKit 方面,多个查询已被 swift-syntax 和 swift-format 工具取代,更新会废弃旧的查询并在下一个 Swift 版本中完全移除这些处理#if的查询。

    72721编辑于 2024-09-24
领券