Search
Write a publication
Pull to refresh

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.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.