PHPUnit 3.5.10 を使用していますが、clover-coverage の xml レポートを生成しようとすると問題が発生します。
coverage-html を使用したエクスポートは正常に機能します。また、カバレッジ レポートから十分な数のファイルを除外すると、clover.xml ファイルが生成されます。しかし、テスト スイートを実行すると、「コード カバレッジ データを XML ファイルに書き込んでいます。しばらく時間がかかる場合があります。」というメッセージが表示され、実行は黙って失敗します。25 回に 1 回、「セグメンテーション違反」メッセージが表示されます。
最初に、この問題を PHP_CodeCoverage::getSummary() 関数に突き止めましたが、コード カバレッジをホワイトリストで制限すると、プログラムはこのエラーを回避しました。
次に、PHP_Token_Stream::scan() 関数でコード カバレッジ レポートがタイムアウトするようです。事実上、約 31,000 トークンの累積が処理された後、メソッドはエラー メッセージなしで単純に停止します。
配置したトレース コードの量と、メソッドが処理するトークンの数に相関関係があることに気付きました。そのため、プログラムのメモリが不足しているように見えます。
一連のコード ファイルをロードし、ファイルを次々にロードして PHP_Token_Stream をテストするテストを作成しました。これは期待どおりに機能しているようで、テスト スイートのコンテキスト内で表示されるエラーを再現しません。
クローバー カバレッジ レポートを出力する方法について何か提案はありますか?