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

必要な時にのみxdebugをオン

More than 1 year has passed since last update.

xdebug使用したPHPの実行はとても遅く、本来xdebugが必要なのはテストカバレッジやプロファイル取得、トレースなどを行うデバック実行の時のみです。
必要な時にのみxdebugをオンにして、その他のカバレッジなしのphpunit実行やcomposer, php-cs-fixer, phpstanなどのツールコマンドはxdedug無しで実行する方法を紹介します。

xdebugをオフ

普段はオフにします。php --iniでxdebug.iniの場所を調べコメントアウト。

xdebug.ini
;zend_extension = "/path/to/my/xdebug.so"

テストカバレッジ

テストカバレッジを取るときのcomposerコマンドをcomposer.jsonに追記

{
    "scripts" :{
        "coverage": ["php -dzend_extension=xdebug.so ./vendor/bin/phpunit --coverage-text --coverage-html=build/coverage"],
    }
}

phpunit.xml.distの<logging>の項目はphpunitのみ実行した時にxdebugが読み込まれてないという警告が出るので(実害はないですが)削除します。

実行はcomposerコマンドで行います。

composer coverage

PhpStorm

PhpStormでデバッガーを使ってブレイクやステップトレースにするためにxdebug.soを読み込む設定にします。

Language & Frameworks > ... > Advanced > Configuration optionsでdirectiveにzend_extension、値をxdebug.soと設定するとxdebug付きでPHP実行されるようになります。
424e3d89-f2a0-1db9-0de1-e4dd8f993285.png

Travis CI

特定のPHPバージョンのテストだけカバレッジを取得するにはbefore_scriptscriptを以下のようにします。

before_script:
  - if [[ $TRAVIS_PHP_VERSION = '7.1' ]]; then COVERAGE="--coverage-clover=coverage.clover"; else phpenv config-rm xdebug.ini; fi
script:
  - ./vendor/bin/phpunit $COVERAGE;

scrutinizer-ci.comでカバレッジを取得してる場合にはafter_scriptを以下のように変更します。

after_script:
  - if [[ $TRAVIS_PHP_VERSION = '7.1' ]]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi

パフォーマンスが大幅に向上します。

参考URL BEAR.Resource/.travis.yml

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
ユーザーは見つかりませんでした