diff и смысл сравниваемых файлов
А вот скажите, есть ли какая-нибудь вариация diff, умеющая не только сравнивать текст, а кроме того, еще и пользоваться информацией о структуре или смысле этого текста?
Например, сравнение двух исходников было бы намного гуманнее, если сначала их оба отпарсить в AST, а потом только сравнивать - сразу прекратились бы всевозможные заморочки типа "поменяли порядок расположения методов, переформатировали код - diff показывает хрень".
Если сравнивать что-то вроде таблиц БД, то очевидно, что сначала надо сравнить их метаданные, построить (возможно, при помощи человекопользователя) трансформацию одной таблицы в другую, а потом уже с ее учетом сравнивать, "что изменилось в записях".
В принципе, наверно можно такое сделать, прикрутив между diff и файлами какие-то промежуточные фильтры.
Например, сравнение двух исходников было бы намного гуманнее, если сначала их оба отпарсить в AST, а потом только сравнивать - сразу прекратились бы всевозможные заморочки типа "поменяли порядок расположения методов, переформатировали код - diff показывает хрень".
Если сравнивать что-то вроде таблиц БД, то очевидно, что сначала надо сравнить их метаданные, построить (возможно, при помощи человекопользователя) трансформацию одной таблицы в другую, а потом уже с ее учетом сравнивать, "что изменилось в записях".
В принципе, наверно можно такое сделать, прикрутив между diff и файлами какие-то промежуточные фильтры.
no subject
Чтобы дифф понимал ренеймы и рефакторинг в качестве изменений не текста, но смысла.
no subject
(весь код в редакторе парсится в AST в реальном времени, оттого и рефакторинги все работают как положено).
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Для каждого типа текста иметь свой патченный diff мне кажется извратом, но некоторые по этому пути идут. xmldiff в репозитории наблюдаю.
no subject
1 задача - 1 утилита.
no subject
2. Иногда изменение порядка имеет смысл - и не хотелось бы, чтобы нормализатор его пришиб.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Осталось сделать удовлетворяющий нуждам нормализатор.
no subject
no subject
no subject
no subject
no subject
(Anonymous) 2010-11-23 02:47 am (UTC)(link)no subject
раз) KDiff 3
два) CSDiff