Подтвердить что ты не робот

Инструменты для синтаксиса?

Есть ли какие-либо (в идеале GUI) инструменты diff, которые знают о синтаксисе?

В качестве примера того, что я ищу, я все время считаю, что мой текущий пропущенный инструмент выравнивает повторяющийся код:

Foo  = { 'hello': 'world',    |  Foo  = { 'hello': 'world',
         'goodnight': 'moon'  |           'goodnight': 'moon'  
       }                      <
                              <
Bar  = { 'picture': 1000,     <
       }                      |         }

Мне нужен инструмент, который попытался бы сделать соответствующие фигурные скобки с одной стороны выровненными с соответствующими скобками на другом.


Изменить: Я ищу инструмент, который может автоматически определить это условие и исправить его выравнивание.

4b9b3361

Ответ 1

Не основанный на графическом интерфейсе, но полностью синтаксис: моя компания инструменты Smart Differencer для многих языков (включая Java, С#, С++, PHP, Python, JavaScript, HTML, XML, COBOL,...)

Smart Differencer анализирует исходный текст, как компилятор, поэтому он понимает этот синтаксис языка и структурирует способ компилятора. Он сравнивает эти структуры (используя AST) для определения "минимального расстояния редактирования" с точки зрения действий редактирования (перемещение, копирование, удаление, замена, переименование-идентификатор-в-блоке) в этих структурах и их отчет.

В вашем примере он будет знать, что фигурная скобка справа принадлежит foo, а не bar, и сообщит вам, что весь оператор, содержащий bar, был просто удален.

Стиль вывода является diff-like, если вы хотите передать результат другому инструменту или более читабельному человеку, если вы хотите изучить его напрямую.

Ответ 2

Beyond Compare позволит вам перестроить строки, которые он не соответствует. Обычно мне повезло, что он правильно соответствует линиям.

Ответ 4

Мне нравится Source Gear DiffMerge.

Ответ 5

Инструмент Pretty Diff - это синтаксис, который автоматически распознается. Процесс, который он использует, - это минимизировать код, чтобы удалить комментарии, а затем украсить код, чтобы нормализовать форматирование и пробел. Тем не менее, он поддерживает только несколько веб-клиентских языков. Этот инструмент работает на стороне клиента, чтобы вы могли проверить его в своем браузере, и есть примерная страница, содержащая некоторые демонстрации.