Skip to content

ci: clang-format dry-run チェックジョブを追加 (#63)#78

Merged
thawk105 merged 1 commit into
masterfrom
ci-clang-format-check
May 14, 2026
Merged

ci: clang-format dry-run チェックジョブを追加 (#63)#78
thawk105 merged 1 commit into
masterfrom
ci-clang-format-check

Conversation

@thawk105
Copy link
Copy Markdown
Owner

概要

CI に build とは独立した軽量な clang-format チェックジョブを追加する。
clang-format --dry-run --Werror.clang-format に違反するファイルを
検出し、フォーマット崩れのコミットが master に混入するのを防ぐ。

Closes #63

スタック構成 (重要)

このPRは以下のスタックの最上段で、#75#76 が先にマージされる必要がある

master ← #75 (refine-clang-format) ← #76 (bulk-clang-format-reformat) ← このPR

理由: 現在の master のソースは未整形なので、clang-format チェックを足すと
即 CI が赤になる。#75 でリファインした .clang-format#76 でコードベース
全体を reformat 済みのツリーの上にこのジョブを足すことで、初めて緑になる。
GitHub 上の diff も #76 マージ後は format.yml の追加 1ファイルだけになる。

実装方針

Option 1 / Option 2 → Option 2 を選択

新規ワークフロー .github/workflows/format.yml として分離した
(issue 本文の Option 2)。理由:

  • build と format は無関係な失敗 (コンパイル破壊 / フォーマット崩れ)。
    ジョブを分けておけば、どちらが赤かが Actions 一覧で一目で分かる。
  • paths-ignorebuild.yml と完全に揃えてあり、docs 等の変更で
    無駄に走らない点は Option 1 と同じ。

clang-format を動かす image → :latest を選択

.devcontainer/Dockerfile を確認したところ、clang-formatdev
stage (= :latest) にのみ入っており、build.yml が使う slim な :ci
image には入っていない (#46 で slim 化)。:ciclang-format を足すと
Dockerfile 変更 + image 再ビルドが必要でスコープが膨らむため、format-check
ジョブだけ :latest を使う。build.yml と同様に container job なので
--user root + git config --global --add safe.directory を設定。

検証

#76 のツリー (このPRの作業ツリー) 上で、ワークフローが実行するのと同じ
コマンドをローカル実行し緑を確認:

$ clang-format --version
Ubuntu clang-format version 14.0.0-1ubuntu1.1
$ git ls-files -- cc include common | grep -E '\.(cc|hh|cpp)$' | xargs clang-format --dry-run --Werror
$ echo $?
0

「master 上で緑」の最終確認は、スタック (#75#76 → このPR) が全部
マージされた後になる。

actions / 規約

  • actions/checkout@v6 をメジャー版 pin (build.yml に合わせる)。
  • paths-ignorebuild.yml と同期。
  • container job の --user root + safe.directory 設定済み。

thawk105 added a commit that referenced this pull request May 14, 2026
ci: devcontainer の clang-format を 14 に固定 (PR #78 の CI 失敗修正)
@thawk105 thawk105 force-pushed the ci-clang-format-check branch from c7a7437 to 97c0fcb Compare May 14, 2026 08:32
@thawk105 thawk105 changed the base branch from bulk-clang-format-reformat to master May 14, 2026 08:33
build とは独立した format.yml を新設し、cc/ include/ common/ 配下の
.cc/.hh/.cpp に clang-format --dry-run --Werror をかける。フォーマット
違反コミットを CI で弾く。

clang-format は devcontainer Dockerfile の dev stage (:latest) のみに
入っているため、このジョブは :latest image を使う (:ci slim には無い)。
対象集合と clang-format バージョン (14) は一括 reformat (#76) と揃える。

Closes #63
@thawk105 thawk105 force-pushed the ci-clang-format-check branch from 97c0fcb to 982ce83 Compare May 14, 2026 08:49
@thawk105 thawk105 merged commit e4223fa into master May 14, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant