Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中将*某些*警告视为错误?_Swift_Xcode_Gcc_Compiler Errors_Compiler Warnings - Fatal编程技术网

在Swift中将*某些*警告视为错误?

在Swift中将*某些*警告视为错误?,swift,xcode,gcc,compiler-errors,compiler-warnings,Swift,Xcode,Gcc,Compiler Errors,Compiler Warnings,想象我在斯威夫特: @available(*, deprecated=1.0) func myFunc() { // ... } 通过设置OTHER\u SWIFT\u FLAGS=“-warningas errors” 如何使这些弃用通知显示为警告,同时仍将其余警告视为错误 对于这个问题,似乎: -Werror // treat all warnings as errors -Wno-error=<warning> // don't treat <warning

想象我在斯威夫特:

@available(*, deprecated=1.0)
func myFunc() { 
    // ...
}
通过设置
OTHER\u SWIFT\u FLAGS=“-warningas errors”

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


对于这个问题,似乎:

-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
-Werror//将所有警告视为错误
-Wno error=//不要将其视为错误(例如,-Wno error=开关)
-Werror=//视为错误
因此,如果这是Objective-C,我可以简单地使用
-Werror-Wno error=deprecated声明
,得到我想要的东西

Swift的等价物是什么



我尝试将
-Wno error=deprecated声明添加到
其他\u SWIFT\u标志
,但它似乎不适用于SWIFT,因此不起作用。

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

Swift核心开发人员多次表示不愿意在Swift evolution邮件列表中添加一系列编译器标志。其基本原理是,他们希望保持Swift的单一“方言”,以便每个开发人员使用相同的语言功能等

当然,这是否应该延伸到特定的警告标志之类的东西是有争议的,但这是目前的官方立场。这些规则在未来肯定会有所放宽,但我不敢打赌


编辑:,Swift添加了一个
#警告
语法。

有一个选项可以将所有警告视为错误,这意味着该原理已经无效。受其他人的限制让我很恼火,我不会做出让我的工作更困难的决定。我以为swift是为了让应用程序开发变得更容易…@Jonathan。警告的存在已经使其无效。要么是某个问题,那么你必须修复它,因此它是一个错误。或者某件事不是问题,但不需要注意。什么是警告?一个没有问题的问题?编译器无法判断某个问题是否存在的一种方式?有些人总是修复所有警告,有些人总是忽略所有警告,其余的则介于两者之间,那么这如何使代码保持单一的“方言”?如果我想要一个可能错误的模糊列表,我会运行分析器,而不是编译器。@Jonathan。哦,我不确定Swift是否是为了让应用程序开发更简单,我觉得它是为了让它更健壮,更不容易出错。@Mecki我认为苹果确实一直在吹捧Swift是为了让应用程序开发更简单,也更健壮。我希望对此进行更多控制的原因是,我希望能够将警告视为错误,同时让用户生成警告(#此处显示警告警告)不要成为错误,这样我可以在开发过程中做临时的笔记和提醒,在我提出拉取请求之前我会清理这些笔记和提醒。@PaulBruneau Swift没有
#警告
或类似的东西。而且
#warning
甚至不是任何C/C++标准的一部分,只有
#error
是;MSVC甚至不支持
#warning
。用户生成的警告不符合标准。您所做的惯例是使用注释,例如
//TODO:…
//FIXME:…
,Xcode甚至可以识别这些注释(以及
/???:…
/!!!:…
)并在符号概览菜单中显示它们。对于关心这些问题的人来说,使用grep
grep
很容易找到和收集它们,而对于其他人来说,它们很容易被忽略。