Help us understand the problem. What is going on with this article?

PhpMetrics - コード・メトリクスをお手軽にビジュアル化

More than 1 year has passed since last update.

はじめに

前回の記事(PHPUnit - テストカバレッジをHTMLレポートで出力 / phpdbg + php-code-coverage + PHPUnit)では、UnitTest 実行時の網羅率をビジュアル化する為に、 phpdbgphp-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 を使用してレポートを出力します。

image.png

手順

これから行う手順は、以下の記事で紹介した手順で構築した ローカル開発環境 をベースとして操作を行ってゆきます。
Windows / Mac を問わず簡単に構築が可能ですので、動作の再現を行いたい場合はそちらの記事を参照してください。

なお、上記の手順の中で PHPcomposer はインストール済みの為、Composerインストールが必要な PhpMetrics のインストールから操作を進めます。

1. PhpMetrics のインストール

composer コマンドを実行して、 PhpMetrics をインストールします。

@VirtualHost
$ docker-composer exec php composer require --dev phpmetrics/phpmetrics

2. HTMLレポートを出力

インストールした PhpMetrics を使用して、メトリクスに関連する情報を HTML 出力します。

@VirtualHost
$ docker-composer exec php php ./vendor/bin/phpmetrics --report-html=myreport .

3. レポートの確認

生成した HTMLレポート は以下の場所に出力されていますので、Webブラウザで確認しましょう。

@VirtualHost
$ ./myreport/index.php

今回は Laravel に AdminLTE をミニマム構成で組み込んだプロジェクトを解析してみました。
結果は以下のようになりました。

image.png

composer コマンド一発でインストールすることが出来、HTMLレポートの生成もすぐに行うことができるので、手間なくすぐに導入することが可能です。

終わりに

コーディングしたプロジェクト内に含まれるソースコードについては、行数やコードの重複、クラス数など、UnitTestの実行以前に解析することが出来る情報が多く存在します。
静的解析」や「机上デバッグ」と呼ばれるように、ソースコードを定量的、定性的に見ることによってバグの検出を行うことが出来るので、 PhpMetrics のようなツールは非常に有用だと思います。

これまでこういったツールは、 SonarQube くらいしか使ったことがなかったのですが、 今回の調査で PHP に特化したツールを発見することが出来ました。
このツールの利点は、 composer でお手軽にインストールすることができPHP が実行出来る環境であれば、 Webサーバやその他のツールをインストールすることなく利用出来ることだと思います。

プロジェクトで適切に使用することで、ソースコードのセルフ・クロスレビュ時や、テスト計画の立案時などにデータを活用出来るのではないでしょうか。

参考

様々な静的解析ツール

PhpMetrics

Other

anfangd
Web Application Developer
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした