Files
mux/Makefile

129 lines
3.8 KiB
Makefile
Raw Normal View History

.PHONY: help test vet staticcheck fieldalignment check coverage bench clean install-tools fmt tidy run-example
# Default target
help:
@echo "Mux - Development Commands"
@echo ""
@echo "Usage: make [target]"
@echo ""
@echo "Targets:"
@echo " help Show this help message"
@echo " test Run tests"
@echo " test-race Run tests with race detector"
@echo " vet Run go vet"
@echo " staticcheck Run staticcheck"
@echo " fieldalignment Check and report field alignment issues"
@echo " fieldalignment-fix Automatically fix field alignment issues"
@echo " check Run all quality checks (vet, staticcheck, fieldalignment, tests)"
@echo " coverage Generate test coverage report"
@echo " coverage-html Generate and open HTML coverage report"
@echo " bench Run benchmarks"
@echo " fmt Format code with gofmt"
@echo " tidy Tidy and verify go.mod"
@echo " clean Clean build artifacts and caches"
@echo " install-tools Install required development tools"
@echo " run-example Run the example server"
@echo ""
# Install development tools
install-tools:
@echo "Installing development tools..."
go install honnef.co/go/tools/cmd/staticcheck@latest
go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@latest
@echo "Tools installed successfully!"
# Run tests
test:
@echo "Running tests..."
go test -v ./...
# Run tests with race detector
test-race:
@echo "Running tests with race detector..."
go test -v -race ./...
# Run go vet
vet:
@echo "Running go vet..."
go vet ./...
# Run staticcheck
staticcheck:
@echo "Running staticcheck..."
@command -v staticcheck >/dev/null 2>&1 || { echo "staticcheck not found. Run 'make install-tools'"; exit 1; }
staticcheck ./...
# Check field alignment
fieldalignment:
@echo "Checking field alignment..."
@command -v fieldalignment >/dev/null 2>&1 || { echo "fieldalignment not found. Run 'make install-tools'"; exit 1; }
@fieldalignment ./... 2>&1 | tee /tmp/fieldalignment.txt || true
@if grep -q ":" /tmp/fieldalignment.txt; then \
echo ""; \
echo "⚠️ Field alignment issues found."; \
echo "Run 'make fieldalignment-fix' to automatically fix them."; \
exit 1; \
else \
echo "✅ No field alignment issues found."; \
fi
# Fix field alignment issues
fieldalignment-fix:
@echo "Fixing field alignment issues..."
@command -v fieldalignment >/dev/null 2>&1 || { echo "fieldalignment not found. Run 'make install-tools'"; exit 1; }
fieldalignment -fix ./...
@echo "Field alignment issues fixed!"
# Run all quality checks
check: vet staticcheck test-race
@echo ""
@echo "✅ All checks passed!"
# Generate test coverage
coverage:
@echo "Generating coverage report..."
go test -coverprofile=coverage.out -covermode=atomic ./...
go tool cover -func=coverage.out
@echo ""
@echo "Total coverage:"
@go tool cover -func=coverage.out | grep total | awk '{print $$3}'
# Generate HTML coverage report
coverage-html: coverage
@echo "Generating HTML coverage report..."
go tool cover -html=coverage.out -o coverage.html
@echo "Opening coverage report in browser..."
@command -v open >/dev/null 2>&1 && open coverage.html || \
command -v xdg-open >/dev/null 2>&1 && xdg-open coverage.html || \
echo "Please open coverage.html in your browser"
# Run benchmarks
bench:
@echo "Running benchmarks..."
go test -bench=. -benchmem ./... -run=^#
# Format code
fmt:
@echo "Formatting code..."
gofmt -s -w .
@echo "Code formatted!"
# Tidy go.mod
tidy:
@echo "Tidying go.mod..."
go mod tidy
go mod verify
@echo "go.mod tidied!"
# Clean build artifacts
clean:
@echo "Cleaning build artifacts..."
go clean -cache -testcache -modcache
rm -f coverage.out coverage.html
@echo "Clean complete!"
# Run example server
run-example:
@echo "Starting example server..."
cd example && go run main.go