name: Go Code Analyzer on: push: branches: - main paths: - "**.go" - go.mod - go.sum - ".github/workflows/code-analyzer.yml" pull_request: branches: - main paths: - "**.go" - go.mod - go.sum - ".github/workflows/code-analyzer.yml" permissions: contents: read jobs: analyze: name: Analyze Go code runs-on: ubuntu-latest timeout-minutes: 20 steps: - name: Checkout repository uses: actions/checkout@v6 - name: Set up Go uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true - name: Check formatting run: | unformatted=$(gofmt -l .) if [ -n "$unformatted" ]; then echo "These files are not gofmt-formatted:" echo "$unformatted" exit 1 fi - name: Run go vet run: go vet ./... - name: Run staticcheck uses: dominikh/staticcheck-action@v1 with: version: "latest" install-go: false - name: Run tests run: go test -race -shuffle=on ./...