• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:03:41 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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



Best Answer-推荐答案


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

方法 1: 将所有类(class)放在一个文件夹(或子文件夹)中。假设您只在每个文件中放置一个类,并且该类以该文件命名,您可以使用一个非常简单的脚本来验证所有文件名,如果您想要一些结构,可能会递归验证。

方法 2: 使用 Xcode Build Rules : 为 *.m 文件指定一个新规则(如果你想确定的话,也可以是 *.h)。由于这会覆盖默认规则(编译文件)并且我不知道之后执行默认规则的简单解决方案,我建议您创建一个额外的目标仅用于验证,不需要编译。然后,您需要一个自定义脚本来解析源文件,找到类 @implementations(假设每个类都已实现,我看不出检查 @interfaces 的理由直接,但我可能在这里遗漏了一些东西),并验证了他们的名字。您可能会摆脱一些正则表达式,或使用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap