Как применить / использовать Perl::Tidy с существующим проектом Perl?
Этот вопрос не столько технический, сколько поиск советов, чтобы найти правильный подход, который не повредит.
Предполагая следующее:
- У нас есть большое приложение, разработанное на Perl.
- Мы хотим начать использовать perltidy в командной строке для наложения единого стиля / правил для форматирования
- У нас есть много веток, которые мы точно не знаем, когда будут объединены с основной веткой. Их тоже надо как-то прибирать до или после слияния
- Мы хотим избежать любых конфликтов в коммитах, вызванных форматированием.
Я думал о начале форматирования на уровне подпрограмм, но я не нахожу такую возможность в perltidy. Есть еще одна функция " Пропуск выбранных фрагментов кода", но теперь я могу захотеть наоборот - форматировать только выбранные фрагменты кода. Идея состоит в том, что когда разработчик касается части кода, он / она будет приводить в порядок только измененную часть.
Лучше всего было бы найти способ отформатировать весь проект один раз, не прерывая цикл разработки и следя за тем, чтобы мы не нарушали какую-либо часть кода (во время слияния). У нас есть модульные тесты, но некоторые части кода все еще могут быть раскрыты.
Позвольте мне также уточнить, что все в команде используют потенциально разные редакторы. Например я использую Sublime Text 3 с SublimePerlTidy. Другие люди используют Kate или Atom или VIM. Правильный подход, кажется, состоит в том, чтобы форматировать только те фрагменты кода, к которым мы прикасаемся, как указано @xxfelixxx (Спасибо!)
1 ответ
- Определите стандарт кодирования и создайте
.perltidyrc
поделиться со всеми разработчиками.- Приведение в порядок должно быть одной из задач, которые команды выполняют для своих проектов (наряду с тестированием и проверкой кода), чтобы они могли приводить в порядок / тестировать / проверять код, к которому прикасались.
- Протестируйте код очень хорошо. Приведение в порядок может привести к незначительным ошибкам, поэтому лучше в небольших управляемых количествах (в отличие от просто приводить в порядок всю кодовую базу и удивляться, почему что-то перестало работать...)
- 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)