2017-03-01 120 views
0

我使用sonarqube做線路覆蓋分析,但報告結果是錯誤的。 例如,對於下面的方法,如果:SonarQube錯誤的報告結果

if(a != null){ 

system.out.print("Hello"); 

} 

如果爲NOT由單元測試,這意味着不執行覆蓋報告條件。 但是,裏面的邏輯system.out.print(「Hello」)被報告爲單元測試覆蓋。那是不合邏輯的,對嗎?

回答

1

這不是SonarQube的問題,而是您的覆蓋引擎。 SonarQube只會傳送您的覆蓋率引擎報告的內容。這就是說,你可能會誤解SonarQube界面中的標記,儘管沒有截圖很難確定。如果您在if旁看到對角線條紋標記,則SonarQube會告訴您,該線條是部分所涵蓋的。也就是說,通過代碼有多條路徑,只有其中的一些被用於測試。具體來說,這聽起來像是在測試條件爲真的路徑。我猜想你沒有測試條件爲false的路徑。

+0

真實情況是If條件被標記爲從未覆蓋而不是部分覆蓋。你所說的確實是合乎邏輯的,因爲真實情況已經過測試,所以if條件中的邏輯被標記爲被覆蓋,這是合乎邏輯和可接受的。出乎意料的是,真實情況並不符合你的猜測。同樣,你前面提到的可能是原因,覆蓋引擎正在報告導致SonarQube報告錯誤的錯誤指標。所以,我會盡力關注覆蓋引擎,感謝您的好意,非常感謝。 –