raa0121 / GoBCDice

GoBCDice is BCDice reimplemented by Go.
BSD 3-Clause "New" or "Revised" License
9 stars 2 forks source link

go-accで正確なカバレッジを取得する #24

Closed ochaochaocha3 closed 5 years ago

ochaochaocha3 commented 5 years ago

go-accというツールを利用して正確なカバレッジを取得するようにしました。

問題

通常の go test -cover を使用したカバレッジ取得では、構文解析時に使われる構造体に関連したコードが実行されていないことになっているなど、結果が正しくありませんでした:

https://codecov.io/gh/raa0121/GoBCDice/tree/243ba3a09342ca26fc6ed7025fdb4710d9ca02de/pkg/core/ast

全体のカバレッジは59.76%となっていました:

https://codecov.io/gh/raa0121/GoBCDice/tree/243ba3a09342ca26fc6ed7025fdb4710d9ca02de

原因

How to get accurate code coverage in Golang (Go)」という記事によると、原因は go test -cover がテスト中のパッケージのみを対象としてカバレッジを記録することだそうです。

対策

AppVeyorでのテスト時にgo-accというツールを使用するようにしました。このツールは、カバレッジ計算の対象をテスト中のパッケージだけでなく全パッケージに広げることによって、正確なカバレッジを算出します。

対策後の結果

go test -cover で記録されていなかった部分のコードもカバーされるようになり、期待どおりのカバレッジが算出されました。例えば、前述の構文解析時に使われる構造体に関連したコードのカバレッジは以下のように上昇しました。

https://codecov.io/gh/raa0121/GoBCDice/tree/234b34522a764ccc014b0e7ebf113692645b19f2/pkg/core

そのため、全体のカバレッジも74.53%と、15%ほど高くなりました。

https://codecov.io/gh/raa0121/GoBCDice/tree/234b34522a764ccc014b0e7ebf113692645b19f2

codecov[bot] commented 5 years ago

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@4704590). Click here to learn what that means. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff            @@
##             master      #24   +/-   ##
=========================================
  Coverage          ?   74.52%           
=========================================
  Files             ?       35           
  Lines             ?     1213           
  Branches          ?        0           
=========================================
  Hits              ?      904           
  Misses            ?      243           
  Partials          ?       66

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 4704590...234b345. Read the comment docs.

codecov[bot] commented 5 years ago

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@4704590). Click here to learn what that means. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff            @@
##             master      #24   +/-   ##
=========================================
  Coverage          ?   74.52%           
=========================================
  Files             ?       35           
  Lines             ?     1213           
  Branches          ?        0           
=========================================
  Hits              ?      904           
  Misses            ?      243           
  Partials          ?       66

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 4704590...234b345. Read the comment docs.