狠狠撸
Submit Search
5分て?わかる静的解析入门
?
3 likes
?
3,498 views
Kenta USAMI
Follow
PHP BLT #5で発表しました http://phpblt.connpass.com/event/35070/
Read less
Read more
1 of 21
Download now
More Related Content
5分て?わかる静的解析入门
1.
5分でわかる静的解析入門 Learn PHP static
analysis in 5 min. 2016-07-20 PHP BLT #5
2.
お前誰よ ? うさみけんた (@tadsan)
/ Zonu.EXE ? GitHub/Packagistでは id:zonuexe ? Ruby書いてたら、何の因果かPHPを書く仕事に ? 好きな言葉はメタプログラミングです
3.
さて
4.
敵を知れば百戦殆ふからず ? プログラムを実際に動かさずして、? ソフトウェアの性質を把握する ? いろんなツールとか手法がある ?
人間がPull Requestのdiffを見て? レビューするのも一種の静的解析 ? ユニットテストは実際に動かすので? 動的検査の一種
5.
wc -l **/*.php
6.
wc -l **/*.php ?
Unixの標準コマンド ? お前は何を言ってるんだ ? ファイルの行数を測る (-l) ? バイト数を測る (-c)
7.
php -l a.php
8.
php -l target.php ?
コードがSyntax Errorではないか? 検査する ? 実際に運用されるサーバーと同じ? バージョンを利用する ? git ls-files | grep '.php$' | xargs -IFILE -n1 php -l FILE
9.
token_get_all()
10.
token_get_all() ? PHPの標準関数 (要tokenizer) ?
スクリプトを構文要素ごとに? 切り分けてくれる(だけ) ? 構文解析はしてくれない… (重要) ? 目的を集中すれば小さなパーサーは 意外に書けた
11.
preg_match()
12.
preg_match() ? PHPの標準関数(最終兵器) ? 雑な正規表現でも意外と機能する ?
正規表現パターンなら誰でも書ける ので、チームでメンテナンスできる
13.
preg_match() ? こんな感じで配列にパターンを? 並べていく [ 'level' =>
'error', 'desc' => 'mt_srand() は使用禁止', 'pattern' => [ '/[^a-zA-Z0-9_$:>]mt_srand *(/i' => false, ], ],
14.
そのほか
15.
よのなかにはたくさん実装ある ? PHPの静的解析 —
Algo13 2016.04.11 ドキュメント ? http://algo13.net/php/tips/static-analysis.html ? ↑良い感じにまとまってるネ申記事 ? phpmd, phpcs, php7cc… ? 簡単な構文解析のサンプル載ってる
16.
何をしたいのか
17.
静的解析できると何が嬉しいのか ? Syntax Errorなファイルを? デプロイしないようにしたい… ?
弊社でも昔はありました ? コードレビューでつまらないことを 指摘したくない ? 割と膨大なコードを安全に? PHP7に着地させたい
18.
最近のナウいツール
19.
etsy/phan ? Rasmus Lerdorfを要するEtsy社が 開発する静的解析ツール ?
未定義関数とか型がをかしいとか、? とにかくいろんな指摘してくれる ? PHPDocの型を解析してくれる ? 日本語で紹介すればバズれるぞ!!!
20.
最近やってること
21.
baguette/definfo ? 最近夜な夜な作ってるツール ? 実行時情報(Reflection)を使って? いろいろ指図してくれるように? するつもり ?
タグジャンプの代替にしたい ? 静的解析はしないつもりだったけど、 どうにもならないところは? がんばって構文解析してる
Download