2017-03-01 16 views
0

私はソナーレベを使ってラインカバレッジ分析を行っていますが、報告結果は間違っています。 以下なら方法については、例えば:SonarQubeの間違ったレポート結果

if(a != null){ 

system.out.print("Hello"); 

} 

実行されないことを意味単体テストによって覆われていないなどの条件が報告されている場合。 しかし、内部の論理的なsystem.out.print( "Hello")はユニットテストの対象として報告されます。それは非論理的ですよね?

答えて

1

これはSonarQubeではなく、カバレッジエンジンの問題です。 SonarQubeは、カバレッジエンジンが報告した内容だけを中継します。

しかし、スクリーンショットがなくても確実に知るのは難しいですが、SonarQubeインターフェイスのマーカーを誤解している可能性があります。 ifの横に斜めに縞模様のマーカーが表示されている場合、SonarQubeは、その行が部分的にであることを伝えています。つまり、コードには複数のパスがあり、テストの中ではいくつかのパスしか取得されません。具体的には、条件が真であるパスをテストしているようです。条件が偽であるパスをテストしていないと思います。

+0

実際の状況は、If条件が部分的にカバーされているのではなくカバーされていないとマークされていることです。真のケースがテストされているということは確かに論理的です。そのため、if条件内のロジックには、論理的で許容可能なマークが付けられています。意外にも、実際の状況はあなたの推測と一致しません。同様に、先に述べたことが、カバレッジ・エンジンがSonarQubeの誤った報告につながる間違ったメトリックを報告している原因かもしれません。だから、私はカバレッジ・エンジンに焦点を当てようとします、あなたの親切な提案のおかげで、それは非常に感謝しています。 –