我使用Sonar和OpenCover來收集我的C#項目的代碼覆蓋信息,這些信息使用Jenkins作爲CI系統。 Sobar服務器是v4.3,跑步者在測試機器上版本爲2.3。Sonar runner在命令行中對.NET項目很好,但在Jenkins中報告缺少PDB
棘手的部分是:當我從測試機(Server 2008R2)的命令行運行聲納亞軍時,它與OpenCover完美配合,並在測試完成後收集覆蓋率數據。例如:
14:31:36.479 INFO - Committing...
14:31:36.708 INFO - Visited Classes 53 of 114 (46.49)
14:31:36.710 INFO - Visited Methods 193 of 427 (45.2)
14:31:36.710 INFO - Visited Points 1804 of 4024 (44.83)
14:31:36.711 INFO - Visited Branches 862 of 2012 (42.84)
14:31:36.712 INFO -
,但如果我將它設置爲從詹金斯的工作運行完全相同的命令,它仍然執行測試正常,但無法收集覆蓋信息和抱怨失蹤PDBS或錯誤探查配置:
15:33:00.595 INFO - Committing...
15:33:00.879 INFO - No results, this could be for a number of reasons. The most common reasons are:
15:33:00.879 INFO - 1) missing PDBs for the assemblies that match the filter please review the
15:33:00.879 INFO - output file and refer to the Usage guide (Usage.rtf) about filters.
15:33:00.879 INFO - 2) the profiler may not be registered correctly, please refer to the Usage
15:33:00.879 INFO - guide and the -register switch.
然後Sonar儀表板上的代碼覆蓋率報告爲0%。
你們中的一些人可能已經經歷過這個---它可能與配置問題有關嗎?我檢查了SonarQube的網站,並沒有這樣的信息;在網上衝浪,而且還很少有人談論這件事,並認爲這可能是Sonar中的一個錯誤。我最初的想法是,當我運行命令例如「SET JAVA_HOME = C:\ Program Files \ Java \ jre7 \ & C:\ sonar_runner \ sonar-runner-2.3 \ bin \ sonar-runner.bat」時,它在我的賬戶下;並通過Jenkins運行相同的命令,並且它在本地系統帳戶下,因爲它由Jenkins Windows服務執行。但是從Sonar-runner的輸出中檢查環境設置並且看起來都很接近。
關於覆蓋率數據缺失報告原因的任何線索?非常感謝:-)
該問題部分地解決了通過修改sonar-project.properties文件:使用「sonar.gallio.runner =本地」,而不是 「sonar.gallio.runner = IsolatedProcess」,所以提交將選擇正確的信息。但它帶來了另一個問題---沒有執行測試,因此覆蓋率仍然爲0%。更多的線索呢?謝謝。 – ted6914