2016-09-22 6 views
1

バイトコードに関するJaCoCoの結果を確認する方法はないので、実際のバイトコード命令がまだカバーされていないものがわかるようにしてください。デフォルトのレポートは、9つのブランチのうちの1つが欠けているとしか書いていないので、やや役に立たない。JaCoCoの結果bytecode

+0

しかし、jacocoは詳細なHTMLレポートを提供します。あなたが言及しているのは、クラス名をクリックしたサマリーレポートです。実際のソースHTMLには、まだカバーされていないコード行が強調表示されます。 –

+0

@HimanshuBhardwajいいえ、私はしません。私は詳細レポートについて話します。しかし、もしあなたが3つの条件をチェックし、詳細レポートが「1 of 6」ブランチを見逃しているとすれば、それは決して助けにならない。注釈付きのバイトコードが見えるでしょう。 – Vampire

+0

実際に望むのは、1つ以上の条件文を含む行の個々の実行可能セグメントのカバレッジを表示することです。 JaCoCoのようなツールはこの機能を持たず、おそらく(計画されたロードマップに基づいて)決して使用されません。しかし、JMockitカバレッジツールは、個々のセグメントカバレッジを表示します(ただし、すべてのケースで完璧ではありません)。 –

答えて

0

JaCoCoは、カバレッジをソースラインにマッピングします。あなたのコードが非常に複雑で、行ごとにたくさんのブランチがある場合は(1ライナーの場合は '?'演算子の過度使用)、それでは不十分かもしれません。

実際にバイトコードカバレッジが必要な場合は、何らかの形でソースを前処理したいことがあります。私の頭に浮かんだ最初のアイデアは、 "javapでJavaを分解してから再アセンブル"でしたが、few years ago it wasn't possibleと "Javaアセンブラ"のための迅速なグーグルでは今や貴重な結果は得られませんでした。

"行"がテストで覆われていない場合は、そのコードを書き直す必要がありますか?

+0

私は 'while(conditionA && conditionB && conditionC)'があまりにも複雑なコードだとは思わない。しかし、「6つの支店のうち1つが欠落している」という情報は単に不十分であるだけです。 – Vampire

+0

さて、あなたはそのような状況でデッドコードがあるかもしれませんか?以前より強いチェック?例:while(it.hasNext()&& it!= null){...} FindbugsとSonarはそれらを見つけることができます。 – okutane

+0

いいえ、私はしていませんでした。私はすでに不足しているコードパスを発見し、カバレッジを100%ブランチカバレッジに増やすことができました。しかし、ロギングを導入して正しく解釈するのは面倒です。私がバイトコードで見ることができればはるかに簡単です。カバレッジのラインへのマッピングは、 'exec'ファイルの解析中ではなく、記録時にすでに行われていますか?なぜなら、情報が 'exec'ファイルにあると、あるツールはそれをレポートに変換できるはずだからです。 – Vampire