Существуют ли какие-либо инструменты для рефакторинга стиля кодирования базы кода Java? - PullRequest
8 голосов
/ 22 января 2011

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

Так что я ищу инструмент, который позволил бы мне реорганизовать существующий стиль. Многие функции уже предоставляются стандартными инструментами форматирования кода, такими как изменение стиля отступа. Что мне не хватает, так это инструмент, который позволяет мне удалять префиксы имен полей и параметров. В некоторых проектах все члены имеют префикс «m», все параметры имеют префикс «p», а статические члены имеют префикс «s».

Инструмент должен быть в состоянии обрабатывать случаи как:

void setValue(String pValue) {
  mValue = pValue;
}

Что должно стать:

void setValue(String value) {
  this.value = value;
}

Инструмент должен генерировать предупреждение в случае, подобном этому:

void setValue(String pValue) {
  int value = 42
}

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

Редактировать

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

Ответы [ 6 ]

2 голосов
/ 23 января 2011

Я искал похожий или даже более продвинутый инструмент.Я пытался реализовать метрики дизайна, которые очень зависят от контекста.Я нашел некоторые инструменты, которые являются коммерческими и довольно дорогими, как Ndepend и рефлекк.Я также нашел несколько инструментов с открытым исходным кодом, которые так же, как Hammurapi.Существуют также такие инструменты, как Checkstyle, Findbugs и PMD, которые можно использовать для очень простых случаев использования.Лучший инструмент, который я нашел, был MoDisco.Он основан на Eclipse EMF, позволяет генерировать модель вашего кода, а затем выполнять некоторые запросы или преобразования (используя инструменты M2M).Единственная проблема, с которой я столкнулся, заключалась в том, что она довольно медленная для стандартных проектов ~ 20k LOC.Попробуйте, может, для вашего случая использования будет достаточно.

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

Вы уже опробовали инструмент Eclipse Clean Up ? Конечно, он не будет обрабатывать некоторые из ваших примеров, показанных здесь, но, на мой взгляд, он довольно неплохо справляется.

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

Eclipse IDE - лучший вариант для вашей проблемы.

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

Похоже, что-то вроде Jalopy может помочь.

Jalopy позволяет вам определить стиль формата кода, а затем он может прочитать файл, пакет или весь проект и переформатировать его. Я не помню, может ли он выполнить более сложный рефакторинг, например, изменить стиль локальной переменной, чтобы не использовать венгерскую нотацию (дерьмо mVar), но он может меняться между любым интервалом, брекетингом, упорядочением и т. Д., Который вы хотите.

Я использовал Jalopy в прошлом, и он работал хорошо. Я даже использовал его в командах, где люди имели разные стили персонального кодирования, а затем при коммите мы все согласовали определенный формат, который автоматически обрабатывался Jalopy. (Когда вы проверяете это, вы форматируете его по-своему, когда он возвращается обратно, он форматируется, команда согласовывает путь и т. Д.)

Одна проблема, похоже, что она не поддерживалась в течение года или около того. Но есть коммерческая версия тоже , которая намного новее - кажется, что усилия пошли в этом направлении. Тем не менее, более старая версия может быть в порядке.

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

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

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

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

Я понимаю, что это не идеальное решение. НО, если у вас достаточно большая кодовая база, это может быть более экономичным, чем все изменения вручную.

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

FindBugs - очень хороший инструмент для статического анализа кода.Он действительно исследует потенциальные ошибки и легко интегрируется в IDE и инструменты сборки.

...