Какие инструменты можно использовать для просмотра различий двух разделов одного и того же файла? - PullRequest
3 голосов
/ 14 января 2011

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

Есть ли какой-либо инструмент, который я могу использовать для просмотра различий двух выбранных разделов, чтобы я мог видеть разницумежду этими почти одинаковыми кодами?

Ответы [ 5 ]

3 голосов
/ 14 января 2011

Я делал это время от времени перед использованием Emacs:

  1. Клонировать косвенный буфер (M-x clone-indirect-buffer).
  2. Отметить один раздел и сузить (C-x n n) доit.
  3. Переключение на исходный буфер и сужение на другой раздел.
  4. Запуск Ediff (M-x ediff-two-buffers) для буфера и его клона.

AХорошая особенность в том, что вы можете объединять куски между ними, и это не запутается.

3 голосов
/ 14 января 2011

Хотя я не думаю, что интерфейс отличный, проверьте Clone Digger .См. Пример .

Набор инструментов для умственного мастера (TC Toolkit) может упростить поиск дублированного кода, но, похоже, не обеспечивает хорошую визуализацию.

Редактировать: Если вы хотите платить, Atomiq выглядит интересно.

Для хорошей визуализации у меня был некоторый успех с Diffuse , поскольку он позволяет произвольно сопоставлять строки из одного файла в другой: Diffuse

Однако мне пришлось скопировать файл с другим именем, чтобы все работало хорошо.

1 голос
/ 14 января 2011

Я использую ExamDiff Pro для всех моих файловых различий. Это графический анализатор.

http://www.prestosoft.com/edp_examdiffpro.asp

0 голосов
/ 14 января 2011

Если у вас есть только клоны в одном файле, и вы знаете, где они находятся, инструмент обнаружения клонов может быть излишним. Но их способность обнаруживать клонов и показывать их вам напрямую, кажется, именно то, что вы хотите.

Наша CloneDR имеет версию для Python. Если он находит клоны (даже в «одном и том же» файле), он показывает их вам изолированно и показывает, насколько они различаются в соответствии с правилами этого языка (Python), в отличие от простого макета, включая места, где клоны различаются и точно, как они меняются. (Насколько я понимаю, Atomiq обнаружит только клоны с одинаковыми текстовыми строками).

CloneDR работает под Windows просто отлично.

0 голосов
/ 14 января 2011

Beyond Compare * Сравнение текста имеет команду «Открыть буфер обмена», которая помещает все, что находится в буфере обмена, с одной стороны сравнения. Если затем скопировать вторую функцию и снова использовать команду, она выровняет их с выделенными различиями.

...