PHPで静的コード分析を実行するにはどうすればよいですか?[閉まっている]
-
22-08-2019 - |
質問
PHPソースファイルの静的解析ツールはありますか?バイナリ自体は構文エラーをチェックできますが、次のようなそれ以上のことを行うものを探しています。
- 未使用の変数の代入
- 最初に初期化されずに割り当てられる配列
- コード スタイルの警告も表示される可能性があります
- ...
解決
コマンドラインから lint モードで php を実行し、実行せずに構文を検証します。
php -l FILENAME
より高レベルの静的アナライザーには次のものがあります。
下位レベルのアナライザーには次のものが含まれます。
- PHP_パーサー
- token_get_all (原始関数)
PHP の動的な性質により、一部の用途でより役立つランタイム アナライザーには次のものがあります。
- Xデバッグ もっている コードカバレッジ そして 関数トレース.
- 私の PHPトレーサーツール Xdebug の関数トレースに基づいて、静的/動的を組み合わせたアプローチを使用します。
ドキュメントライブラリ phpdoc そして 酸素 一種のコード分析を実行します。たとえば、Doxygen は、次のようにして優れた継承グラフをレンダリングするように構成できます。 グラフビズ.
別のオプションは xhprof, これは xdebug に似ていますが、より軽量であるため、運用サーバーに適しています。このツールには、PHP ベースのインターフェイスが含まれています。
他のヒント
初期化されない変数がして確認してください。リンク1と2はすでにしかし、これはうまくやっているようです。
私も、私は集中的にこれらのいずれかを使用していると言うことはできません。)
を完全にするために - 。また、チェック phpCallGraphする
PHP混乱検出器のは素晴らしいと高速です。
私は$ PHPの-lやカップルの他のツールを使用して試してみました。しかし、私の経験で最高の1は(YMMV、もちろん)pfffツールセットでののscheckです。私はQuoraの上pfffについて聞いた( http://www.quora.com / IS-が-良い-PHP-糸くずの静的解析ツールの)
あなたはそれをコンパイルしてインストールすることができます。何の素敵なパッケージは、(私のミントDebianの上で、私は最初のlibpcre3-devを、OCamlで、libcairo-devの、libgtk-3-devのとlibgimp2.0-devの依存関係をインストールする必要がありました)が、それはintsall価値があるはずですありません。
の結果が
のように報告されています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.
セマンティックデザインCloneDR で、見つけた 『クローン検出』ツールを参照してくださいコピー/ペースト/編集したコード。これは空白、コメント、さらには変数renamingsにもかかわらず、正確なとニアミスコードフラグメントがあります。 PHP用のサンプル検出レポートはwesiteで見つけることができます。 (私は著者です)。
構文エラー、unusued変数と、そのようなのためのNetBeans IDEチェックを。これは、自動化されたが、中小のプロジェクトのために正常に動作していない。
という新しいツールがあります PHP 用の nWire. 。これは、Eclipse PDT および Zend Studio 7.x 用のコード探索プラグインです。PHP のリアルタイム コード分析を可能にし、次のツールを提供します。
- コードの視覚化 - コンポーネントと関連付けのインタラクティブなグラフィカル表現。
- コード ナビゲーション - 独自のナビゲーション ビューにはすべての関連付けが表示され、コードの作成または読み取り中に機能します。
- クイック検索 - メソッド、フィールド、ファイルなどを入力しながら検索します。
PHP PMD(プロジェクトの混乱検出器)とのPHPUnitのかつての一部としてPHP CPD(コピーペースト検出器)
はRIPSがあります。 SourceForgeののに利用できるRIPSのソースます。
RIPSサイトから:
RIPSは、PHPの脆弱性を見つけるためのツールで、PHPで書かれ 静的コード分析を使用しているアプリケーション。トークン化とすべて解析することにより、 ソースコードはRIPSはにPHPのソースコードを変換することができますファイル プログラムモデルと敏感なシンクを検出するために(潜在的に脆弱 (悪意の影響を受けユーザ入力によって汚さできる機能) プログラムフロー中にユーザ)。見つかったの構造化された出力のほかに 脆弱性は、統合されたコードの監査フレームワークを提供していますまた、RIPS さらに手動分析のために。
という静的コード分析のための全く新しいツールがあります。 PHPアナライザー.
多くのタイプの静的解析の中で、基本的な自動修正機能も提供します。 ドキュメンテーション.
アップデート:PHP-Analyzer は現在非推奨のプロジェクトですが、レガシー ブランチでは引き続きアクセスできます
あなたは、Facebookのヒップホップでコンパイルしてみたいことがあります。
これは、プロジェクト全体の静的解析を行い、そしてあなたが探しているものかもしれません。