PHPファイル用の静的コードアナライザーはありますか?バイナリ自体は構文エラーをチェックできますが、未使用の変数代入、最初に初期化されずに代入される配列、そしておそらくコードスタイルの警告など、もっとうまくいくものを探しています。オープンソースプログラムが好まれるでしょうが、それが強く推奨されれば私達は会社に何かの代金を払うように納得させるかもしれません。
コマンドラインからlint-modeでphpを実行し、実行せずに構文を検証します。
php -l FILENAME
高レベルのスタティックアナライザは次のとおりです。
低レベルのアナライザー
実行時アナライザーは、PHPの動的性質により、いくつかの点でより有用です。
ドキュメントライブラリ phpdoc と doxygen は一種のコード分析を行います。たとえば、Doxygenは、 graphviz でNice継承グラフをレンダリングするように設定できます。
もう1つのオプションは xhprof です。これはxdebugに似ていますが、より軽いため、本番サーバーに適しています。このツールにはPHPベースのインターフェースが含まれています。
完全を期すために、 phpCallGraph もチェックしてください。
PHP Mess Detector は最高で速いです。
私は$ php -lを使って他のツールを試してみました。しかし私の経験で最も優れたもの(もちろんYMMV)は pfffツールセットの概要 です。私はQuoraのpfffについて聞きました( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )
コンパイルしてインストールすることができます。 Niceパッケージはありません(私のmint 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のサンプル検出レポートはウェブサイトにあります。 (私は作者です)。
NetBeans IDEは構文エラー、未使用の変数などをチェックします。自動化されているわけではありませんが、小規模または中規模のプロジェクトではうまく機能します。
nWire for PHP という新しいツールがあります。これはEclipse PDTとZend Studio 7.x用のコード探査プラグインです。 PHPのリアルタイムコード分析を可能にし、次のツールを提供します。
PHP PMD(プロジェクト混乱検出機能)とPHP CPD(コピー貼り付け検出機能)、PHPUnitの以前の部分
RIPS - PHPスクリプトの脆弱性のための静的なソースコードアナライザー があります。 RIPSのソースは SourceForge にあります。
RIPSサイトから:
RIPSは、静的コード分析を使用してPHPアプリケーションの脆弱性を見つけるためにPHPで書かれたツールです。すべてのソースコードファイルをトークン化して解析することによって、RIPSはPHPソースコードをプログラムモデルに変換し、ユーザー入力によって悪意を持った(悪意のあるユーザーの影響を受ける)機密のシンク(潜在的に脆弱な関数)を検出できます。プログラムの流れ見つかった脆弱性の構造化された出力のほかに、RIPSはさらに手動の分析のための統合コード監査フレームワークを提供します。
静的コード分析のための、まったく新しい--- PHP Analyzer というツールがあります。
多くの種類の静的解析の中で、基本的な自動修正機能も提供します。 documentation を参照してください。
更新:PHPアナライザは現在非推奨のプロジェクトですが、あなたはまだレガシーブランチでそれにアクセスすることができます
あなたはFacebookのヒップホップでコンパイルしてみたいと思うかもしれません。
これはプロジェクト全体の静的分析を行い、あなたが探しているものかもしれません。