version: '3' tasks: default: cmds: - task: fmt - task: test - task: build fmt: desc: Format go code sources: - '**/*.go' cmds: - go fmt ./... - go mod tidy gen: desc: Generate files sources: - '**/*.go' cmds: - go generate ./... vet: desc: Vet go code sources: - '**/*.go' deps: [gen] cmds: - go vet ./... critic: desc: Critique go code sources: - '**/*.go' cmds: - gocritic check ./... staticcheck: desc: Static check go code sources: - '**/*.go' cmds: - staticcheck ./... cog-complex: desc: Calculate cognitive complexity sources: - '**/*.go' cmds: - gocognit -over 5 . cyc-complex: desc: Calculate cyclomatic complexity sources: - '**/*.go' cmds: - gocyclo -over 5 . complex: desc: Calculate complexities deps: - cog-complex - cyc-complex vuln: desc: Check for vulnerabilities sources: - '**/*.go' cmds: - govulncheck ./... lint: desc: Do static analysis deps: - vet - critic - staticcheck - complex - vuln test: desc: Run unit tests deps: [fmt, vet, gen] sources: - '**/*.go' generates: - build/cover.out cmds: - go test -race -cover -coverprofile build/cover.out ./... coverage-report: desc: Build coverage report deps: [test] sources: - build/cover.out generates: - build/cover.html cmds: - go tool cover -html=build/cover.out -o build/cover.html serve-report: desc: Serve the coverage report deps: [coverage-report] cmds: - ip addr list | grep inet - php -S 0.0.0.0:3434 -t build serve-docs: desc: Serve the current docs cmds: - godoc -http=0.0.0.0:3434 -play