目次

前のトピック

< Phpinfo() の章

次のトピック

最適化 >

このページ

静的な解析

Zephirのコンパイラはコンパイルされたコードの静的な解析を提供します。この機能の背景にある考えは開発者が潜在的な問題を発見し期待しない挙動を避けることを助けることです。

条件付き非割り当て変数

割り当ての静的解析は、割り当てられる前に変数が使われるかどうかを識別しようとします:

class Utils
{
        public function someMethod(b)
        {
                string a; char c;

                if b == 10 {
                        let a = "hello";
                }

                //a はここで初期化されないかも知れません
                for c in a {
                        echo c, PHP_EOL;
                }
        }
}

上の例は一般的な状況を説明します。変数 “a” は “b” が10に等しい時にのみ割り当てられ、そして a はこの変数の値を使うために必要とされますが、初期化されないかも知れません。Zephirはこれを検知し、自動的に変数を空の文字列に初期化し、開発者に注意する警告を生成します:

Warning: Variable 'a' was assigned for the first time in conditional branch,
consider initialize it in its declaration in
/home/scott/test/test/utils.zep on 21 [conditional-initialization]

 for c in a {

そのようなエラーを見つけることは時には難しいですが、静的な解析はプログラマが前もってバグを見つけるのを助けます。

デッド コードの除去

Zephirは開発者にコード中の到達不可能なブランチについて通知し、デッドコードの除去を行います。これは、実行できないために生成されたバイナリからこれら全てのコードを除去することを意味します。

class Utils
{
        public function someMethod(b)
        {
                if false {
                        // これは実行されません
                        echo "hello";
                }
        }
}
TOP
inserted by FC2 system