Eclipse

индекс
92,45

Eclipse Tips #1

imageПопробую начать новую рубрику, в которой буду рассказывать о трюках и хитростях при работе с Eclipse, программируя на Java. Сегодняшний разговор будет о расширения, которые, на мой взгляд, помогут Вам в разработке.

Для начала, качаем Eclipse, кто еще не скачал — http://www.eclipse.org/downloads/

* Aptana Studio for Eclipse
Aptana Studio — это швейцарский нож для web разработчика. Она включает в себя редакторы кода для HTML, CSS, JavaScript, php. Имеет встроенную поддержку многих ajax-библиотек, встроенный ajax-сервер jaxer.

* Cypal Studio for GWT
Cypal Studio упрощает разработку GWT-приложений, помогает создать модуль и удаленную службу, компилировать в JavaScript, развернуть приложение на внешнем сервере.

* FindBugs
Этот плагин использует статический анализ кода для поиска багов в коде приложения на Java

* PMD
PMD проверяет исходный код и ищет потенциальные проблемы такие как:
* Различные баги — пустые конструкции try/catch/finally/switch
* “Мертвый код” — неиспользованные переменные, параметры, методы
* Неоптимальный код — использование String/StringBuffer
* Дублирование кода — копии кода иногда приводят к копии ошибок

Продолжение обязательно последует…
_________
Текст подготовлен в ХабраРедакторе
+39
24 сентября 2008, 16:45
61

комментарии (79)

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
+1
gAmUssA #
Ок! Внял вашему совету. Буду продолжать…
+8
Semi #
кросспостить? ))
+7
Holy_Cheater #
По мне дак приятнее читать статью сразу на хабре, чем по переходу на сайт автора :)
+9
Mekras #
Хочется высказать небольшое «фи» в сторону Aptana Studio. Сам долгое время ей пользовался в основном из-за возможности синхронизации файлов с удалённым сервером. Но со временем стали раздражать, казавшиеся в начале незначительными, мелочи. Вроде невозможности выполнять синхронизацию в фоне, невозможности понять какие файлы изменились, без выполнения полной синхронизации, частичного сравнения выбранных директорий.

После долгих поисков и проб установил FTP and WebDAV support. Поиски были долгими, потому что долгими, потому что на официальном сайте на эту поддержку, похоже, забили. Нашёл здесь: www.jcraft.com/eclipse-sftp/ Там же нашёл плагин для синхронизации по SFTP.
+1
breeze #
Спасибо! давно искал нечто подобное ;) надеюсь работать с удалённым сервером станет чуточку проще ;)
+1
alecksey #
Думаю в данном случае проще и удобней было развернуть систему контроля версий.
Я лично отдаю предпочтения SVN)
0
Mekras #
Я тоже использую SVN, но это совершенно другой инструмент для других целей. С помощью SVN ведётся разработка сайта, внесение изменений в тестовую версию. Но ведь надо потом эти изменения перенести на боевой сайт. И вот тут самое место для использования FTP и SFTP синхронизации.
+1
amorphis #
А, почему бы не воспользоваться, так называемыми хуками (hooks)? Например, иметь отдельную branch для разработки и тестирования, а при комите в trunk вызывать этот самый hook, который и заливал бы файлы по ФТП на ваш боевой сайт?
Причём, настроить и дописать этот хук можно таким образом, что если соединения по ФТП не произошло, то и репозиторий не обновился (на всякий случай), а если произошло, то заливаются зменённые файлы и потом обновляется репозиторий? :)
0
Mekras #
На одном из тестовых серверов у нас так и сделано. Правда для CVS. Но такой способ
а) привязывает к репозитарию;
б) лишает гибкости;
в) завязывает разработчика на администратора репозитария

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

Но когда работа ведётся над десятком проектов, и этот десяток меняется каждые месяц-два, то такой подход будет скорее тормозить процесс чем способствовать его продвижению.

Не все файлы хранятся в репозитарии. Не всегда после коммита надо обновлять клиентский сайт.
0
alecksey #
Покажите пример, когда не все файлы хранятся в репозитарии.

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

З.Ы. Файл можно еще синхронизировать с помощью rsync)
0
Mekras #
> Покажите пример, когда не все файлы хранятся в репозитарии.

Как правило это файлы данных и конфигурационные файлы (с явками, паролями и т. д.). В репозитарий идёт конфигурация разработчика или тестового сервера. Да, я читал статью про то, как хранить разные конфигурации в SVN. Но, повторюсь, а зачем, если есть более простые способы?

