テストやバグ解析で効率的に使う!WinMergeのファイル比較機能
WinMergeはオープンソースで無料で使えるマージツールですが、マージの前提となるファイル比較機能だけを見ても、様々な機能があります。
この記事では、WinMergeのファイル比較機能をピックアップして紹介します。ファイル比較はテスト(特にデグレードテスト)やバグ解析などで有用な手段ですので、それらを効率化できるWinMergeの機能を知ってもらえればと思います。
下の目次をクリックすると、説明に素早くジャンプできます。
基本説明
画面レイアウト
WinMergeの基本となる画面レイアウトはこのようになっています。
ファイルペイン、ロケーションペイン、Diffペインの3つに大きく分かれています。
ファイルペインはメインの比較結果を表示し、ロケーションペインはファイル全体の概要をマップ表示します。
Diffペインはファイルペインで選択された差異のみが表示され、差異の中でどこの個所が違っているのかハイライトしてくれます。
ファイルペインで選択したい差異をダブルクリック、もしくはカーソルを移動してAlt
+ Enter
を押すと選択状態になり、Diffペインに表示されます。
CSV、TSVファイルのテーブル表示
CSV、もしくはTSVファイルを比較すると、下の様に区切り文字ごとに列が区切られた、テーブル表示されます。
設定をすることで、カンマ、タブ以外の区切り文字もテーブル表示することができます。
バイナリデータ比較
比較時にバイナリ形式を選択することで、バイナリデータを比較することができます。また、バイナリ形式で比較するファイル名のパターンを設定しておくことも可能です。
イメージ比較
画像ファイルを比較することも可能です。下の様に差異を点滅表示することもできます。
指定したURLのWebページ比較
WinMerge Version 2.16.38.0の時点では実験的な機能となっていますが、下の様にファイルの代わりにURLを指定し、比較の「Webページ」を選択することでWebページの比較をすることが可能です。
比較するとこのように表示されます。
開始方法
ファイル比較を開始する
- 「ツールバー」⇒「開く」から選択ダイアログを表示させます。
- 1番目と2番目の「ファイルまたはフォルダー」に比較したいファイルを指定します。ファイルをドラッグアンドドロップすることでも指定可能です。
- 比較をクリックします。
フォルダ単位でまとめて比較開始する
選択ダイアログにフォルダを指定すると、フォルダにあるファイルがまとめて比較されます。
結果は下の様に一覧で表示され、ファイルをダブルクリックすると個別の比較結果が表示されます。
エクスプローラの右クリックから比較を開始する
Windowsのエクスプローラでファイルを選択し、「右クリック」⇒「WinMerge」をクリックすることでも、ファイル比較を開始することができます。
ファイルを圧縮したまま比較を開始する
ZIPファイルなどの圧縮ファイルも、解凍することなく、そのまま指定すれば比較を開始することができます。
比較設定
「ツールバー」⇒「設定」からオプションダイアログを開き、「比較」から比較の設定をすることができます。
空白の比較方法を変更する
「ツールバー」⇒「設定」⇒「比較」から、「空白」にある「比較する」、「変更を無視」、「すべて無視」のいずれかを選択します。
「変更を無視」の変更とは空白自体の変更を指します。つまり、「変更を無視」を選択すると、半角スペースが1つから2つになったり、半角スペースがタブになった場合は、差異なしとなります。
全角スペースは空白とはみなされない仕様となっているようで、「変更を無視」や「すべて無視」を選択しても差異として判定されます。
空行を無視するようにする
「ツールバー」⇒「設定」⇒「比較」から、「空行を無視する」にチェックを入れます。
大文字と小文字を区別しないようにする
「ツールバー」⇒「設定」⇒「比較」から、「大文字と小文字を区別しない」にチェックを入れます。
改行文字の違いを無視するようにする
「ツールバー」⇒「設定」⇒「比較」から、「改行文字の違いを無視する」にチェックを入れます。
数字を無視するようにする
「ツールバー」⇒「設定」⇒「比較」から、「数字を無視する」にチェックを入れます。
文字コードの違いを無視するようにする
「ツールバー」⇒「設定」⇒「比較」から、「コードページの違いを無視する」にチェックを入れます。
コードのコメントの違いを無視するようにする
「ツールバー」⇒「設定」⇒「比較」から、「コメントの違いを無視する」にチェックを入れます。
移動したブロックを検知するようにする
「ツールバー」⇒「設定」⇒「比較」から、「移動ブロック検出を有効にする」にチェックを入れます。
類似行をマッチさせるようにする
「ツールバー」⇒「設定」⇒「比較」から、「類似行をマッチさせる」にチェックを入れます。
使用するDiffアルゴリズムを変更する
「ツールバー」⇒「設定」⇒「比較」から、「Diff アルゴリズム」を変更します。
「patience」または「histogram」にすると、「default」より人が期待した結果が得られるとのことです。いろいろと設定を変えて、実際に比較してみるのがおすすめです。
default を選択した場合、今まで通りの比較結果となり、patience または histogram を選択すると default よりは人が期待した比較結果が得られるようになります。
— winmerge_jp (@winmerge_jp) April 29, 2019
例( is_eol 関数を上に移動しただけのファイルと比較した場合) pic.twitter.com/vxzSYOH3an
比較判定がおかしいと思ったときに確認すること
比較設定を見直して、意図しない設定が有効となっていないか確認してください。
「ツールバー」の「設定」の右にある▼からも、いくつか比較設定を確認することが可能です。
表示
「メニューバー」⇒「表示」から表示内容を変更することができます。
空白を表示する
「メニューバー」⇒「表示」から、「空白を表示」を選択する。
改行を表示する
「メニューバー」⇒「表示」から、「改行を表示」を選択する。
行番号を表示する
「メニューバー」⇒「表示」から、「行番号を表示」を選択する。
右端でで折り返して表示する
「メニューバー」⇒「表示」から、「行を右端で折返す」を選択する。
差異のみ、もしくは差異の近辺のみを表示する
「メニューバー」⇒「表示」から、「Diff コンテキスト」を開き、行数を選択する。
- 全行(デフォルト):すべて表示する
- 0行:差異のみ表示する
- n行:差異からn行分のみ表示する
移動ブロック検知で検知した差異が、どこから移動したのか表示する
「ロケーションペイン」を「右クリック」し、「全移動ブロック表示」を選択する。
下の様にロケーションペインで、移動したブロック同士が左右つながって表示されるようになる。
比較開始時に、最初の差異の場所が自動的に表示されるようにする
「ツールバー」⇒「設定」からオプションダイアログを開き、「一般」にある下の2項目にチェックを入れる。
結果出力
HTML形式で比較結果を出力する
「メニューバー」⇒「レポートの生成」をクリックする。
参考
この記事は以下の情報を参考にしました。
- WinMergeヘルプファイル
- 「メニューバー」⇒「ヘルプ」⇒「WinMergeヘルプ」から表示
更新履歴
- 2024/02/04 WinMerge (ver 2.16.38.0)の内容をもとに初版作成