diff options
Diffstat (limited to 'languages/go/coverage-makefile.txt')
| -rw-r--r-- | languages/go/coverage-makefile.txt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/languages/go/coverage-makefile.txt b/languages/go/coverage-makefile.txt new file mode 100644 index 0000000..7aba9e9 --- /dev/null +++ b/languages/go/coverage-makefile.txt @@ -0,0 +1,43 @@ +# Go coverage — Makefile fragment + setup recommendation +# +# This file is owned by the project, not the rulesets bundle. The bundle never +# edits your Makefile. Copy the two targets below into your own Makefile (and +# adjust the variables at the top), then delete this file or keep it as a note. +# +# What you get: +# make coverage runs the suite with a coverage profile and prints +# `go tool cover -func`'s own per-function table +# make coverage-summary prints a file-weighted project number and every +# source file on disk absent from the profile, at 0%. +# +# Why the summary matters: it weights by file and counts a file absent from the +# profile as 0%, so an untested file stays visible instead of being averaged +# away. Note that modern `go test ./...` already lists every module package in +# the profile (at 0% when untested), so for in-module code the missing-file list +# is usually empty; it earns its keep on files outside the test compilation +# (build-tagged files, a dir not covered by ./...). The summary does not +# reimplement the per-function table — `go tool cover -func` already prints it. +# +# --------------------------------------------------------------------------- +# Prerequisite: none beyond the Go toolchain. `go test -coverprofile` and +# `go tool cover` ship with Go; the summary script is pure standard library. +# --------------------------------------------------------------------------- + +# Variables — adjust to your layout. +GO ?= go +SOURCE_DIR ?= . +COVERAGE_FILE ?= cover.out +# The summary script ships with the bundle under .claude/scripts/ (gitignored). +COVERAGE_SUMMARY ?= .claude/scripts/coverage-summary.go + +coverage: + @$(GO) test ./... -coverprofile=$(COVERAGE_FILE) + @$(GO) tool cover -func=$(COVERAGE_FILE) + @$(MAKE) coverage-summary + +coverage-summary: + @if [ ! -f $(COVERAGE_FILE) ]; then \ + echo "[!] No coverage file at $(COVERAGE_FILE). Run 'make coverage' first."; \ + exit 1; \ + fi + @$(GO) run $(COVERAGE_SUMMARY) $(COVERAGE_FILE) $(SOURCE_DIR) . |