Хочу внести немного ясности. Я не против SVN, я против использования SVN для всего и вся.
Каждой задаче — свой инструмент. Я считаю так.

Версионирование и совместаня разработка? — SVN
Синхронизация с хостингом? — FTP или SFTP
Попить кофе? — даже если бы Eclipse умел варить кофе (о чём писали ниже), я всё же выбрал бы кофеварку :-)

Во всяком случае с SVN + FTP у меня больше возможностей и меньше ограничений чем только с SVN. Да и вообще проще работать. А если проще работать, значит я больше времени и внимания могу уделить непосредственно работе. Именно это, в конечном счёте, и надо. Не так ли?
0
alecksey #
Для явок, паролей и прочей инфы, можно поставить svn: ignore )
Ну а в целом прав, кому как удобней, особенно когда это хостинг, а не свой сервер.

Раз уже речь зашла и разных способах синхронизации, возможно есть идеи по синхронизации БД?)

З.Ы. Eclipse не умел бы варить кофе, но можно сделать плагин для управления кофеваркой: D
0
Mekras #
Увы. Средства для синхронизации БД ищу давно и безуспешно.
0
errno #
Да, это проблема, я по совету от Postgres-гуру пробовал apgdiff.sourceforge.net/, но как то оно неочень помогло решить проблему поддержки N систем и синхронизации схем. Вывод у него плохо читаемый, да и выполнится полученый скрипт не захотел :( Не исключено, что я его просто неправильно готовил, може у вас получится.
0
gAmUssA #
Коллега, посоветуйте где про эти hooks можно почитать?
0
alecksey #
Основной тоже можно с помощью SVN синхронизировать, или создавать патчи)
0
Mekras #
Я прошу прощения, но можно ещё патчи на дискетках по бумажной почте передавать :-) Но только зачем? Если есть удобная и простая возможность синхронизировать удалённые файлы с рабочей копией точно так же как и с репозитарием? Или просто нет таких преград, которые мы не могли бы перед собою поставить? :-)
0
errno #
Для загрузки кода на удалённое тестовое окружение лучше использовать Target Management (видео-урок по TM и Xdebug — vimeo.com/1210740). А для синхронизации (слияний) с кодом других разработчиков хорошо испольвовать SVN, для работы с ней в Eclipse есть плагин Subclipse (http://subclipse.tigris.org/).
0
Mekras #
TM пробовал, вещь хорошая, но не совсем то, что нужно мне. Да, он позволяет работать с удалёнными системами, но не так удобно (для моих целей), как FTP и SFTP синхронизация, которая использует для этого Synchronization View (как и SVN). Собственно про SVN см. выше: habrahabr.ru/blogs/eclipse/40785/#comment_992908
+1
Devgru #
«* Неоптимальный код — использование String/StringBuffer»
А чем это у нас SB неоптимальный? Не ткнёте в информацию?
+2
yaneblog #
Тем, что String при изменении плодит каждый раз новую строку в пуле строк, а StringBuffer этого не делает, но он синхронизирован со всех сторон.

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

ИМХО, сомнительная фича :)
Я так и не понял, что значит «Неоптимальный код».
+1
Devgru #
Про стринг знаю, просто не знал чем неоптимален буфер.
+1
Lucky_spb #
Я не думаю, что PWD проверяет неоптимальность билдера по сравнению с буффером, т.к. обе класса могут спокойно использоваться и не PWD решать, должен быть этот объект синхронизированным или нет.

Неоптимальность использования Стринга по сравнению с SB (и билдером, и буффером) он может проверять
+1
iZENfire #
Вы .class-файлы декомпилировали когда-нибудь?
Там все вхождения string1+string2+… компилятором автоматически заменяются на new StringBuilder().add(string1).add(string2)… toString();
если target=1.6 и 1.5.
И на new StringBuffer..., если target=1.4
0
Lucky_spb #
Не был в курсе. Спасибо
0
Devgru #
А чем их можно декомпилировать?
0
iZENfire #
javap — The Java Class File Disassembler
java.sun.com/javase/6/docs/technotes/tools/windows/javap.html
+1
flamefork #
+1
flamefork #
Сорри, это в ответ на «А чем это у нас SB неоптимальный? Не ткнёте в информацию?»
+2
bmm #
«Она включает в себя редакторы кода для HML, CSS, JavaScript, php»
Опечаточка у вас…

И было бы интересно, под какой-то конкретно язык вы настраиваете Eclipse, или так, в общем?
+1
gAmUssA #
настраиваю Eclipse под web-разработку. разрабатываю приложенице j2ee, морда на gwt
+1
gAmUssA #
поправил
+3
trix #
вообще-то хитрости лучше начинать с самого Eclipse, ибо их там хватает без всяких сторонних плагинов.
рекомендую заглянуть в соответствующий раздел помощи и сделать перевод, если так неймется что-то про эклипс написать
0
gAmUssA #
Ок, обязательно учту в последующих статьях
+2
khizhaster #
«при работе с Eclipse»
Допишите, пожалуйста, что топик касается только Java. Ибо я на Eclipse работаю с С/С++ и Perl и эти расширения мне однозначно не нужны :) (разве что Aptana универсальна).
Либо же включите разнообразные плагины, а то все java да java. :)
0
Sap_ru #
Спасите помогите. Ищу кросплатформенную среду для C++. СИльно нравится eclipse CDT, но бесит один глюк — не удаётся удалить из проекта ненужные фалы. Например у меня есть проект, в папках которого есть всякого рода файлы, которые не должны отображаться в дереве файлов проекта. Все попытки удалить их из eclipse кончились полным крахом. «Exclude from make» не работает. Ручное прописывание фильтров тоже не работает — что делать?!!!
0
easterism #
Клевая тема, можно и развить
Я юзаю Zend for Eclipse + Aptana. Хотел бы узнать у кого еще что стоит.
+2
Cellard #
Извольте.
Eclipse используется для разработки web приложений.
На работе от лицензии на Zend отказался в пользу PDT. Дистрибутив беру на zend.com/pdt — с интегрированным дебагером. Из расширений:
Aptana — редко и только для работы по FTP. HTML, XML и CSS редакторы, на мой взгляд, прекрасны и в штатном WTP.
Для JavaScript — JSEclipse (http://labs.adobe.com/technologies/jseclipse/)
QuickREx для регулярных выражений.
Subclipse для синхронизации с SVN репозитарием.
PHPDocumentor (для создания документации) и SimpleTest (аналог UnitTest) использую по большим праздникам.
Mylyn стоит, но не используется, т.к. не прижился багтрекер.

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

Вопрос к вам лично: зачем вам Aptana? Что в ней есть такого, чего не хватает в Zend for Eclipse?
0
easterism #
Спасибо за комент. Aptana ради Javascript. Форматер, валидатор там лучше чем в стандартном, imho, + XML, CSS + средства поиска лучше чем стандартные. Но с Вашей подачи попробую JSEclipse.
SVN, PHPDocumentor есть в зенде
QuickREx да, забыл написать, просто потому что почти его не юзаю
0
gAmUssA #
Subclipse тоже пользую активно. Eclipse имеет встроенную поддержку CVS
0
gAmUssA #
Ходил по вашей ссылке на JSEclipse. Там написано, что он является тепрь частью FlexBuilder
0
Cellard #
Я даже перепугался. Но вот он, жив, курилка — www.interaktonline.com/Products/Eclipse/JSEclipse/Installation-Update/
0
gAmUssA #
Спасибо, немного погуглив, пришел к тому же сайту
0
vybe #
Сейчас вот ставлю PMD… Чесно говоря страшно представить, какое количество мертвого кода/дублируемости и не оптимальности он мне выдаст для старючего проекта в 2000+ файлов кода, написанного с десятком различных людей…
Как бы этот плагин не совершил суицид…
0
gAmUssA #
Обязательно поделитесь результатом
0
joedm #
0
joedm #
Ээээ… хабр сожрал коммент. Я хотел сказать, что стоит посмотреть в сторону GWT Designer. Умеет создавать модуль, деплоить и ещё много чего. Ну и морду рисовать им можно. ;)
0
gAmUssA #
Морду рисовать дизайнером — не наш путь. Пробовали и GWT Designer. Он платен и пока (смотрели около 4х месяцев назад)не нравится
0
joedm #
а чем конкретно не понравился?
0
gAmUssA #
Конкретно не вспомню уже. Да и так уже привык. Вы знаете, страдает все теми же недостатками, что все визуальные дизайнеры форм. Это даже в последнем подкасте The art of programming (http://taop.rpod.ru/78122.html) говорили.
Во всяком случае, попробую глянуть, может что и изменилось
0
gAmUssA #
Cypal Studio предоставляет тот необходимый минимум, который как раз нам пока и нужен.
0
Lucky_spb #
Для проверки качества кода мы на проекте используем checkstyle плагин.
Довольно мощный и удобный в работе.
0
Lucky_spb #
0
gAmUssA #
Попробую, спасибо за ссылку
0
dyakov #
Люди, может кто подскажет…
Как настроить eclipse на «Открыть с помощью...» и можно ли?
Эклипсом пользуюсь уже долго, всем нравится, но вот этой возможности не хватает :)
+1
amorphis #
Если имеится ввиду, что бы при клике на файле «Открыть с помощью...» он открывался в Eclips'е в нужном редакторе, то этого сделать нельзя.

