2016-09-16 275 views
0

我有一個SonarQube 5.6安裝,使用C/C++插件3.12來分析我們的項目。我已經生成了覆蓋率結果(gcov),但到目前爲止僅適用於其中一個應用程序C文件。覆蓋率達到98.3%。 分析整個項目的應用程序覆蓋率結果得到「導入」,我可以在Web界面上跟蹤它們。瞭解SonarQube C代碼覆蓋率測量

在頂級代碼頁上,包含該文件的文件夾顯示98.3%,在我看來這是不正確的,因爲對於所有其他C文件,沒有覆蓋率可用。我試圖表明,在下面的一系列快照:

(1)頂級代碼樹: Top-level Code Tree

(2)下鄉了 '實施' 樹: enter image description here

(3)沿着走 '實施/ ComponentTemplate' 樹: enter image description here

(4)沿着走 '實施/ ComponentTemplate /代碼' 樹: enter image description here

EXMPL.c只有(4):113行代碼。與「實施」(4)的總代碼行數:61k相比,只有大約0.2%。 (1)中98.3%的EXMPL.c覆蓋率是錯誤的!

我的項目由幾個應用程序組成,EXMPL是我項目中所有應用程序中最小的一個。因此,我必須爲每個應用程序生成單獨的覆蓋結果,並將它們單獨導入聲納。覆蓋結果文件因此位於不同的文件夾中。

也許項目結構或覆蓋率結果的「不完全導入」是導致「錯誤」覆蓋率措施的原因,但到目前爲止,我還沒有找到任何關於聲納如何處理提供gcov覆蓋率措施的有用信息。

任何幫助或信息將appriciated。 謝謝

回答

1

你的第二個猜測是正確的:覆蓋率結果的不完整導入是什麼使數字偏離。覆蓋率報告中未包含的行不包含在覆蓋率計算中。由於目前的報道報告只包含一個覆蓋率爲93%的文件,因此所有數據都基於此。

+0

嗯,這不是很有幫助。 是不是有一種方法,告訴像'_assume默認覆蓋率爲0%的源沒有對應的.gcov文件_'? – MlaKe

+0

這是目前可用的語言的語言的基礎上。我們已經有了一個更廣泛的解決方案,但我不能給你一個ETA。 :-( –

+0

好的,作爲一種解決方法,我會在每個文件夾中放置'_empty_'.gcov文件。在執行測試和覆蓋範圍生成時,'_empty_'文件將被覆蓋,這並不好,但我會接受它。謝謝 – MlaKe