コンテンツにスキップ
Zenn Dev Kou Pg 0131 Articles Gha Static Checker

GitHub Actions 向け静的解析ツールの紹介 (actionlint/ghalint/zizmor)

  • URL: https://zenn.dev/kou_pg_0131/articles/gha-static-checker
  • 日付: 2026-06-26
  • Tier: Tier 3
  • 要旨: GitHub Actions ワークフローの静的解析ツールとして actionlint、ghalint、zizmor の 3 つを紹介・比較している。actionlint は構文チェックや shellcheck/pyflakes 連携など文法系が充実しており、ghalint は job の permissions 必須化やコミット SHA 固定・persist-credentials: false 設定などセキュリティ系チェックに特化、zizmor も同様にセキュリティ重視の静的解析ツールとして位置づけられている。2026 年初頭の tj-actions/changed-files の Git タグ書き換え事件を背景に、これらのツールを組み合わせた自動化の重要性を説いている。

詳細

検証バージョン: actionlint 1.7.7、ghalint 1.2.3、zizmor 1.5.1

actionlint:

  • インストール: brew install actionlint
  • 主なチェック: 必須キー・キー重複チェック、${{ }} 構文チェック、shellcheck によるシェルスクリプト検査、pyflakes による Python スクリプト検査
  • 使い方: 引数なしで実行すると .github/workflows/ 内の全ファイルを対象、ファイルパスの明示指定も可
  • -format '{{json .}}' で JSON 形式の出力も可能

ghalint:

  • インストール: brew install suzuki-shunsuke/ghalint/ghalint
  • コマンド: ghalint run(Workflow チェック)、ghalint run-action(action.yml チェック)
  • 主なチェック: job の permissions 設定必須化、コミット SHA 固定必須化、actions/checkout での persist-credentials: false 設定必須化

zizmor:

  • セキュリティ観点の静的解析に特化(記事は zizmor の詳細部分で本文が切れているため全項目不明)

背景:

  • tj-actions/changed-files や reviewdog/action-* の Git タグ書き換えによる悪意あるコード実行事件が動機
  • アクション参照にコミット SHA 以外にも多数の考慮事項があり人力チェックには限界があるため自動化が必要