将*some*警告视为Swift中的错误?

Sen*_*ful 11 xcode gcc compiler-errors compiler-warnings swift

想象一下,我在Swift中标记了以下方法:

@available(*, deprecated=1.0)
func myFunc() { 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我通过设置将警告视为Swift中错误OTHER_SWIFT_FLAGS="-warnings-as-errors".

如何将这些弃用通知显示为警告,同时仍将其余警告视为错误?


看起来GCC对这个问题有一个很好的解决方案:

-Werror // treat all warnings as errors
-Wno-error=<warning> // don't treat <warning> as error (e.g. -Wno-error=switch)
-Werror=<warning> // treat <warning> as error
Run Code Online (Sandbox Code Playgroud)

所以如果这是Objective-C,我可以简单地使用-Werror -Wno-error=deprecated-declarations并获得我想要的东西.

什么是Swift的等价物?


我尝试添加-Wno-error=deprecated-declarationsOTHER_SWIFT_FLAGS,但似乎它不适用于Swift,所以它不起作用.

Ole*_*ann 4

这是不可能的。从 Swift 4 开始,Swift 编译器没有用于启用/禁用特定警告或将特定警告提升为错误的开关。

Swift 核心开发人员多次表示不愿意在 swift-evolution 邮件列表中添加一长串编译器标志。理由是他们希望保留 Swift 的单一“方言”,以便每个开发人员都可以使用相同的语言功能等。

这是否应该扩展到特定警告标志之类的东西当然是有争议的,但这就是当前的官方立场。未来这些规则绝对有可能会有所放松,但我不打赌。

编辑: 从 Swift 4.2 开始,Swift 添加了#warning语法。

  • 可以选择将所有警告视为错误,这意味着该理由已经无效。受到其他人的限制是很烦人的,我不会做出让我的工作变得更加困难的决定。我认为 swift 是为了让应用程序开发更容易...... (2认同)