2017-09-22 346 views
1

我能夠產生與巴澤爾命令coverage.dat文件:如何合併來自多個.dat文件覆蓋巴澤勒

bazel coverage //tests/... --instrumented_filter=/src[/:] 

這將生成類的一個報告,因爲coverage.dat文件生成分別爲不同目錄中的每個檢測文件。我如何獲得合併coverage.dat?

回答

2

coverage.dat報告應包含有關受--instrumentation_filter影響的所有類別的覆蓋信息。該文件應位於bazel-testlogs/path/to/your/package/TestTarget之下。

你不應該寫任何額外的東西。 Bazel確實會生成多個臨時文件.dat,但它會將所有文件合併到最終的coverage.dat文件中,該文件在完成運行時由bazel打印。該文件是我上面描述的位置。請確保檢查該文件,並檢查您是否正確使用--instrumentation_filter(*)。

(*)從command line manual

啓用覆蓋,僅使用指定 基於regex-過濾器中包含的名稱規則將進行檢測。以' - '作爲前綴 的規則被排除在外。請注意,除非已啓用 - instrument_test_targets,否則只有非測試規則是 。

+0

好的,我想清楚爲什麼我的coverage.dat文件沒有正確的信息 - 正如你所說的,coverage.dat文件是在TestTarget目錄下生成的,我正在做的是單獨運行每個測試類java_test()規則,而不是使用Suit將所有測試類合併爲一個。一旦合併成一個測試類並從單個java_test()規則運行,coverage.dat就會生成,幷包含所有文件的所有覆蓋範圍。 – Zeitgeist

+0

Bazel是否具有爲覆蓋範圍生成實際index.html的手段?現在我正在使用genhtml coverage.dat命令從Bazel生成的coverage.dat生成html覆蓋率報告。 – Zeitgeist

+1

不,Bazel不支持生成index.html。大多數人也使用genz和Bazel。 –