PHP ソース ファイルの静的解析ツールはありますか?
バイナリ自体で構文エラーをチェックできますが、次のようなより多くの機能を探しています。
- 未使用の変数割り当て
- 最初に初期化されずに代入される配列
- おそらくコードスタイルの警告
- ...
PHP ソース ファイルの静的解析ツールはありますか?
バイナリ自体で構文エラーをチェックできますが、次のようなより多くの機能を探しています。
php
コマンド ラインから lint モードで実行して、実行せずに構文を検証します。
php -l FILENAME
高レベルの静的アナライザーには次のものがあります。
下位レベルのアナライザーには次のものがあります。
PHP の動的な性質により、いくつかの場合により便利なランタイム アナライザーには、次のものがあります。
ドキュメント ライブラリの phpdocとDoxygenは、一種のコード分析を実行します。たとえば、Doxygen は、Graphvizを使用して素敵な継承グラフをレンダリングするように構成できます。
もう 1 つのオプションはxhprof です。これは Xdebug に似ていますが、軽量であるため、運用サーバーに適しています。このツールには、PHP ベースのインターフェースが含まれています。
ユニタライズされた変数はチェックします。ただし、リンク1と2はすでにこれをうまく行っているようです。
私はこれらのいずれかを集中的に使用したとは言えませんが:)
PHP Mess Detectorは、素晴らしく高速です。
私はphp -l
他のいくつかのツールを使用してみました。
ただし、私の経験では (もちろん、マイレージは異なる場合があります) 、 pfff toolset の scheck が最適です。Quora で pfff について聞いたことがあります (良い PHP lint / 静的解析ツールはありますか? )。
コンパイルしてインストールできます。素敵なパッケージはありません (私のLinux Mint Debian システムでは、最初にlibpcre3-dev、ocaml、libcairo-dev、libgtk-3-dev、およびlibgimp2.0-dev の依存関係をインストールする必要がありました) が、インストールする価値はあるはずです。
結果は次のように報告されます
$ ~/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 のサンプル検出レポートは、Web サイトにあります。(私は著者です。)
NetBeans IDE は、構文エラー、使用されていない変数などをチェックします。自動化されていませんが、小規模または中規模のプロジェクトでは問題なく機能します。
nWire for PHPという新しいツールがあります。これは、 Eclipse PDTおよびZend Studio 7.x用のコード探索プラグインです。PHP のリアルタイム コード分析を有効にし、次のツールを提供します。
RIPSがあります。これは、PHP スクリプトの脆弱性に対する静的ソース コード アナライザーです。RIPS のソース コードは、SourceForgeで入手できます。
RIPS サイトから:
RIPS は、静的コード分析を使用して PHP アプリケーションの脆弱性を検出する、PHP で作成されたツールです。すべてのソース コード ファイルをトークン化して解析することにより、RIPS は PHP ソース コードをプログラム モデルに変換し、プログラム フロー中にユーザー入力 (悪意のあるユーザーの影響を受ける) によって汚染される可能性のある機密性の高いシンク (潜在的に脆弱な関数) を検出できます。見つかった脆弱性の構造化された出力に加えて、RIPS はさらに手動で分析するための統合コード監査フレームワークも提供します。
PHP Analyzerという静的コード分析用のツールがあります。PHP アナライザーは非推奨のプロジェクトになりましたが、レガシー ブランチから引き続きアクセスできます。
多くのタイプの静的分析の中で、基本的な自動修正機能も提供します。ドキュメントを参照してください。