Как проигнорировать перемещенные строки в разности

Я в настоящее время работаю над инструментом поколения исходного кода. Чтобы удостовериться, что мои изменения делают не, представляют любые новые ошибки, a diff между выводом программы прежде и после того, как мои изменения теоретически были бы ценным инструментом.

Однако это оказывается более твердым, чем можно было бы думать, потому что выходные строки инструмента, где порядок не имеет значения (как import операторы, объявления функции, …) полуслучайным образом заказанным способом. Из-за этого, вывода diff нарушен многими изменениями, которые являются на самом деле только строками, перемещенными в другое положение в том же файле.

Существует ли способ заставить разность проигнорировать эти перемещения и только произвести строки, которые были действительно добавлены или удалены?

11
задан 27.06.2012, 00:08

3 ответа

Вы могли сделать простую разность, сохранить результат где-нибудь (для предотвращения другой разности), цикл через строки в любой версии, затем удалить строки с другой стороны.

Это породило отдельный проект для рабочего кода. Код.

2
ответ дан 07.12.2019, 12:28

Можно попробовать к sort'em сначала. Что-то как:

sort file-a > s-file-a
sort file-b > s-file-b
diff s-file-a s-file-b

Bash (и zsh) может сделать это в одной строке с заменой процесса

diff <(sort file-a) <(sort file-b)
4
ответ дан 07.12.2019, 12:28

Это кажется, что Вы управляете инструментом. Затем сделайте его вывод предсказуемым: вместо того, чтобы испустить объявления в полупроизвольном порядке, использование (говорит) алфавитный порядок как последнее прибежище. Это будет не только обладать преимуществом удаления бесполезного хлама от diffs, но также и создания вывода инструмента, легче считать и проверить для человека.

0
ответ дан 07.12.2019, 12:28

Теги

Похожие вопросы