xdebug のコード カバレッジ ツールを使用すると、実際に実行されているコード行をテストできます。すべての関数/メソッドにトレース ステートメントを入れる必要はありません。
コード カバレッジ統計の作成を制御する php.ini 設定はありません。統計の収集は、実行時に PHP 関数によってオンとオフが切り替えられるため、カバレッジ統計を作成するコード部分をきめ細かく制御できます。
コード カバレッジ統計の収集を開始するには、 を使用しますxdebug_start_code_coverage()
。
統計の収集を停止するには、 を使用しますxdebug_stop_code_coverage()
。
xdebug
は、スクリプトの実行中に収集された統計をメモリに保持するため、スクリプト内のコード カバレッジを何度でもオンまたはオフにすることができます。収集した統計を配列として取得するには、 を使用しますxdebug_get_code_coverage()
。
実装方法には多くの自由がありますが、1 つの大きなスクリプトがあるように思えます。その場合は、最初から開始し、すべての終了ポイントを停止し、実際に終了する前にカバレッジを出力します。
Zend Developer Zone には、そのようなことを行うための優れた入門書があり、第 1 部: 紹介 xdebugから始まります。
静的分析を行う場合は、OWASPのメンバーがツールの優れたリストとそれぞれの長所と短所をソース コード分析ツールのページに掲載しており、オープン ソースまたはフリー ツールと商用ツールの両方について詳しく説明しています。
PHP Mess Detector (PHPMD)などを確認することをお勧めします。これは PDepend によく似ており、バグ、未使用のコード、過度に複雑な機能のレポートを提供します。リファクタリングを使用できるスポットを特定するのに非常に役立ちます。
PHPMD は、次のようにコマンド ラインから呼び出すことができます。
phpmd {directory} {report format} {rules}
$ phpmd . text codesize,unusedcode
/src/xxxxxx/api/src/base/Model.php:75 The method __toArray() has a Cyclomatic Complexity of 12. The configured cyclomatic complexity threshold is 10.
/src/xxxxxx/api/src/controller/Users.php:235 Avoid unused parameters such as '$request'.
/src/xxxxxx/api/src/controller/Users.php:246 Avoid unused local variables such as '$x'.
/src/xxxxxx/api/src/controller/Users.php:246 Avoid unused local variables such as '$undeclared'.
/src/xxxxxx/api/src/base/Controller.php - Unexpected token: [, line: 88, col: 56, file: /src/xxxxxx/api/src/base/Controller.php.
現時点では、おそらくPHP CodeSnifferが最適なツールです。設定は驚くほど簡単で、デフォルトの標準は簡単に拡張したり、独自のものに置き換えたりできます。このため、数人以上で構成されるチームにとっては簡単です。また、PSR-1 および PSR-2 標準も同梱されているため、オープンソースの PSR 互換プロジェクトを維持するには、プロジェクトに対してインストールして実行するだけです (もちろん、そのアドバイスに従うこともできます)。また、JavaScript と CSS をトークン化する機能もあります。
PHPCS は、次の方法でコマンド ラインから簡単に起動できます。
phpcs --standard={comma-separated rulesets} {directory}
PHPCS の出力を使用すると、どのプロジェクトでもスタイル ガイドラインを維持するのは簡単です。同じプロジェクトからの出力例:
$ phpcs --standard=PSR1,PSR2 .
FILE: /src/xxxx/api/src/exception/Xxx.php
--------------------------------------------------------------------------------
FOUND 1 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
15 | ERROR | The closing brace for the class must go on the next line after | | the body
--------------------------------------------------------------------------------
Time: 0 seconds, Memory: 5.25Mb
Google では、ここで説明する余地があるよりも多くのオプションについて、さらに詳しい情報を提供できます。うまくいけば、これでプロジェクトの正しい道に進むことができます。