Как стать автором
Обновить

Eclipse PDT 2.0 и удаленное редактирование файлов

Выход PDT 2.0 для Eclipse состоялся 31 декабря прошлого года, как новогодний подарок веб-программистам. Однако существует большие неудобства в работе с PDT 2.0, и они остались неразрешенными до сих пор.

Самое основное неудобство для меня – это работа PDT с удаленными файлами. Редактировать файлы на удаленном сервере, например по протоколу SSH, – это довольно распространенная задача для разработки на PHP. Если программист занимается поддержкой работающей объемной системы, то без удаленного редактирования кода обойтись практически невозможно.

В состав готового релиза All-In-One PDT 2.0 не входят средства для удаленно редактирования файла. Однако, это легко исправить, установив в Eclipse плагин Remote Systems Explorer (RSE). Плагин позволяет работать с файлами по всем популярным протоколам.

Проблема в том, что редактор PDT 2.0 очень плохо работает вместе с RSE. При открытии файлов с помощью RSE возникают следующие трудности:
  • Редактор PDT не выполняет проверку PHP синтаксиса, и поэтому не подсвечивает ошибки;
  • Полностью или частично не работает автодополнение: PDT не предлагает ни названия стандартных и определенных функций, ни переменных, ни классов;
  • Окно Outline остается пустым;
  • В список задач (окно Tasks) не попадают записи, отмеченные в коде с помощью phpDoc и директив todo.

Перечисленные проблемы приводят к тому, что пользы от PDT 2.0 при работе с удаленными файлами не больше, чем от блокнота Windows. При редактировании же локальных файлов, включенных в PHP проект, редактор PDT ведет себя вполне корректно.

В попытках решить данную проблему мне пришлось потратить немало времени на гугле, однако решения так и не было. В документации RSE указано о наличии проблемы, и способ ее решения заключается в создании локального PHP проекта и подключения к проекту удаленного каталога по ссылке. Такое решение является приемлемым только, если удаленный каталог не содержит большой объем данных. В противном случае, работа будет затруднительна, т.к. Eclipse будет часто самостоятельно выполнять обновление удаленного каталога – то есть загружать на локальный компьютер все его содержимое.

Другой способ организовать работу с удаленными файлами заключается в монтировании удаленного каталога к системе. Удаленный каталог в таком случае становится в системе дополнительным диском. Для Windows мне удалось организовать такой способ работы при помощи утилиты Dokan SSHFS. Этот способ можно использовать только для небольших проектов, потому что скорость работы с удаленными файлами низкая, а при большом объеме кода работа вообще становится невыносимой.

Мне удалось найти другое решение, которое решило все мои проблемы.

Плагин RSE создает в Eclipse свой проект, который называется RemoteSystemsTempFiles. Данный проект располагается обычно по пути C:\Users\user_name\workspace\RemoteSystemsTempFiles. В этом каталоге содержатся все файлы, которые RSE получает при работе с удаленными серверами.

Оказалось, что если проект RemoteSystemsTempFiles преобразовать в PHP проект, то PDT начнет полностью корректно работать с удаленными файлами. Для преобразования в PHP проект я отредактировал файл RemoteSystemsTempFiles\.project, добавил строки, отмеченные зеленым цветом.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>RemoteSystemsTempFiles</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.wst.validation.validationbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.dltk.core.scriptbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>

    </buildSpec>
    <natures>
        <nature>org.eclipse.php.core.PHPNature</nature>
        <nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
    </natures>
</projectDescription>


Также понадобилось добавить в каталог проекта RemoteSystemsTempFiles файл .buildpath.

<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
    <buildpathentry kind="src" path=""/>
    <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>


Теперь, когда RSE использует PHP проект, работа PDT 2.0 полностью нормализовалась:
  • Работает проверка синтаксиса;
  • Работает автодополнение;
  • Работает Outline;
  • Работают todo.

Работа проверялась на версиях PDT 2.0.0GA и 2.1.0M5 для Windows.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.