Xcode 项目 Linter (xcprojectlint)

概述

这个项目提供了一个安全保障,确保你的同事和 Git 都不会搞砸你的 Xcode 项目文件。一些设置在某种程度上可能取决于个人喜好。幸运的是,每个选项都可以单独启用。 xcprojectlint 目前支持以下检查:

当检测到失败条件时,尽可能多地将有用的上下文输出到 STDOUT,使 Xcode 能够就地显示错误。此外,它可以选择返回 EX_SOFTWARE,阻止构建成功,直到问题得到解决。

构建代码

要构建 xcprojectlint 工具,请运行

$ swift package update
$ make build

要在 Xcode 中使用项目和测试,请运行

$ xed .

使用示例

作为构建脚本阶段

bin/xcprojectlint --report error --validations all --project $PROJECT_FILE_PATH

作为 shell 命令

xcprojectlint --report error --validations files-exist-on-disk items-in-alpha-order
--project /tmp/Example/Example.xcproject

细节

xcprojectlint 正在操作一个未文档化的文件格式。多年来查看损坏的 Git 合并使我们有理由相信我们知道各个部分如何协同工作。也就是说,这仍然是一个最佳猜测,因此可能存在疏忽。幸运的是,这些 lint 操作是只读的,不会修改您的项目文件。

每次运行都从将项目文件解析为一系列集合开始,这些集合代表我们对项目文件如何组成的理解。它使用属性列表结构和 Xcode 写入项目中的注释来组装其数据。之后,xcprojectlint 将有效性测试应用于提取的集合,确保满足指定的规则。

修复线索

xcprojectlint 将尽可能尝试告诉您如何定位问题。它会告诉您哪个构建配置具有设置,组的预期顺序是什么,以及它可以从可用上下文中提取的其他信息。有时,它甚至会告诉您要查看的项目文件中的行号。这很棒,但 * 不要尝试在 Xcode 中查看该项目。* 会发生可怕的事情。相反,请使用你喜欢的文本编辑器来查看内部。

规则

贡献

我们欢迎您对 Github 上 American Express 开源社区的兴趣。 对 American Express 开源社区管理的任何开源项目的任何贡献者都必须接受并签署协议,表明同意以下条款。 除本协议授予 American Express 和 American Express 分发的软件接收者的权利外,您保留对您的贡献的任何及所有权利、所有权和利益(如果有)。 请填写协议

请随时打开拉取请求。 在提交 PR 之前,请使用提供的配置文件通过 swiftformat 运行您的代码:swiftformat --config swiftformat.config Sources/ Tests/

许可

根据本项目做出的任何贡献均受Apache License 2.0约束。

行为准则

本项目遵循美国运通社区准则。 通过参与,您应该遵守这些准则。