問題
共通 reusable workflow elixir-ci.yml@v1 の Code Quality ジョブ(mix credo --strict)が Elixir 1.20.1 レーンで crash する。regex sigil(~r/.../)を含むプロジェクトで再現し、credo 1.7.12 の tokenizer が Elixir 1.20 の sigil トークン形式に対応していないことが原因。
** (FunctionClauseError) no function clause matching in Credo.Code.Token.position/1
(credo 1.7.12) lib/credo/code/token.ex:37: Credo.Code.Token.position(
{:sigil, {193, 15, {193, 57}}, :sigil_r, ["github\\.com[/:]..."], [], nil, "/"})
位置タプルの 3 要素目が整数カラムではなく {193, 57}(タプル)になっており、Elixir 1.20 で sigil トークンが終端位置メタデータを持つ形式に変わったのに credo 1.7.12 の Token.position/1 が対応していない。
- LTS レーン(Elixir 1.17.3)は正常(credo pass)
- registry-manager が緑なのは regex sigil を持たないため(偶然回避しているだけ)
- 初出:
smkwlab/ecosystem-manager(latex-ecosystem#123 で分離した新ツール)。lib/ecosystem_manager/github.ex などが ~r/.../ を使う
regex sigil を使う今後の Elixir ツール全般に影響するため、org 共通 CI 側での対処が妥当。
対応候補
- credo を Elixir 1.20 sigil に対応した版へ固定/更新する(共通 workflow が credo をインストールする箇所)
- あるいは
mix credo を LTS レーンのみで実行し、bleeding-edge レーンでは走らせない
- どちらを採るか決めて
elixir-ci.yml に反映し、@v1 タグを更新
参考
Claude-Session: https://claude.ai/code/session_01Jnvhs3pKABL6vvxj9a5ueb
問題
共通 reusable workflow
elixir-ci.yml@v1の Code Quality ジョブ(mix credo --strict)が Elixir 1.20.1 レーンで crash する。regex sigil(~r/.../)を含むプロジェクトで再現し、credo 1.7.12 の tokenizer が Elixir 1.20 の sigil トークン形式に対応していないことが原因。位置タプルの 3 要素目が整数カラムではなく
{193, 57}(タプル)になっており、Elixir 1.20 で sigil トークンが終端位置メタデータを持つ形式に変わったのに credo 1.7.12 のToken.position/1が対応していない。smkwlab/ecosystem-manager(latex-ecosystem#123 で分離した新ツール)。lib/ecosystem_manager/github.exなどが~r/.../を使うregex sigil を使う今後の Elixir ツール全般に影響するため、org 共通 CI 側での対処が妥当。
対応候補
mix credoを LTS レーンのみで実行し、bleeding-edge レーンでは走らせないelixir-ci.ymlに反映し、@v1タグを更新参考
Claude-Session: https://claude.ai/code/session_01Jnvhs3pKABL6vvxj9a5ueb