2016-11-04 121 views
1

我在Sonar沒有報告在vNext構建期間正在分析的應用程序的代碼覆蓋率問題。 TFS和Sonar都在本地託管,我正在使用Sonar 6.0。我在這裏環顧四周,沒有看到任何有完全相同問題的帖子,所以我想我會張貼看看有沒有人有任何想法。Sonar vNext:代碼覆蓋率未報告,但已發現覆蓋文件

在構建過程中,會運行一個單元測試套件,它會生成一個trx文件,一個coverage文件和一個coveragexml文件。在聲納性能領域,我把它指向那些文件用於分析

/d:sonar.cs.vscoveragexml.reportsPaths="$(Common.TestResultsDirectory)\*.coveragexml" /d:sonar.cs.vstest.reportsPaths="$(Common.TestResultsDirectory)\*.trx" 

當生成日誌來看,它在完成分析步驟拿起這兩個文件:

2016-10-28T14:31:01.5800405Z 10:31:01.463 Attempting to locate a test results (.trx) file... 

2016-10-28T14:31:01.5800405Z 10:31:01.463 Located a test results file: E:\agent\_work\24\TestResults\tfsbuildagent_BUILD1 2016-10-28 10_30_52.trx 

2016-10-28T14:31:15.7254549Z INFO: Parsing the Visual Studio coverage XML report E:\agent\_work\24\TestResults\tfsbuildagent_BUILD1 2016-10-28 10_30_52\In\BUILD1\tfsbuildagent_BUILD1 2016-10-28 10_30_38.coveragexml 

2016-10-28T14:31:15.9254749Z INFO: Adding this code coverage report to the cache for later reuse: E:\agent\_work\24\TestResults\tfsbuildagent_BUILD1 2016-10-28 10_30_52\In\BUILD1\tfsbuildagent_BUILD1 2016-10-28 10_30_38.coveragexml 

但是,當您在Sonar中查看應用程序時,沒有顯示代碼覆蓋範圍。我可以打開coveragexml文件,看起來確實有覆蓋數據。我還讓應用工程師在運行測試套件後向我展示了視覺工作室的覆蓋率結果,並且確實報道了覆蓋率。我只是無法弄清楚爲什麼這些數據沒有被翻譯成Sonar。

這也提出了一個問題:Sonar如何使用測試結果文件和覆蓋率XML文件中的數據?它是直接從這些文件中獲取數據並僅將這些數字作爲其結果的一部分,還是將這些數據和數據的組合用於分析代碼以計算最終統計數據?我從來沒有能夠在網上找到明確的答案,甚至沒有在Sonar的網站上找到答案。我覺得對這個過程有更好的理解也有助於解決這個問題。

無論如何,如果任何人都可以提供任何洞察,可能爲什麼Sonar沒有拿起覆蓋率文件中的數據,我真的很感激。如果您需要任何其他信息,請告訴我。

+0

我也遇到過這個問題。我目前正在尋找解決它自己,所以如果我知道我會讓你知道。 –

+0

你有沒有設法解決這個問題?我仍然在自己掙扎。我確實發現了一個關於Sonars Jira的錯誤報告,提到了覆蓋範圍的問題,但是提到的解決方案對我來說沒有什麼不同。我想我會分享給你無論如何,以防萬一它可以幫助你:https://jira.sonarsource.com/browse/SONARMSBRU-262 –

+1

感謝您的鏈接。我會給它一個鏡頭。自從我上次發佈以來,我甚至沒有機會看這個。如果我弄明白了,我會用解決方案更新帖子。 –

回答

1

我能夠解決未報告的覆蓋問題,但它可能是特定於我的情況,我仍然不確定爲什麼這可以解決問題。

作爲構建過程的一部分,我必須爲這些特定的應用程序構建2個解決方案。其中一個解決方案包含一個測試項目,但另一個不包含。看起來這兩個項目正在建設中,只有一個項目正在進行測試。

我檢查,以確保一個構建的輸出不覆蓋另一個以及它不是。

解決的辦法是創建一個單獨的vNext構建,其具體目的是向Sonar報告,並只構建主要解決方案並運行其測試套件。他們的測試套件只能達到與主要解決方案相關的代碼,所以在這種情況下,這對開發人員來說工作得很好。