Подтвердить что ты не робот

Автоматическое обновление форматирования в Eclipse

Мы полагаемся на форматировщик Eclipse в нашем проекте для обеспечения соблюдения соглашений о форматировании для нас. Он отлично работает, и нам это очень нравится.

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

Есть ли способ заставить Eclipse автоматически использовать новую версию форматирования при обновлении файла форматирования? (Я имею в виду, можно ли просто сказать Eclipse "здесь путь к файлу форматирования, всегда используйте текущую версию этого файла как форматировщик"?) Было бы здорово!

Любые идеи?

4b9b3361

Ответ 1

Введение

Formatter, Code Templates и т.д. могут быть сохранены в качестве конкретных для проекта настроек в папке .settings/. Вам необязательно повторно импортировать Formatter в рабочее пространство.

Вы можете использовать специальные настройки проекта в сочетании с svn:externals для "вставки" форматирования, шаблонов кода и т.д. в ваши проекты.

svn: externals:

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

Проекты

  • У нас есть проект java с именем com.xyz.codeconventions, где мы добавили специфический для проекта форматтер и шаблоны кода. Этот проект находится под контролем версий.
  • Для всех других проектов мы определяем свойство svn:externals для "вставки" папки .settings/ из проекта com.xyz.codeconventions (Это папка, в которой хранятся конкретные данные проекта)
  • Если вы хотите изменить форматтер, вы можете отредактировать проект com.xyz.codeconventions и использовать svn commit для отправки изменений. Команда будет svn update для всех проектов, чтобы получить последнюю версию форматирования кода.

Конфигурация

Для всех проектов, которые должны использовать этот форматтер, вы должны определить свойство svn: externals.

Пример для com.xyz.project1:

key                   value
----                  ------
svn:externals         http://path/to/com.xyz.codeconventions/.settings .settings

В Eclipse (в моем случае Subversive) вы можете добавить специальные свойства svn с помощью Team -> Set property....

kNq2F.png

Макет репозитория

Структура хранилища в нашем случае выглядит следующим образом:

 <root>
   |
   +-- com.xyz.project1 # (svn:externals -> <root>/codeconventions/.settings .settings)
   |    |
   |    +-- src
   |    +-- <...> 
   +-- com.xyz.project2 # (svn:externals -> <root>/codeconventions/.settings .settings)
   |    |
   |    +-- src
   |    +-- <...> 
   +-- com.xyz.codeconventions
        |
        +-- .settings  # (this folder will get "injected" in project1 and project2)
             |
             +-- org.eclipse.jdt.core.prefs
             +-- org.eclipse.jdt.ui.prefs

Дополнительные комментарии/ограничения

  • Этот подход предназначен только для пользователей svn, но если вы используете git, то есть что-то похожее на svn: externals с именем Submodules.
  • Убедитесь, что в проектах1 и project2 нет .settings/ -папка, потому что с svn:externals невозможно перезаписать существующие файлы.
  • Если у вас есть java-проекты, которым нужны совершенно разные форматы или разные файлы в папке .settings/, этот подход, вероятно, не тот, который вы ищете. Наши проекты всегда имеют те же файлы .settings.

Источники

Ответ 2

Если я правильно понял ваш вопрос, вы хотите:

  • Все члены команды, имеющие одну и ту же конфигурацию checkstyle
  • Все члены команды автоматически в последней версии конфигурации после любых изменений

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

Вместо импорта файла непосредственно в eclipse вы можете настроить eclipse для использования удаленного файла конфигурации.

eclipse checkstyle preferences

Конфигурация будет применяться ко всем проектам в eclipse и будет актуальной. Весь процесс объясняется здесь Использование обычных правил проверки для команд. Это требует, чтобы все члены команды устанавливали eclipse один раз.

Если вы используете maven, с другой стороны, вы можете использовать maven-eclipse-plugin, чтобы описать, какой файл checkstyle использовать. Конфигурация будет готова только путем импорта проекта maven в eclipse.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
    <additionalBuildcommands>
        <buildcommand>net.sf.eclipsecs.core.CheckstyleBuilder</buildcommand>
    </additionalBuildcommands>
    <additionalProjectnatures>
        <projectnature>net.sf.eclipsecs.core.CheckstyleNature</projectnature>
    </additionalProjectnatures>
    <additionalConfig>
        <file>
            <name>.checkstyle</name>
            <location>${URL}/eclipse-checkstyle.xml</location>
        </file>
    </additionalConfig>
</configuration>
....

Подробную информацию о конфигурации maven вы можете найти в следующей статье Maven Checkstyle и Eclipse