Считайте одним из недостатков Eclips'a.

З.Ы. Ну, или мне в данный момент не известно. :)
0
dyakov #
Да именно это
Большое неудобство)
0
alexeyshockov #
Возможно, я Вас не понял, но AnyEdit – не то, что вам нужно?
0
amorphis #
Возможно.

Потому, что имелось ввиду, что если вы кликаете на файл и выбираете «Открыть с помощью...» Eclips, то запускается сам Eclips, но выбранный файл не открывается ни в одном из, настроенных на этот тип файлов, редакторах.
0
alexeyshockov #
Да, не понял :) AnyEdit здесь не поможет.
0
ItGold #
О, и у меня еще много вопросов про Eclipse!
Как навесить hot-key на action «Extract Constant»?
Есть ли хоткей, чтобы перейти к следующей ошибке в файле?
Есть ли возможность перейти в конкретную имплементацию метода в подклассе, если находишься в интерфейсе?
Как удалить плагин, который не понравился?
Можно ли две кнопки «Open file» и «Open folder» заменить на «Open»? Это когда хочешь подключить исходники и не знаешь они в зипе лежат или в отдельной папке. И если не угадал, приходится весь путь сначала проходить другой кнопкой.
И наконец можно ли убрать эту гадость?
Спасибо.
0
ItGold #
я про вот эту гадость <!-- -->
0
alecksey #
Насчет Extract Constant
Идем в Window->Preferences->Generak->Keys
В фильтре вводим «Extract Constant», выделяем, фокусируем поле Binding,
зажимаем требуемую комбинацию клавиш, появляет поле When, выбираем «Editing Text».
Сохраняемся)

А вобще-то, неплохо было б, если кто-то перевел и сделал сводную таблицу все горячих клавиш Eclipse.
0
quarantino #
Shift-Control-L?
0
ItGold #
А это для мазохистов. Проще уж правой мышкой кликать и выбирать из меню.
0
ItGold #
если ввожу в фильтре Extract Constant, он ничего не находит :(
у меня эклипс 3.3.1.1
0
alecksey #
У меня:
Version: 3.3.2
Build id: M20080221-1800

0
ItGold #
Спасибо, надо попробовать.
+2
dpritula #
1. PDT для php-разработки
2. JSEclipse для javascript
3. QuickREx для регулярных выражений
4. Subclipse для работы с SVN репозиторием
5. RSE (Remote System Explorer) для SSH, FTP, local drives
6. Eclipse Instant Messenger Plugin (ICQ)
7. Orfeus player (muzic)
8. Eclipse-games (играю)

Жаль, Eclipse кофе не готовит.
В удовольствие — кроме Eclipse и Opera для разработки ничего другого вообще не запускаю. Если запускаю — уже рутина.
0
AstonMartin #
Подскажите, как в PDT сделать автодополнение php-кода сразу, без нажатия ctrl+space?
И как поставить PDT на Eclipe 3.4? Через downloads.zend.com/pdt он не ставится, а на zend.com сборка «все в одном» с Eclipse 3.3.
0
gAmUssA #
а вы ссылку браузере откройте, станет ясно что на update site лежат пока старые версии. надеемся, что это пока временно
0
gAmUssA #
это я про downloads.zend.com/pdt
0
gAmUssA #
а тут туториал с оффсайта Eclipse 3.4 / Ganymede / PDT 2.0
0
AstonMartin #
похоже для версии 2.0 они еще не успели сделать паккаджи «все в одном», с дебагером и прочим
0
AstonMartin #
А как бы вы сравнили удобство использования:
0
AstonMartin #
имел в виду:
для HTML&CSS: Eclipse vs DreamWeaver
для PHP: Eclipse vs Zend Studio
0
Vii #
Никто не знает какой-нибудь чудо плагин для автоматического определения кодировок файла (у нас проекты разных времён могут быть cp1251 или utf-8, и пока всем сразу перейти на utf-8 не получается :(( )? Или хотя бы как-нибудь настроить, что бы текущая кодировка выводилась в строке состояния.

На форуме aptana когда-то поднимался такой вопрос — разработчики сказали что подумаю, но пока что-то не особо…

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