はじめに
前回の記事(PHPUnit - テストカバレッジをHTMLレポートで出力 / phpdbg + php-code-coverage + PHPUnit)では、UnitTest 実行時の網羅率をビジュアル化する為に、 phpdbg と php-code-coverage を使用して、テストカバレッジを HTMLレポートする方法についてまとめました。
今回は、静的解析に位置づけられるもののうち、コード・メトリクスに関連した情報をイイ感じで出力するツールに関する導入手順を記載します。
想定環境
本記事は以下の環境にて動作確認を行っています。
- OS : Windows / macOS
- 仮想環境 : VirtualBox + Vagrant
- コンテナ : Docker Container by docker-compose [^1]
- PHP
- PHP 7.2.11
- composer 1.7.2
- PhpMetrics 2.4.1
構築手順
概要
今回構築する環境は、 CentOS/7 の上に、 Docker をインストールし、その上で PHPUnit + phpdbg + php-code-coverage を使用してレポートを出力します。
手順
これから行う手順は、以下の記事で紹介した手順で構築した ローカル開発環境 をベースとして操作を行ってゆきます。
Windows / Mac を問わず簡単に構築が可能ですので、動作の再現を行いたい場合はそちらの記事を参照してください。
なお、上記の手順の中で PHP や composer はインストール済みの為、Composerインストールが必要な PhpMetrics のインストールから操作を進めます。
1. PhpMetrics のインストール
composer コマンドを実行して、 PhpMetrics をインストールします。
$ docker-composer exec php composer require --dev phpmetrics/phpmetrics
2. HTMLレポートを出力
インストールした PhpMetrics を使用して、メトリクスに関連する情報を HTML 出力します。
$ docker-composer exec php php ./vendor/bin/phpmetrics --report-html=myreport .
3. レポートの確認
生成した HTMLレポート は以下の場所に出力されていますので、Webブラウザで確認しましょう。
$ ./myreport/index.php
今回は Laravel に AdminLTE をミニマム構成で組み込んだプロジェクトを解析してみました。
結果は以下のようになりました。
composer コマンド一発でインストールすることが出来、HTMLレポートの生成もすぐに行うことができるので、手間なくすぐに導入することが可能です。
終わりに
コーディングしたプロジェクト内に含まれるソースコードについては、行数やコードの重複、クラス数など、UnitTestの実行以前に解析することが出来る情報が多く存在します。
「静的解析」や「机上デバッグ」と呼ばれるように、ソースコードを定量的、定性的に見ることによってバグの検出を行うことが出来るので、 PhpMetrics のようなツールは非常に有用だと思います。
これまでこういったツールは、 SonarQube くらいしか使ったことがなかったのですが、 今回の調査で PHP に特化したツールを発見することが出来ました。
このツールの利点は、 composer でお手軽にインストールすることができ、 PHP が実行出来る環境であれば、 Webサーバやその他のツールをインストールすることなく利用出来ることだと思います。
プロジェクトで適切に使用することで、ソースコードのセルフ・クロスレビュ時や、テスト計画の立案時などにデータを活用出来るのではないでしょうか。
参考
様々な静的解析ツール
- exakat/php-static-analysis-tools - GitHub
- PHP Code Quality Tools to Check and Improve your Code - Web technologies