我在一个大的iOS应用程序项目中有许多仅限Swift的框架目标。我想探索Swift编译器选项的严格性,以了解它们是否可以提供任何额外的好处。
Xcode中有很多警告,但大多数警告似乎与Clang有关。我们可以为Swift编译器做什么相当于-Wall
或-Weverything
?
一个示例是警告,以防止局部变量的阴影:Apple LLVM 9.0 - Warnings - All languages / Hidden local variables
:它是GCC_WARN_SHADOW = YES
,因此它不会影响swiftc
编译器。
答案 0 :(得分:5)
没有。 C累积了层层警告,然后是多年来和许多编译器一样的“警告不是'所有警告'的警告”,加上一种允许你通常不应该做的事情的语言。 / p> 斯威夫特很年轻,在短暂的生命中多次破坏向后兼容性。它还没有足够长的时间来需要奇怪的后向兼容性选项。 C添加的许多内容都是警告,Swift只是非法或要求你明确。
也就是说,绝对存在其他层次的警告。第一组是通过静态分析器(Xcode中的Cmd-Shift-B)找到的,第二组存在于像swiftlint这样的工具中,它们充当与C中的linters相同的角色.linter和编译器警告之间的界限是模糊的和变化的,你可能会看到一些东西随着时间的推移从linter转移到编译器。但我仍然怀疑你会看到一个像GCC那样复杂的警告系统(Clang继承了这个系统)。