改行コードの混在を診断・修正する

LFとCRLFの改行コードが混在するファイルを発見して修正します。gitの差分、ビルド失敗、クロスプラットフォームの互換性問題を解決します。

Line Endings

詳細な説明

LFとCRLFの遭遇

改行コードの混在は、1つのファイル内にLF(\n)とCRLF(\r\n)の両方が含まれている場合に発生します。これは通常以下の場合に起こります:

  • 異なるOSの複数の開発者が同じファイルを編集
  • 異なるソースからテキストをコピーペースト
  • エディタが一部の改行コードのみを変換
  • Gitのcore.autocrlf設定の誤設定

混在の検出

ホワイトスペースビジュアライザーのLine Endingsパネルが正確な構成を報告します:

Mixed: LF (47), CRLF (3)

47行がLFを使用し、3行がCRLFを使用していることがわかります。可視化をスクロールして、↵マーカーの中の緑色の**←↵**マーカーを見つけることで、正確にどの行が間違った改行コードを持っているか特定できます。

Gitへの影響

Gitは改行コードの変更を修正として追跡します。ファイルに改行コードの混在があり正規化すると、影響を受けるすべての行が変更として表示されます。そのため以下が重要です:

  1. 専用のコミットで早期に正規化
  2. .gitattributes* text=autoまたは特定のルールで設定
  3. 設定変更後にgit add --renormalize .を実行

ツールへの影響

ツール 症状
diff / patch パッチがクリーンに適用できない場合がある
リンター ESLint、Prettierが改行を検出または自動修正する
コンパイラ 一部のコンパイラやプリプロセッサが混在改行で停止
Docker COPYされたスクリプトのCRLFがランタイム失敗を引き起こす

混在改行の修正

  1. ファイルの内容をホワイトスペースビジュアライザーに貼り付けます。
  2. Line Endingsパネルで混在を確認します。
  3. CleanでCRLF(LFに正規化する場合)またはLF(CRLFに正規化する場合)を選択します。
  4. Cleanをクリックして結果をコピーします。

大規模プロジェクトでは、.gitattributesを設定してgit add --renormalize .を実行し、すべてのファイルを一括修正します。

ユースケース

チームがgitの差分で1行しか編集していないのにファイル全体が変更として表示されることに気づきます。ホワイトスペースビジュアライザーがファイル全体に改行コードの混在を検出します。LFに正規化し、.gitattributesルールを追加すると、以降の差分は実際のコード変更のみを表示します。

試してみる — Whitespace Visualizer

フルツールを開く