Flash Builder 4 внезапно перестает выполнять автозаполнение для некоторых классов

#flash #apache-flex #autocomplete #air #builder

#flash #apache-flex #автозаполнение #air #Конструктор

Вопрос:

Проект, над которым мы неделями работали во Flash Builder, внезапно перестал быть навигационным: все приятные функции Flash Builder, такие как автозаполнение, переход к определению, даже поиск ссылок, работают только частично — они работают для некоторых классов, но не для других. Я пытался перезапустить Flash Builder, закрыть и открыть проект, заново создать проект, но эта плохая ситуация сохраняется. Более того, это произошло примерно в одно и то же время для двух других разработчиков в том же проекте, у каждого из которых была несколько иная конфигурация. Кажется, возможно, мы превысили какой-то внутренний предел FlashBuilder, но наш проект еще даже не настолько велик. Я не уверен, где я могу посмотреть, чтобы устранить это.

Комментарии:

1. Подсветка синтаксиса все еще работает для этих классов?

2. Раскраска синтаксиса работает для всех классов. Я все еще могу создавать, запускать и отлаживать. Однако при нажатии кнопки control будут отображаться ссылки только для определенных классов, а не для других, а те, которые он не покажет, кажутся случайными — это не так, как если бы они были в определенной библиотеке.

Ответ №1:

Обычно завершение работы Eclipse и повторный запуск решают проблему для меня. Но, вот еще несколько вещей, которые стоит попробовать:

  1. Поскольку это произошло на трех рабочих станциях, на отдельном наборе классов, вы искали странную или нестандартную синтаксическую ошибку? Я уверен, что видел ситуации, когда что-то не вызывало ошибки компилятора, но приводило к прерыванию кода, указывающего на прерывание. Я бы искал такие вещи, как одинарные кавычки внутри двойных кавычек или ASDocs, которые не завершаются должным образом. [Тем не менее, это кажется дико непоследовательным, так что это что-то вроде удара в темноте].
  2. Попробуйте очистить рабочее пространство. При запуске Flash Builder (или Eclipse) используйте аргумент ‘-clean’. Я делаю это с помощью ярлыка Windows; я не уверен, как это сделать на Mac
  3. Попробуйте воссоздать рассматриваемый компонент. Медленно копируйте код по частям, пока не выясните, что нарушает подсказку кода.

Комментарии:

1. Это случилось и со мной. Вот проблемный код, <mx:RegExpValidator expression="{'[1-9][0-9]{1,2}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'}" /> удаление { и } в expression свойстве решило проблему для меня 🙂

2. Это удаление фигурных скобок является решением не только для регулярного выражения — оно использовалось для быстрого «ограничения диапазона дат» в теге mxml DateField disabledRanges DateField. Это нарушило автозаполнение всех компонентов mxml, которые появились ПОСЛЕ этой части mxml (все автозаполнения верхнего компонента mxml работали нормально).

Ответ №2:

Это распространенная проблема в eclipse (он же Flash Builder).

Попробуйте увеличить доступную память для «кэширования типов» (я забыл конкретный термин). Вы можете сделать это, отредактировав файл FlashBuilder.ini в вашем flex home, чтобы он выглядел примерно так:

 -vmargs
-Xms64m
-Xmx1024m
-XX:MaxPermSize=1024m
-XX:PermSize=64m
  

(удалены нерелевантные параметры)

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

Вероятно, вам не нужно больше 512 мб при максимальном размере, но я работаю с особенно большим проектом с большим количеством зависимостей от открытых библиотек…

Ответ №3:

Удаление, а затем повторное добавление проекта, казалось, исправило это для меня.

Ответ №4:

У меня ничего из этого не сработало. Мое решение состоит в том, чтобы запустить textfactory в BBEdit (я на Mac), который заменяет каждую вкладку во всей моей кодовой базе четырьмя пробелами, затем другой, который делает обратное. Затем я обновляю свой проект в FB. Это изменение каждого файла, похоже, вынуждает FB перестраивать ссылки на него. Мне приходится делать это каждый раз, когда я запускаю FB. Я уверен, что есть лучший способ добиться этого из командной строки (хотя unix ‘touch’ не работает).

Ответ №5:

Я получил значительное улучшение, включив «Включить режим разработки»

Ответ №6:

У меня были те же проблемы, иногда даже автозаполнение кода зависало в пользовательских классах.

Я бы посоветовал вам попробовать удалить папку .codemodel из вашей рабочей области, смотрите Описания здесь:http://www.redcodelabs.com/2010/05/flash-builder-content-assist-did-not-complete-normally /

И позже, для повышения производительности, вы можете выполнить следующие действия: http://www.redcodelabs.com/2012/03/eclipse-speed-up-flashbuilder /

Ответ №7:

Это произошло, когда я добавил объявление модели в приложение MXML. Когда я прокомментировал это, автозаполнение снова сработало.

 <fx:Model id="testTextFlow">
    <flow:TextFlow version='3.0.0' xmlns:flow='http://ns.adobe.com/textLayout/2008' fontSize='11' 
        textIndent='10' paragraphSpaceBefore='6' paddingTop='8' paddingLeft='8' paddingRight='8'>
        <flow:p paragraphSpaceBefore='inherit' clearFloats='start'>
        <flow:img source="http://imgs.xkcd.com/comics/trapped.png" width="600" height="300" float="right"/>
        <flow:span>Bacon ipsum. Permanent link to this comic: http://xkcd.com/876/ Image URL (for hotlinking/embedding): http://imgs.xkcd.com/comics/trapped.png</flow:span>
        <flow:TextFlow version='3.0.0' xmlns:flow='http://ns.adobe.com/textLayout/2008' fontSize='15'>  
        <flow:p paragraphSpaceBefore='inherit' >Here is an embedded text flow.</flow:p>
        </flow:TextFlow>
        </flow:p>
    </flow:TextFlow>
</fx:Model>
  

Ответ №8:

Щелкните правой кнопкой мыши по классу и выберите «обновить», исправлена эта проблема для меня 🙂

Я также заметил, что он открывает странный второй класс, в котором подсказка кода не работает, когда вы нажимаете на гиперссылку на этот класс из другого класса. Если вы дважды щелкните ‘Class.as ‘ файл в дереве документов, тогда он работает нормально. Очень странно