gpt4 book ai didi

ios - 自定义构建条件和警告 Xcode

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:52 25 4
gpt4 key购买 nike

我的 iOS 项目强制要求开发人员创建的每个类都必须以“SYV”为前缀。我必须添加build设置,如果任何类不遵循此约定,它应该在 Xcode 中显示为警告。

我不确定从哪里开始,甚至不知道从哪里开始。请指教。

最佳答案

这是可能的,但需要一些我不确定是否值得的工作。项目中将有多少个类(class)?如果它不是一个大项目,手动代码审查应该可以完成这项工作。但是,如果您想按照自己的计划行事,可以执行以下操作:

方法 1: 将所有类放在一个文件夹(或子文件夹)中。鉴于您只在每个文件中放置一个类,并且该类以文件命名,您可以有一个非常简单的脚本来验证所有文件名,如果您想要某种结构,可以递归地进行。

方法 2:使用 Xcode Build Rules : 为 *.m 文件指定一个新规则(如果您想确定的话,也可能是 *.h)。由于这会覆盖默认规则(编译文件),而且我不知道之后执行默认规则的简单解决方案,我建议您创建一个额外的目标,仅用于验证,不需要编译。然后,您需要一个自定义脚本来解析源文件,找到类 @implementation(假设每个类都已实现,我看不出检查 @interface 的理由直接,但我可能在这里遗漏了一些东西),并验证他们的名字。您可能可以使用一些正则表达式,或者使用 libclang 完全解析文件.如果您在从构建规则脚本调用的基于 C(C、C++、Objective-C 等)的命令行工具中实现验证,则可以使用它来生成显示在 Xcode 中的警告:

// casts are only added as hints to the types used
printf("%s:%d: warning: %s", (string)symbolName, (int)lineNumber, (string)text);

不过,我还没有找到直接从 bash 脚本生成警告的方法。可以找到有关构建规则的更多信息 here .

方法 3:与 2 类似,但您可以 add 而不是覆盖构建规则在编译期间执行的脚本,通过定义 Build Phase .这里的挑战是找到目标使用的所有相关类。您可以手动检查 .pbxproj file获取该信息(不是真的推荐,但很好的练习),或使用像 mod-pbxproj 这样的库(Python)或 Xcodeproj ( ruby )。然后按照方法 2 进行验证。

方法 4:您还可以通过添加编译器标志和代码来检查前缀来实现 Clang 扩展。这可以通过修改编译器本身、添加分析器插件或编写基于 Clang 的工具(可以从脚本调用,如方法 2/3 中所示)来完成。这不是微不足道的,而是可以做到的。 eerothis如果你想走这条路,可以使用改进的 Clang 编译器作为例子。

推荐阅读:
objc.io: The Build Process
Xcode Project vs. Xcode Workspace - Differences

关于ios - 自定义构建条件和警告 Xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com