Как применить / использовать Perl::Tidy с существующим проектом Perl?

Этот вопрос не столько технический, сколько поиск советов, чтобы найти правильный подход, который не повредит.

Предполагая следующее:

  1. У нас есть большое приложение, разработанное на Perl.
  2. Мы хотим начать использовать perltidy в командной строке для наложения единого стиля / правил для форматирования
  3. У нас есть много веток, которые мы точно не знаем, когда будут объединены с основной веткой. Их тоже надо как-то прибирать до или после слияния
  4. Мы хотим избежать любых конфликтов в коммитах, вызванных форматированием.

Я думал о начале форматирования на уровне подпрограмм, но я не нахожу такую ​​возможность в perltidy. Есть еще одна функция " Пропуск выбранных фрагментов кода", но теперь я могу захотеть наоборот - форматировать только выбранные фрагменты кода. Идея состоит в том, что когда разработчик касается части кода, он / она будет приводить в порядок только измененную часть.

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

Позвольте мне также уточнить, что все в команде используют потенциально разные редакторы. Например я использую Sublime Text 3 с SublimePerlTidy. Другие люди используют Kate или Atom или VIM. Правильный подход, кажется, состоит в том, чтобы форматировать только те фрагменты кода, к которым мы прикасаемся, как указано @xxfelixxx (Спасибо!)

1 ответ

Решение
  1. Определите стандарт кодирования и создайте .perltidyrc поделиться со всеми разработчиками.
  2. Приведение в порядок должно быть одной из задач, которые команды выполняют для своих проектов (наряду с тестированием и проверкой кода), чтобы они могли приводить в порядок / тестировать / проверять код, к которому прикасались.
  3. Протестируйте код очень хорошо. Приведение в порядок может привести к незначительным ошибкам, поэтому лучше в небольших управляемых количествах (в отличие от просто приводить в порядок всю кодовую базу и удивляться, почему что-то перестало работать...)
  4. Tidy коммиты должны быть самостоятельными, без каких-либо других изменений, чтобы регрессии могли быть связаны с изменениями кода или аккуратными изменениями соответственно. git bisect отлично подходит для поиска оскорбительных коммитов.

Что касается моего собственного использования perltidy, то, используя emacs, я стараюсь убирать куски кода за раз, выделяя область (создавая метку с помощью C-space, навигация, чтобы выделить регион, а затем работает M-p который я сопоставил perltidy-region, Чтобы заставить это работать, установите perltidy и добавьте следующее к вашему .emacs файл:

(defun perltidy-region ()
    "Run perltidy on the current region."
    (interactive)
    (save-excursion
      (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
(defun perltidy-defun ()
    "Run perltidy on the current defun."
    (interactive)
    (save-excursion (mark-defun)
    (perltidy-region)))

(global-set-key "\M-p" 'perltidy-region)
Другие вопросы по тегам