HN🔥 108
💬 57

2500万行の巨大コードベースをたった一晩で自動フォーマットする方法

r00k
約7時間前

ディスカッション (10件)

1
varun_ch
約7時間前

2500万行って部分には衝撃を受けたわ!ひとつのコードベースでそんな規模、到底信じられない。もっと詳しく知りたいわ。

2
hokkos
約6時間前

そうなると、その4500万行は型なしなのかな?

3
burnte
約6時間前

あの浮いてる螺旋状のやつ、気が散りすぎて記事を読むよりインスペクターで削除する方に時間を使っちゃったよ。読者のこと嫌いなんじゃないかと思うレベル。ひどいね。

4
CrzyLngPwd
約6時間前

昔、最初の仕事でMS BASIC PDSを使って少数のクライアント向けソフトを作ってる小さな会社にいたんだ。リードエンジニアがコードのフォーマットを全く気にしない人でね。だから俺は「makenice」ってツールを作って、彼のひどいスパゲッティコードを、俺ら普通の人間が理解できるようにインデントやレイアウトを整えるようにしたんだ。そしたら彼は激怒して、みんなの前でオフィス中をぐるぐる回るくらい荒れ狂ってさ。だから次は「makenasty」ってツールを作って、彼が好む(らしい)書き方に変換できるようにしてやったよ。これ、チームの仲の良い数人にだけ共有したらめちゃくちゃ喜ばれたね。可読性の高い状態とリーダー好みの状態を簡単に切り替えられたからさ。結局、彼はmakenastyの存在を最後まで知らなかったよ。

5
CrzyLngPwd
約6時間前

確かに、もう人間が読む必要なんてないのかもな。AIが飯の種を稼いでくれる時代になって、ついに「書き込み専用」コードの夜明けが来たってわけか。2500万行のゴミみたいなコードをわざわざ整形する意味って何だ?そもそもAIは、なんでわざわざトークンを消費して人間が読みやすいようにコードを書いてるんだろ。

6
hobofan
約6時間前

一気に全ファイルを再フォーマットするっていう判断には驚いたな。週末にやったとしても、あの規模なら間違いなく多くのオープンなPRが混乱するはず。以前、数百万行規模のコードベースでフォーマッターを導入したことがあるけど、その時はオープンなPRで触られていないファイルだけをスクリプトで逐次フォーマットしていったよ。初回で全体の95%を変換して、そのあと約2週間、毎日スクリプトを走らせて99.5%まで持っていった。残った数個の長期的なPRは、マージされるたびに手動で対応したね。

7
munificent
約6時間前

「土曜日に全コードベースを一気にフォーマットしてマージコンフリクトを回避した。テストスイートのおかげで確信はあったけど、GitHubで差分が表示しきれないほどの巨大なdiffを出すのはやっぱり怖い」Dartのフォーマッターには内部で整合性チェックが入ってるんだよね。フォーマット前後で空白を除外して文字列を並行スキャンし、空白以外の文字が一致しない場合は即座に中断するっていう仕組み。これのおかげで、余計な変更を一切せずに空白のみを調整できるから、巨大なコードベースでも恐れずに実行できるんだ。このチェック機能には何度も救われたよ。特に新しい構文周りの変なバグが紛れ込んだ時なんかにね。(ただ最近のフォーマッターは少し変更の柔軟性が増して、コメントの位置を変えたりすることもあるから、一部の記号チェックをスキップするようになって信頼性は少し落ちてるけどね)

8
nitwit005
約5時間前

「複雑さを考慮して、まずは最も難しい構文から取り掛かり、残りはそれに従わせるというシンプルな仮説を立てた」これは良いね。よくあるケースばかり想定して設計して、実際にはほとんどのコードが例外的なケースの処理で埋め尽くされるっていう罠にハマる人をよく見るからさ。

9
comrade1234
約5時間前

おいおい、タブ(の扱い)にそこまで労力を割ける時間があるなんて羨ましいぜ。