Функция очистки и переформатирования кода ReSharper и системы управления версиями - PullRequest
8 голосов
/ 11 сентября 2008

Функция очистки кода ReSharper (с включенными « элементами переупорядочения » и « кодом переформатирования ») действительно великолепна. Вы определяете шаблон макета с использованием XML, а затем простая комбинация клавиш реорганизует весь исходный файл (или папку / проект / решение) в соответствии с правилами, установленными в шаблоне.

В любом случае, вы думаете, что это может быть проблемой в отношении VCS, таких как subversion, cvs, git и т. Д.? Есть ли вероятность, что это вызовет много нежелательных конфликтов?

Спасибо.

Ответы [ 9 ]

16 голосов
/ 11 сентября 2008

Да, это определенно вызовет проблемы. В дополнение к созданию конфликтов, которые должны быть разрешены вручную, при регистрации файла, который был переформатирован, VCS будет отмечать почти каждую строку как измененную. Это затруднит вам или вашему партнеру оглянуться на историю и посмотреть, что изменилось, когда.

Тем не менее, если каждый автоматически форматирует свой код одинаковым образом (т. Е. Вы распространяете этот XML-шаблон для группы), то он может работать хорошо. Проблемы действительно возникают, когда не все делают одно и то же.

7 голосов
/ 09 октября 2008
  • Просто переформатируйте все решение один раз
  • И убедитесь, что каждый разработчик использует Resharper
  • И убедитесь, что форматирование варианты являются общими и версионными (варианты обмена стилем кода)
7 голосов
/ 11 сентября 2008

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

Полагаю, я буду долго ждать.

2 голосов
/ 12 сентября 2008

Вы можете использовать StyleCop для обеспечения применения всеобъемлющего набора стандартов, который в значительной степени заставляет всех использовать одинаковые стили макета. Затем все, что вам нужно сделать, это разработать спецификацию стиля кода ReSharper, которая соответствует этому, и распространить ее среди сотрудников.

Я все еще жду, когда кто-то еще сделает это , и JetBrains прояснит все мелкие детали, которые не поддерживаются полностью, чтобы ReSharper в основном гарантировал полное соответствие StyleCop.

2 голосов
/ 11 сентября 2008

Это может определенно вызывать конфликты, поэтому я бы позаботился о том, чтобы вы не переформатировали файлы целиком, если над ними параллельно работают люди.

0 голосов
/ 23 марта 2010

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

0 голосов
/ 02 апреля 2009

Мы работаем над тем, чтобы работать с рефакторами на уровне исходного кода. Мы называем это Xmerge, и теперь он является частью Plastic . Это только первый подход, так как мы работаем над более продвинутыми решениями. Проверьте это здесь .

0 голосов
/ 11 сентября 2008

Я согласен с предыдущими ответами, в которых говорится, что конфликты возможны и даже вероятны.

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

0 голосов
/ 11 сентября 2008

Это определенно может вызвать конфликты.

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

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

...