背景
#63 で CI に clang-format の dry-run チェックジョブを追加する予定。その「## 事前確認」に従い、CI チェックを入れる前に現状の全ソースが .clang-format で diff を出さないか確認した結果、現状コードはリポジトリ直下の .clang-format に適合していない ことが判明した。このまま #63 の CI チェックを入れると全面的に赤になるため、先に一括 reformat が必要。
※ .clang-format 自体のリファイン PR が別途進行中。それが merge されたら本検査は再実施が必要。
検査方法
clang-format バージョン: Ubuntu clang-format version 14.0.0-1ubuntu1.1
検査対象: third_party/ と build 生成物 (cc/*/build/.../CMakeCXXCompilerId.cpp) を除く cc/ include/ common/ 配下の *.cc / *.hh / *.cpp — 計 240 ファイル
対象抽出:
find cc include common -type f \( -name ' *.cc' -o -name ' *.hh' -o -name ' *.cpp' \) | grep -v ' /build/'
各ファイルに対し:
clang-format --dry-run --Werror < file>
違反規模は clang-format <file> | diff <file> - | grep -c '^[<>]' で diff 行数を計測。
検査結果
違反ファイル数: 216 / 240 (適合は 26 ファイルのみ)
diff 行数合計: 約 36,700 行
規模の大きい top 15:
diff 行数
ファイル
2518
include/bomb_pessimistic.hh
2307
include/bomb.hh
962
common/result.cc
883
cc/tictoc/transaction.cc
836
cc/si/transaction.cc
800
cc/silo/transaction.cc
792
include/tpcc/tpcc_initializer.hh
725
cc/oze/include/transaction.hh
721
include/dbomb_deterministic.hh
699
cc/oze/transaction.cc
674
include/tpcc/tpcc_tables.hh
528
cc/ss2pl/transaction.cc
475
include/tpcc/tpcc_query.hh
460
include/masstree_wrapper.hh
429
include/tpcc/tpcc_tx_neworder.hh
ほぼ全プロトコル・全共通ヘッダにまたがって違反が出ている。
提案
対象 240 ファイルに clang-format -i を機械適用する一括 reformat PR を別途出す。
reformat は機械適用なのでロジック変更は無く、レビュー負荷は低い (diff 量は多いが目視確認は不要)。
順序 : 先にこの reformat PR を merge し、その後に CI に clang-format dry-run チェックジョブを追加 #63 の CI dry-run チェックジョブを入れるのが正しい。逆順だと CI に clang-format dry-run チェックジョブを追加 #63 が即赤になる。
なお .clang-format 自体のリファイン PR が進行中のため、reformat PR はそれの merge 後に実施する (リファイン後の .clang-format で再検査 → reformat) のが望ましい。タイミングは要調整。
完了条件
対象 240 ファイル全てで clang-format --dry-run --Werror がエラーを出さない (緑)。
Related
背景
#63 で CI に
clang-formatの dry-run チェックジョブを追加する予定。その「## 事前確認」に従い、CI チェックを入れる前に現状の全ソースが.clang-formatで diff を出さないか確認した結果、現状コードはリポジトリ直下の.clang-formatに適合していないことが判明した。このまま #63 の CI チェックを入れると全面的に赤になるため、先に一括 reformat が必要。※
.clang-format自体のリファイン PR が別途進行中。それが merge されたら本検査は再実施が必要。検査方法
clang-formatバージョン:Ubuntu clang-format version 14.0.0-1ubuntu1.1third_party/と build 生成物 (cc/*/build/.../CMakeCXXCompilerId.cpp) を除くcc/ include/ common/配下の*.cc/*.hh/*.cpp— 計 240 ファイルclang-format <file> | diff <file> - | grep -c '^[<>]'で diff 行数を計測。検査結果
規模の大きい top 15:
include/bomb_pessimistic.hhinclude/bomb.hhcommon/result.cccc/tictoc/transaction.cccc/si/transaction.cccc/silo/transaction.ccinclude/tpcc/tpcc_initializer.hhcc/oze/include/transaction.hhinclude/dbomb_deterministic.hhcc/oze/transaction.ccinclude/tpcc/tpcc_tables.hhcc/ss2pl/transaction.ccinclude/tpcc/tpcc_query.hhinclude/masstree_wrapper.hhinclude/tpcc/tpcc_tx_neworder.hhほぼ全プロトコル・全共通ヘッダにまたがって違反が出ている。
提案
clang-format -iを機械適用する一括 reformat PR を別途出す。.clang-format自体のリファイン PR が進行中のため、reformat PR はそれの merge 後に実施する (リファイン後の.clang-formatで再検査 → reformat) のが望ましい。タイミングは要調整。完了条件
clang-format --dry-run --Werrorがエラーを出さない (緑)。Related