kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

phpmdでFileCacheDriverのエラー

自分用メモ。
vagrant環境で、phpmdを走らせててエラーが発生しました。
原因は、vagrantのhdの容量不足でした。

エラー内容

下記のようなエラーが大量に流れてて、
原因が分からずしばらく悩みました。
細かいエラーメッセージはちょっとずつ違いますが、
共通しているのはFileCacheDriverでエラーを起こしていることです

PHP Warning:  fopen(/home/vagrant/.pdepend/4q/4q542z177ea.5.6.cache): failed to open stream: No such file or directory in /path/to/vendor/pdepend/pdepend/src/main/php/PDepend/Util/Cache/Driver/FileCacheDriver.php on line 163
PHP Stack trace:
PHP   1. {main}() /path/to/vendor/phpmd/phpmd/src/bin/phpmd:0
PHP   2. PHPMD\TextUI\Command::main() /path/to/vendor/phpmd/phpmd/src/bin/phpmd:122
PHP   3. PHPMD\TextUI\Command->run() /path/to/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php:173
PHP   4. PHPMD\PHPMD->processFiles() /path/to/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php:133
PHP   5. PHPMD\Parser->parse() /path/to/vendor/phpmd/phpmd/src/main/php/PHPMD/PHPMD.php:222
PHP   6. PDepend\Engine->analyze() /path/to/vendor/phpmd/phpmd/src/main/php/PHPMD/Parser.php:123
PHP   7. PDepend\Engine->performParseProcess() /path/to/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php:323
PHP   8. PDepend\Source\Language\PHP\AbstractPHPParser->parse() /path/to/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php:575
PHP   9. PDepend\Util\Cache\Driver\FileCacheDriver->store() /path/to/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php:403
PHP  10. PDepend\Util\Cache\Driver\FileCacheDriver->write() /path/to/vendor/pdepend/pdepend/src/main/php/PDepend/Util/Cache/Driver/FileCacheDriver.php:151
PHP  11. fopen() /path/to/vendor/pdepend/pdepend/src/main/php/PDepend/Util/Cache/Driver/FileCacheDriver.php:163

容量を喰う理由

phpmdを走らせると、依存ライブラリのpdepend がhome配下に、.pdepend というディレクトリを作り、
そこにファイルのキャッシュを溜め込みます。
このディレクトリの容量が増え続けるので、容量が足りないと正常に実行できません。

検証ファイル数が膨大というわけではないですが、 最終的に500M程度の容量が必要でした。