有没有办法检测Swift项目中的强制解包?

ldi*_*ual 6 optional swift forced-unwrapping unwrap

有没有办法(通过编译器标志或脚本)检测Swift项目中的强制解包?

我正在考虑这样的事情:

let b = a as! B
let c = a!
a!.method()
Run Code Online (Sandbox Code Playgroud)

例如,不会触发误报var a: A!.

ric*_*ter 1

正如评论中所述,可以设计正则表达式搜索来捕获 postfix 的大多数用法!。(如果你小心的话,你应该能够让它忽略大部分冒号类型名称爆炸的使用,这样你就不会从 IUO 类型声明中得到噪音。)

\n\n

不过,这已经是最好的了,而且它是不完整的 \xe2\x80\x94 例如,每当您调用返回 IUO 类型的 API 并访问其结果而不检查可选值时,您都可以这样做强制解开,代码中没有显式地有任何爆炸。

\n\n

任何试图一致警告未经检查的解包的工具都需要对 Swift 的类型系统、语法和类型推断规则有相当深入的了解。实际上,您唯一可以获得此类知识(并正确掌握)的地方是编译器内部。因此,您可能最好向 Apple 提交功能请求或与开源项目合作。

\n