私は本当にいらいらし始めているエラーに直面しています。
これが私が持っているものです: 1) JaCoCo をカバレッジ ツールとして使用する Sonar 3.5。2) モックを使用してテストを実行するための Jmockit lib。3) Maven で自動化されたビルド プロセス。
したがって、最初に実行すると問題ありませんmvn clean install
。次に実行するmvn sonar:sonar
と、ここで何が起こっていますか:
- Jmockit は、必要なクラスをインストルメント化するようです。
- JaCoCo は、Jmockit によって既に計測されているクラスを計測することはできず、既に計測されているクラスを計測することは不可能であると言って、膨大な量の例外を吐き出します。ただし、ソナーはそのようなシナリオに対して有効な出力を持っているようです。
最初の質問は、そのような例外をどうにかして抑制することはできますか? CI システムのログ ファイルのサイズが50Mb
(!) に達しているため、これは非常に重要です。これは受け入れられません。CI マシンでは、このようなログによって多くの空き領域が消費されます。
私が持っている例外は次のとおりです。
java.lang.instrument.IllegalClassFormatException: Error while instrumenting class app/MyClass.
Caused by: java.lang.IllegalStateException: Class app/MyClass is already instrumented.
そのような例外の抑制が不可能であると仮定して、私はそれを少し調査し、JaCoCo (Sonar が使用するツールと、既にインストルメント化されたクラスをインスツルメントできないツール) がoffline instrumentation
(AFAIK Sonar どちらもサポートしていない) ようなモードを持っていることを発見しましたこれoffline instrumentation
またはそのような警告を抑制することができます)。このことは、まさにそのような場合に使用するように設計されています。そこで、Maven で JaCoCo をプラグインとしてセットアップしようとしましたが、JaCoCo が実行ファイルを見つけられないため、これを行うことができませんでした。実行mvn clean install
すると、次のエラーがポップアップ表示されます。
[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:report (report) @ webservice-mws --- [INFO] 実行データファイルがないため、JaCoCo の実行をスキップしています
私が間違っていなければ、この実行ファイルは JaCoCo プラグインの RESULT です。私は完全にイライラしており、これをどうしたらよいかわかりません。
誰かがそれで私を助けることができれば、それは大歓迎です!
前もって感謝します!
JaCoCo プラグインの pom.xml 設定:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.2.201302030002</version>
<executions>
<execution>
<phase>process-test-resources</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>