Ryota Kondo

Ryota Kondo

2024/02/04

テストやバグ解析で効率的に使う!WinMergeのファイル比較機能

WinMergeはオープンソースで無料で使えるマージツールですが、マージの前提となるファイル比較機能だけを見ても、様々な機能があります。

この記事では、WinMergeのファイル比較機能をピックアップして紹介します。ファイル比較はテスト(特にデグレードテスト)やバグ解析などで有用な手段ですので、それらを効率化できるWinMergeの機能を知ってもらえればと思います。

下の目次をクリックすると、説明に素早くジャンプできます。

基本説明

画面レイアウト

WinMergeの基本となる画面レイアウトはこのようになっています。

画面レイアウト

ファイルペイン、ロケーションペイン、Diffペインの3つに大きく分かれています。

ファイルペインはメインの比較結果を表示し、ロケーションペインはファイル全体の概要をマップ表示します。

Diffペインはファイルペインで選択された差異のみが表示され、差異の中でどこの個所が違っているのかハイライトしてくれます。

ファイルペインで選択したい差異をダブルクリック、もしくはカーソルを移動してAlt + Enterを押すと選択状態になり、Diffペインに表示されます。

CSV、TSVファイルのテーブル表示

CSV、もしくはTSVファイルを比較すると、下の様に区切り文字ごとに列が区切られた、テーブル表示されます。

設定をすることで、カンマ、タブ以外の区切り文字もテーブル表示することができます。

CSV、TSVファイルのテーブル表示

バイナリデータ比較

比較時にバイナリ形式を選択することで、バイナリデータを比較することができます。また、バイナリ形式で比較するファイル名のパターンを設定しておくことも可能です。

バイナリデータ比較

イメージ比較

画像ファイルを比較することも可能です。下の様に差異を点滅表示することもできます。

イメージ比較

指定したURLのWebページ比較

WinMerge Version 2.16.38.0の時点では実験的な機能となっていますが、下の様にファイルの代わりにURLを指定し、比較の「Webページ」を選択することでWebページの比較をすることが可能です。

指定したURLのWebページ比較-指定

比較するとこのように表示されます。

指定したURLのWebページ比較-結果

開始方法

ファイル比較を開始する

  1. 「ツールバー」⇒「開く」から選択ダイアログを表示させます。
  2. 1番目と2番目の「ファイルまたはフォルダー」に比較したいファイルを指定します。ファイルをドラッグアンドドロップすることでも指定可能です。
  3. 比較をクリックします。
ファイル比較を開始する

フォルダ単位でまとめて比較開始する

選択ダイアログにフォルダを指定すると、フォルダにあるファイルがまとめて比較されます。

結果は下の様に一覧で表示され、ファイルをダブルクリックすると個別の比較結果が表示されます。

フォルダ単位でまとめて比較開始する

エクスプローラの右クリックから比較を開始する

Windowsのエクスプローラでファイルを選択し、「右クリック」⇒「WinMerge」をクリックすることでも、ファイル比較を開始することができます。

エクスプローラの右クリックから比較を開始する

ファイルを圧縮したまま比較を開始する

ZIPファイルなどの圧縮ファイルも、解凍することなく、そのまま指定すれば比較を開始することができます。

比較設定

「ツールバー」⇒「設定」からオプションダイアログを開き、「比較」から比較の設定をすることができます。

比較設定

空白の比較方法を変更する

「ツールバー」⇒「設定」⇒「比較」から、「空白」にある「比較する」、「変更を無視」、「すべて無視」のいずれかを選択します。

「変更を無視」の変更とは空白自体の変更を指します。つまり、「変更を無視」を選択すると、半角スペースが1つから2つになったり、半角スペースがタブになった場合は、差異なしとなります。

全角スペースは空白とはみなされない仕様となっているようで、「変更を無視」や「すべて無視」を選択しても差異として判定されます。

空行を無視するようにする

「ツールバー」⇒「設定」⇒「比較」から、「空行を無視する」にチェックを入れます。

大文字と小文字を区別しないようにする

「ツールバー」⇒「設定」⇒「比較」から、「大文字と小文字を区別しない」にチェックを入れます。

改行文字の違いを無視するようにする

「ツールバー」⇒「設定」⇒「比較」から、「改行文字の違いを無視する」にチェックを入れます。

数字を無視するようにする

「ツールバー」⇒「設定」⇒「比較」から、「数字を無視する」にチェックを入れます。

文字コードの違いを無視するようにする

「ツールバー」⇒「設定」⇒「比較」から、「コードページの違いを無視する」にチェックを入れます。

コードのコメントの違いを無視するようにする

「ツールバー」⇒「設定」⇒「比較」から、「コメントの違いを無視する」にチェックを入れます。

移動したブロックを検知するようにする

「ツールバー」⇒「設定」⇒「比較」から、「移動ブロック検出を有効にする」にチェックを入れます。

類似行をマッチさせるようにする

「ツールバー」⇒「設定」⇒「比較」から、「類似行をマッチさせる」にチェックを入れます。

使用するDiffアルゴリズムを変更する

「ツールバー」⇒「設定」⇒「比較」から、「Diff アルゴリズム」を変更します。

「patience」または「histogram」にすると、「default」より人が期待した結果が得られるとのことです。いろいろと設定を変えて、実際に比較してみるのがおすすめです。

比較判定がおかしいと思ったときに確認すること

比較設定を見直して、意図しない設定が有効となっていないか確認してください。

「ツールバー」の「設定」の右にある▼からも、いくつか比較設定を確認することが可能です。

比較判定がおかしいと思ったときに確認すること

表示

「メニューバー」⇒「表示」から表示内容を変更することができます。

表示

空白を表示する

「メニューバー」⇒「表示」から、「空白を表示」を選択する。

改行を表示する

「メニューバー」⇒「表示」から、「改行を表示」を選択する。

行番号を表示する

「メニューバー」⇒「表示」から、「行番号を表示」を選択する。

右端でで折り返して表示する

「メニューバー」⇒「表示」から、「行を右端で折返す」を選択する。

差異のみ、もしくは差異の近辺のみを表示する

「メニューバー」⇒「表示」から、「Diff コンテキスト」を開き、行数を選択する。

  • 全行(デフォルト):すべて表示する
  • 0行:差異のみ表示する
  • n行:差異からn行分のみ表示する

移動ブロック検知で検知した差異が、どこから移動したのか表示する

「ロケーションペイン」を「右クリック」し、「全移動ブロック表示」を選択する。

下の様にロケーションペインで、移動したブロック同士が左右つながって表示されるようになる。

移動ブロック検知で検知した差異が、どこから移動したのか表示する

比較開始時に、最初の差異の場所が自動的に表示されるようにする

「ツールバー」⇒「設定」からオプションダイアログを開き、「一般」にある下の2項目にチェックを入れる。

比較開始時に、最初の差異の場所が自動的に表示されるようにする

結果出力

HTML形式で比較結果を出力する

「メニューバー」⇒「レポートの生成」をクリックする。

HTML形式で比較結果を出力する

参考

この記事は以下の情報を参考にしました。

  • WinMergeヘルプファイル
    • 「メニューバー」⇒「ヘルプ」⇒「WinMergeヘルプ」から表示

更新履歴

  • 2024/02/04 WinMerge (ver 2.16.38.0)の内容をもとに初版作成

関連タグの記事

Ryota Kondo
Ryota Kondo

システムエンジニア・プログラマー|このブログサイトの運営もしており、思いついたことをまとめて記事を書いています💡|Twitterのフォローはお気軽に