Настройка проверки кода GWT в Eclipse

Я собираюсь начать с некоторых конкретных вопросов, которые у меня есть, и следовать за ними с контекстом:

  • Как я могу контролировать настройку проверки кода GWT в eclipse?
  • Что делает проверка кода GWT?
  • Когда он сканирует классы Java, выполняет ли он загрузку классов?
  • Почему он сканирует классы, которых нет в клиентских/общих пакетах? И как я могу остановить это?

Я использую Eclipse Juno. Недавно другой член моей команды обновил наш проект с GWT 2.4 до 2.5, и первым эффектом, который я заметил, было то, что проверка кода GWT потребляла ресурсы, останавливала мое рабочее пространство и, в конечном итоге, завершалась ошибкой кучи java, что вынуждало меня убить затмение.

Имейте в виду, у меня было много кучи, настроенной в моем eclipse.ini, а именно: -Xms256m -Xmx1536m

Тем не менее, чтобы восстановить контроль над своим рабочим пространством, я снял флажок Project --> Build Automatically, настроил eclipse для отображения использования кучи с помощью Preferences --> General --> Show Heap Status и увеличил размер кучи в eclipse.ini до -Xms2048m -Xmx3072m просто в качестве эксперимента, чтобы посмотреть, что произойдет.

После этого я снова открыл eclipse и разрешил ему собираться автоматически, обращая пристальное внимание на индикатор выполнения, когда он выполнял фазу проверки кода GWT, и на размер кучи: он карабкался, карабкался и карабкался, наконец, где-то достиг пика к северу от потребляемого 2G. В конце концов, он завершился (хотя это заняло слишком много времени, совсем не разумное количество времени). В течение минуты после того, как это было сделано, огромная сборка мусора уменьшила кучу всего до 300 мегабайт.

То, что я увидел под индикатором выполнения, было более интересным: проверка кода GWT сканировала каждый файл *.java во всем моем проекте: не только те, которые находятся в пакетах client и shared, а все. Я видел имена классов, которые компилятор GWT не увидит и через миллион лет.

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

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

Есть ли способ настроить эту проверку, чтобы она была более экономной в отношении того, что она сканирует?


person pohl    schedule 17.12.2012    source источник
comment
Это впечатляющий анализ. Мы просто сняли флажок и избежали проверки GWT при обычной автоматической сборке. Настройки -> Проверка -> Приостановить все валидаторы. Мы предпочитаем, чтобы компилятор GWT выполнял проверку на нашей сборочной машине, а не выполнял проверку GWT на рабочей станции. Было бы интересно узнать, найдет ли этот поток вопросов и ответов какое-либо другое решение.   -  person appbootup    schedule 18.12.2012


Ответы (2)


Я просматривал документацию Eclipse Validator. В нем говорится, что валидаторы сборки проекта могут разрешать настраиваемые фильтры. http://www.eclipse.org/webtools/wst/components/validation/ValidationOverview.html

Однако я не могу найти для него ничего подходящего в исходном коде GPE @ http://code.google.com/p/google-plugin-for-eclipse/source/search?q=validator&origq=validator&btnG=Search+Trunk

Тем временем мы придерживаемся отключения всех проверок от eclipse, используя «Настройки» -> «Проверка» -> «Приостановить все валидаторы».

person appbootup    schedule 27.12.2012

Вы должны отключить проверку ваших скомпилированных файлов JavaScript. Это помогает решить проблему с производительностью Eclipse: https://stackoverflow.com/a/19909401/1040124

person Jens    schedule 12.11.2013