Jacocoエージェントで単体テストを実行すると、私のローカルJacocoレポートとSonarQubeのカバレッジには若干の相違があります。これはネストされたクラスを含むファイルにのみ影響を与えているようです。ローカルで生成されたレポートには、外部クラスおよびすべての内部クラスのカバレッジ情報が含まれていますが、SonarQubeのカバレッジデータには内部クラスのみが含まれています。SonarQubeのカバレッジに、Jacocoレポートの対象行がありません
たとえば、Foo.javaには外部クラスFooと内部クラスBarおよびBazが含まれています。
私のローカルレポートでは、Fooクラスで26%、Foo.Barクラスで46%、Foo.Bazクラスで0%の命令範囲を示しています。 Foo.javaの全体の命令カバレッジは30%です。 SonarQubeカバレッジ・ページは、Foo.javaのラインカバレッジを15%にします。私はラインカバレッジがインストラクションのカバレッジと等しくないことを理解していますが、私はその数値が近いと予想します。さらに調べると、SonarQubeのFoo.javaのファイルベースのカバレッジビューでは、外部クラスFooのすべての行が「単体テストで覆われていません」とマークされており、マークされている唯一の行はFooのものです私が期待したバー。この差は、JacocoのレポートとSonarQubeとの間の約15%のギャップを構成する。ローカルのスキャナログまたはサーバー分析ログには例外がありません。
私はJaCoCo 0.7.7.201606060606、Javaバージョン1.8.0_73、およびsonar-scanner 2.8をローカルで実行しています。サーバーはJavaバージョン1.8.0_66-b17、SonarQubeバージョン5.6.3、SonarQube Javaプラグインバージョン4.2.1.6971を実行しています。
私はどんな提案もありがとうと思います。
ポインタとフィードバックに感謝します!私はラインと指示のカバレッジが異なると予想されることを理解しています。より大きな懸念は、SonarQubeとJaCoCoのFoo.javaのカバーラインの違いでした。私の答えで説明するように、彼らは分析を実行するために異なるクラスファイルを使用していたことが判明しました。お邪魔して申し訳ありません! –