Page 1
PHP静的解析現状確認会
ピクシブ株式会社 / pixiv.git
pixiv Inc.うさみけんた / tadsan
2019-02-18
公開日:
by USAMI Kenta@tadsan
にオンラインのビデオ会議で開催された『PHP静的解析現状確認会』発表しました。
ピクシブ株式会社 / pixiv.git
pixiv Inc.うさみけんた / tadsan
2019-02-18
み重ねであり、この資料は筆者(@tadsan)がその成果をまとめたものである
概ね60秒程度で結果を表示できてます
pixiv運営本部
軽々に他者に推奨する戦略ではない。
プリミティブなテキスト編集ツールだけではメソッド利用箇所の洗い出しやリファクタリングの妨げとなる。この状況は既に大量のコードがあるプロジェクトを効率よくメンテする側面においては大変に痛かった。
ング機能などを利用し、過不足にほかのツールを利用するの懸命だろう
'@pixiv-lib/.*\.php$@' => [['level' => 'error','desc' => 'pixiv-libで定義されているクラスは include_once しないこと','pattern' => ['/include_once[ \(] *INC_PATH /' => false,'@/stacc/api\.php@' => true,],'tests' => [['pixiv-lib/foo.php', "include_once INC_PATH . '/Awesome/Class.php';",true],['pixiv-lib/foo.php', "include_once INC_PATH . '/stacc/api.php';",false],['pixiv-lib/foo.php', "include_once INC_PATH . 'HogeClass.php';", true],['foo.php', "include_once INC_PATH . '/Awesome/Class.php';", false],['foo.php', "include_once INC_PATH . '/stacc/api.php';", false],['foo.php', "include_once INC_PATH . 'HogeClass.php';", false],],],],
とても時間がかかる
ることが前提
Phanと違ってプロジェクトの全クラスを一度に検査する用途は向かない
PHPStanと正規表現ベースのlinterによる静的解析の二本立て
ランチにpushしてから60秒前後で動的解析と静的解析の結果が得られる
あらゆる値を文字列型(または再帰的に文字列を要素とする配列)として扱う
(declare(strict_types=1); が必須)
未設定なら人間が不用意にキャストしてしまうことがある
