Есть ли способ конвертировать несколько объявлений переменных в одну строку?
В Eclipse есть ли способ автоматического преобразования:
int myX, myY, myZ;
... к этому...
int myX;
int myY;
int myZ;
Я думал, что могу сделать это из настроек "Очистить" и "Порядок сортировки участников", но не разбивает несколько объявлений на одну строку. Есть ли способ сделать это?
Изменить: уточнить, это касается переменных-членов.
Ответы
Ответ 1
Пока я не знаю, выполняет ли одна из этих функций, вы можете получить аналогичные результаты несколькими нажатиями клавиш:
-
Выделите строку, содержащую определения нескольких переменных, и используйте функцию Найти/заменить (клавиша: Ctrl-F
), чтобы заменить последовательность запятой на точку с запятой, пробел и тип переменной. Убедитесь, что область задана как "выбранные строки", как показано на следующем снимке экрана:
![Find replace dialog]()
-
Теперь у вас будет строка со всеми объявлениями переменных в одной строке. Это можно устранить, выделив ту же строку и функцию Источник > Формат (клавиша: Shift-Ctrl-F
).
![Source format menu]()
-
Все сделано, теперь у вас есть переменные с их соответствующим типом, по одному в строке:
![All done]()
Ответ 2
Для этого нет встроенной опции очистки или форматирования (что меня удивляет). Однако написать плагин, чтобы сделать это, было бы не очень сложно. Для справки, вы должны начать с этой точки расширения. Класс org.eclipse.jdt.internal.ui.fix.VariableDeclarationCleanUp
выглядит как потенциальный, который можно изучить в качестве примера и руководства.
Ответ 3
Eclipse не предоставляет эту функцию форматирования из коробки. Вы можете использовать плагин Checkstyle
для проверки этого и многих других стандартов кодирования.
В конфигурационном файле Checkstyle используйте модуль MultipleVariableDeclarations
, как это,
<module name="Checker">
<module name="TreeWalker">
<property name="cacheFile" value="target/cachefile"/>
<property name="tabWidth" value="4"/>
...
<module name="MultipleVariableDeclarations"/>
...
</module>
</module>
Если вы в порядке с инструментом командной строки, то astyle
и GC GreatCode
являются двумя хорошими форматировщиками кода.
GC GreatCode
задается как форматировщик кода C/С++, но он хорошо форматирует ваш код в этом сценарии.
В GC
опция разделения объявления переменной -code_split_decl_style
Исходный код:
String fileName, a, b, c;
С опцией -code_split_decl_style-1
:
String fileName,
a,
b,
c;
С опцией -code_split_decl_style-2
:
String fileName;
String a;
String b;
String c;
Вы можете играть с различными инструментами форматирования и конфигурацией командной строки для разных языков в одном инструменте графического интерфейса, используя UniversalIndentGUI
.
Checkstyle: http://checkstyle.sourceforge.net/
Astyle: astyle.sourceforge.net/
GC GreateCode: http://sourceforge.net/projects/gcgreatcode/
UniversalIndentGUI: universalindent.sourceforge.net/
Ответ 4
Eclipse, похоже, не обеспечивает функцию для этого, и я не нашел плагин, который делает это. Но, предполагая, что у вас есть доступ к awk, вы можете найти этот маленький awk script полезным:
{
if (match($0,/([a-z|A-Z|0-9|_]+)\s+(([a-z|A-Z|0-9|_]+)\s*,\s*)+([a-z|A-Z|0-9|_]+);/)) {
match($0,/(\s*[a-z|A-Z|0-9|_]+)\s+([^;]*)/,components);
split(components[2],vars,",");
for(i in vars) {
gsub (/'[[:cntrl:]]|[[:space:]]|\x20/,"",vars[i])
print components[1],vars[i]";"
}
}
else {
print $0;
}
}
Он выполнит требуемую работу. Предполагая, что вы сохраните его в файле script.awk, вы бы назвали его следующим образом
awk -f script.awk target_file.java
ПРИМЕЧАНИЕ: вы должны направлять вывод в альтернативный файл, или ваш источник будет перезаписан (опустошен)
Итак, если вы хотите обработать несколько файлов за один раз, вы должны сделать это так (предполагая оболочку bash):
for f in *.java; do awk -f awk1.awk $f > $f.pr; done
Для каждого java файла это создаст новый файл с окончанием .java.pr, а затем вы просто переместите их в файлы с завершением .java.
================== РЕДАКТИРОВАНИЕ =================
Просто хочу добавить, что существуют плагины для Eclipse, которые поддерживают скрипты bash/awk в выбранном регионе. См. Здесь:
http://eclipseexeditor.sourceforge.net/
(вероятно, для старых для более новых версий Eclipse)
а также:
Bash script плагин для Eclipse?.
Итак, мой script в сочетании с одним из этих плагинов предположительно добавит запрошенную функцию к Eclipse.
Ответ 5
В Eclipse нет такой функции, о которой я знаю.
Я предполагаю, что вы программист на Java, и, следовательно, лучше всего написать простую программу, которая будет анализировать исходный код для такого шаблона и преобразовывать его в многострочный. Затем запустите очистку поверх нее, чтобы она была должным образом отформатирована по мере необходимости.