Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[go-fan] Go Module Review: mvdan.cc/sh/v3

クローズ 初心者向け
#70,197 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
74/100
issue の種類
リファクタリング
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
go
領域
security

調査の方向性

pkg/workflow/taint/javascript_workflow.go の223行目付近を読み、javascriptExecutables の走査を調べてください。報告では、syntax.Walk のコールバックが常に走査を続けることを指摘し、動作に影響しない代替として syntax.Preorder を提案しています。まず、既存の走査がどのように実行可能ファイルを収集するかを確認してください。完了条件は、その呼び出し箇所で Preorder を使い、同じ収集結果を維持することです。

索引モデルが issue の本文から書いたものです。

説明

automation cookie dependencies go-fan
Go Fan Report: mvdan.cc/sh/v3

Module Overview
mvdan.cc/sh/v3 (repo mvdan/sh) is a pure-Go shell parser, formatter, and interpreter (the engine behind shfmt), supporting POSIX Shell, Bash, Zsh, and mksh. gh-aw only imports its syntax subpackage, the AST parser, and does not use interp, expand, shell, or pattern.

Current Usage in gh-aw

  • Files: 3 non-test files plus 1 test file, all in pkg/workflow/taint
  • Purpose: static taint-tracking security analyzer for shell run steps in agentic workflows. It propagates untrusted data (issue/PR titles, comments, etc.) through assignments, command substitutions, redirects, pipes, and env/curl/wget calls, flagging leaks into logs, files, GITHUB_OUTPUT/GITHUB_ENV, or network requests.
  • Key APIs: syntax.NewParser().Parse, syntax.Walk, and type-switching over CallExpr, BinaryCmd, IfClause, ForClause, WhileClause, CaseClause, FuncDecl, ParamExp, CmdSubst, and more.

Research Findings
Version pinned: v3.14.1, which is the latest release (published 2026-09-06). gh-aw is already fully up to date; no version bump needed.

Recent releases: v3.14.1 fixed heredoc indentation and a zsh parsing edge case (no effect on gh-aw). v3.14.0 added syntax.Preorder, a Walk-complementing iter.Seq[Node] range-over-func iterator, plus parser correctness fixes. v3.13.0 added Zsh language support to the parser.

Improvement Opportunities

Quick Wins:

  • javascriptExecutables in pkg/workflow/taint/javascript_workflow.go (around line 223) calls syntax.Walk with a callback that always returns true, meaning it never prunes the traversal. This is exactly the case the new (v3.14.0) syntax.Preorder iterator was added for. Replacing it with a for node := range syntax.Preorder(tree) loop is a behavior-neutral readability improvement. The other 4 syntax.Walk call sites in the package rely on pruning and should keep using Walk directly.

Feature Opportunities:

  • None of the interp/expand/pattern additions apply, since gh-aw correctly stays with the static syntax parser only.
  • Zsh parsing is available since v3.13.0 but not modeled; shell.go explicitly reports a gap for any shell other than bash/sh. Low priority since GitHub Actions built-in shell values do not include zsh on hosted runners.

Best Practice Alignment:

  • Parser configuration is already minimal and correct: no Variant, RecoverErrors, StopAt, or KeepPadding options are set, which is the right conservative choice for a security analyzer.
  • Dependency surface is already minimal: only syntax is imported, never interp or cmd/shfmt.

Recommendations

  1. Optional, low risk: replace the javascriptExecutables syntax.Walk call with syntax.Preorder for a small readability win.
  2. No version bump needed; already on latest v3.14.1.
  3. No urgent action needed otherwise; the module is well-utilized and scoped tightly to the syntax subpackage for a legitimate static-analysis use case.

Generated by Go Fan. Module summary saved to scratchpad/mods/sh.md

References:

Generated by 🐹 Go Fan · claude · agent · 163.6 AIC · ⌖ 0.88 AIC · ⊞ 6.6K · ◷

  • expires on Oct 20, 2026, 12:13 AM UTC-08:00
主要言語
Go
スター
5.4k
フォーク
596
平均マージ
3時間 24分
マージ済み PR(30日)
824

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

github/gh-aw のほかの issue

github/gh-aw の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。