1. ホーム
  2. language-agnostic

[解決済み] セマンティックディフユーティリティ【終了しました

2022-10-27 06:40:12

質問

私は、セマンティックな diff/merge ユーティリティの良い例を見つけようとしています。 ソース コード ファイルを比較する伝統的なパラダイムは、行と文字を比較することで機能します。 構造 を考慮したユーティリティはありますか?

たとえば、既存の diff プログラムは、"125 行目の文字 2 で相違が見つかりました、と報告します。ファイル x は v-o-i-d を含み、ファイル y は b-o-o-l" を含みます。 特殊なツールは、"メソッド doSomething() の戻り値のタイプが void から bool に変更されました" を報告できるようにする必要があります。

私は、この種の意味的な情報は、ユーザーがコードを比較するときに実際に探しているものであり、次世代のプログラミングツールの目標であるべきだと主張します。 利用可能なツールでこのような例はあるのでしょうか?

どのように解決するのですか?

このシナリオに的確に対処できるツールを開発しました。チェック http://www.semanticmerge.com

テキストベースのアルゴリズムではなく、コード構造に基づいてマージ (および差分) を行うため、基本的に強力なリファクタリングを伴う次のようなケースに対処できます。また、以下のように差分とマージの競合の両方をレンダリングすることができます。

そして、テキストブロックの移動で混乱するのではなく、最初に解析するので、メソッドごと(実際には要素ごと)にコンフリクトを表示することができるのです。先ほどのようなケースは、手動でコンフリクトを解決することもないでしょう。

これは言語を意識したマージツールで、この SO の質問にようやく答えられるようになったのは素晴らしいことです :-)