0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions で Go の静的解析実行

Posted at

CI の一環として、GitHub のデフォルトブランチに PR を作成した時と、マージをした時に静的解析を行う GitHub Actions を作成します。
※本記事はGitHub Actions で Go のテスト実行の続編です

ファイル構成

.github
  ├─ actions
  │   └─ go-ut
  |       └─ action.yml
  │   └─ static-check
  |       └─ action.yml
  └─ workflows
      └─ ci.yml
json
  ├─ go.mod
  ├─ go.sum
  ├─ pretty_print.go
  └─ pretty_print_test.go
.gitignore

UT も GitHub Actions から行っているため、静的解析の実行は action.yml に記載しています。

Action

.github/actions/static-check/action.yml
name: Go static check
description: Run go unit test

inputs:
  go-directory:
    required: true
runs:
  using: 'composite'
  steps:
    - uses: actions/checkout@v4

    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.21'

    - name: go vet
      shell: bash
      run: |
        echo "### go vet summary" >> $GITHUB_STEP_SUMMARY
        go vet >> $GITHUB_STEP_SUMMARY
      working-directory: ${{ inputs.go-directory }}

    - name: Install staticcheck
      shell: bash
      run: go install honnef.co/go/tools/cmd/staticcheck@latest

    - name: staticcheck
      shell: bash
      run: |
        echo "### staticcheck summary" >> $GITHUB_STEP_SUMMARY
        staticcheck >> $GITHUB_STEP_SUMMARY
      working-directory: ${{ inputs.go-directory }}

引数には、チェック対象の Go モジュールのディレクトリ(go-directory)を定義しています。
また、解析結果を GitHub Action のサマリーとして出力しています。

静的解析は、vet と staticcheck を実行しています。
Golint は非推奨となり、staticcheck と vet が推奨されています。
https://pkg.go.dev/golang.org/x/lint

Workflow

.github/workflows/ci.yml
name: CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  CI:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Static check
        uses: ./.github/actions/static-check
        with:
          go-directory: ./json

      - name: Go UT
        uses: ./.github/actions/go-ut
        with:
          go-directory: ./json

実行結果

main ブランチに PR を作成すると静的解析が実行されます。
スクリーンショット 2024-07-07 13.57.04.png

静的解析の結果に問題があった場合は、GitHub Action が失敗し、Details から結果を確認することで、問題箇所の特定ができます。
スクリーンショット 2024-07-07 13.58.44.png

TODO

  • Summary を見やすくする
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?