7

Swift プロジェクト全体で強制的なアンラップを検出する (コンパイラ フラグまたはスクリプトを介して) 方法はありますか?

以下のようなことを考えています。

let b = a as! B
let c = a!
a!.method()

var a: A!たとえば、誤検知をトリガーすることなく。

4

1 に答える 1

1

コメントに記載されているように、正規表現検索を作成して、 postfix のほとんどの使用をキャッチできます!。(注意すれば、IUO 型宣言からノイズが発生しないように、colon-typename-bang のほとんどの使用を無視できるはずです。)

ただし、これはほぼ完璧であり、不完全です。たとえば、IUO 型を返す API を呼び出し、オプションをチェックせずにその結果にアクセスするときはいつでも、明示的に何も持たずに強制アンラップを実行できます。あなたのコードの強打。

チェックされていないアンラップについて一貫して警告しようとするツールは、Swift の型システム、文法、および型推論規則についてかなり深い知識を持っている必要があります。そして、実際にそのような知識を持つことができる (そしてそれを正しく持つ) 唯一の場所は、コンパイラーの内部です。したがって、Apple に機能要求を提出するか、オープン ソース プロジェクトで作業するのが最善の方法です。

于 2015-12-13T00:48:11.780 に答える