我在一个大型 iOS 应用程序项目中有许多仅限 Swift 的框架目标。我想探索 Swift 编译器选项的严格性,以了解它们是否可以提供任何额外的好处。
Xcode 中有很多警告,但大多数似乎与 Clang 相关。我们可以为 Swift 编译器做的 -Wall
或 -Weverything
的等价物是什么?
一个例子是防止局部变量隐藏的警告:Apple LLVM 9.0 - Warnings - All languages/Hidden local variables
:在 GCC_WARN_SHADOW = YES
下罩,因此它不会影响 swiftc
编译器。
最佳答案
没有。多年以来,C 语言积累了一层又一层的警告,然后像“不属于‘所有警告’的警告”这样的藤壶和许多编译器,再加上一种允许很多你通常不应该做的事情的语言。
Swift 还很年轻,在其短暂的生命中曾多次破坏向后兼容性。它存在的时间还不够长,还需要奇怪的向后兼容选项。 C 作为警告添加的许多内容,Swift 只是将其设为非法或要求您明确说明。
也就是说,绝对已经存在其他层次的警告。第一组是通过静态分析器(Xcode 中的 Cmd-Shift-B)找到的,第二组存在于像 swiftlint 这样的工具中。它与 C 语言中的 linters 起着相同的作用。linter 和编译器警告之间的界线是模糊且不断变化的,随着时间的推移,您可能会看到一些东西从 linter 转移到编译器。但我仍然怀疑您是否会看到像 GCC(Clang 继承的)一样复杂的警告系统。
关于Swift:如何最大化 Xcode 中的警告? swiftc 中 -Wall 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46513210/