PHPソースファイルの静的分析ツールはありますか?バイナリ自体は構文エラーをチェックできますが、次のような他のことを行うものを探しています。
- 未使用の変数割り当て
- 最初に初期化されずに割り当てられる配列
- そしておそらくコードスタイルの警告
- ...
PHPソースファイルの静的分析ツールはありますか?バイナリ自体は構文エラーをチェックできますが、次のような他のことを行うものを探しています。
回答:
コマンドラインからlint-modeでphpを実行して、実行せずに構文を検証します。
php -l FILENAME
上位レベルの静的アナライザーには、次のものがあります。
下位レベルのアナライザーには次のものがあります。
PHPの動的な性質により、いくつかの場合により有用なランタイムアナライザーには、次のものがあります。
ドキュメントライブラリphpdocとdoxygenは、一種のコード分析を実行します。たとえば、doxygenは、graphvizを使用して継承グラフを表示するように構成できます。
もう1つのオプションはxhprofです。これはxdebugに似ていますが、より軽量で、本番サーバーに適しています。このツールには、PHPベースのインターフェースが含まれています。
php -l
は、一度に1つの入力ファイルしか読み取れないためです(つまり、を実行すると機能しませんphp -l file1.php file2.php
)。代わりに-n 1
、xargs
コマンドプロセスごとに1つの入力行のみを使用するように指示するオプションを使用する必要があります。代わりに、個別にが実行php -l file1.php
さphp -l file2.php
れます。同時に、あなたは使用することができ-P <n>
、実行を並列化するために、一度にプロセスを実行する「N」する:find . -name '*.inc' -o -name '*.php' -print0 | xargs -0 -n1 -P10 php -l
find /your/path -name '*.php' -exec php -l {} \;
信頼できる作品。
php -l
)を機能させるにdisplay_errors = on
はphp.ini
、で設定する必要があります。そうしないと、構文エラーがあることに関する一般的なメッセージのみが表示され、どのエラーまたはどの行に関する詳細が表示されません。
-d
スイッチを使用して、コマンドラインの設定を上書きすることもできます。例えばphp -l -d display_errors=on $FILENAME
完全を期すには、phpCallGraphも確認してください。
PHP Mess Detectorは素晴らしく高速です。
$ php -lと他のいくつかのツールを使用してみました。しかし、私の経験(もちろんYMMV)で最高のものはpfffツールセットのscheckです。Quoraでpfffについて聞いた(http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool)
コンパイルしてインストールできます。素敵なパッケージはありません(私のDebianでは、最初にlibpcre3-dev、ocaml、libcairo-dev、libgtk-3-dev、libgimp2.0-devの依存関係をインストールする必要がありました)。
結果は次のように報告されます
rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.
コピー/貼り付け/編集されたコードを見つける「クローン検出」ツールであるSemantic DesignsのCloneDRを参照してください。空白、コメント、さらには変数の名前変更にかかわらず、正確でほぼミスのコードフラグメントを検出します。PHPの検出レポートのサンプルは、ウェブサイトにあります。(私は著者です)。
PHP用のnWireと呼ばれる新しいツールがあります。これは、Eclipse PDTおよびZend Studio 7.xのコード探索プラグインです。PHPのリアルタイムコード分析を可能にし、次のツールを提供します。
PHPスクリプトの脆弱性のための静的ソースコードアナライザーRIPSがあります。SourceForgeで入手可能なRIPSのソース。
RIPSサイトから:
RIPSは、静的コード分析を使用してPHPアプリケーションの脆弱性を見つけるためにPHPで記述されたツールです。すべてのソースコードファイルをトークン化して解析することで、RIPSはPHPソースコードをプログラムモデルに変換し、プログラムフロー中にユーザー入力(悪意のあるユーザーの影響を受ける)によって汚染される可能性のある機密シンク(潜在的に脆弱な関数)を検出できます。検出された脆弱性の構造化された出力に加えて、RIPSはさらに手動で分析するための統合コード監査フレームワークを提供します。
Facebookのヒップホップでコンパイルしてみてください。
それはプロジェクト全体の静的分析を行い、あなたが探しているものかもしれません。