2011-01-22 7 views
8

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

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

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

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

Который должен стать:

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

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

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

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

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

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

+0

Я не знаю, реорганизовывать инструменты, которые могут сделать это, однако, я знаю, что [Checkstyle] (http://checkstyle.sourceforge.net/) может обнаруживать и предупреждать о венгерских обозначениях. – BalusC

+0

Можете ли вы не заглядывать в [astyle] (http://astyle.sourceforge.net/)? – Uroc327

ответ

-2

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

+3

OP специально запрашивал инструмент рефакторинга. FindBugs (и CheckStyle) - нет. – BalusC

+1

Я согласен с BalusC – Krishna

0

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

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

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

0

Похоже, что-то вроде Jalopymay help.

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

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

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

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

+0

Кажется, что этот проект имеет больше превью, чем большие пальцы. :) – limc

+0

Что касается большого пальца вверх/вниз, я бы взял это с солью. Большинство людей с большими пальцами либо, похоже, фактически не использовали его, или жалуются, что он не интегрируется с более новыми версиями Netbeans. Он может работать автономно, его не нужно интегрировать с IDE (хотя это приятно иметь). Я не использовал его сам через год или два, но это было довольно хорошо. Кроме того, есть коммерческие варианты, если вам это действительно нужно (хотя я не вижу, чтобы пробная версия на сайте Triemax, которая кажется глупой, должна по крайней мере иметь возможность опробовать то, что нового, и увидеть разницу). –

1

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

+0

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

2

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

0

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