2013-04-08 3 views
0

На связующей ошибки, я могу поднять соответствующий диагностический (скажем, MyDSL.MY_APPROPRIATE_DIAGNOSTIC), а затем записать в MyDSLQuickfixProvider, быстрое решение для него аннотирования это следующим образом:Автоматическая обработка ошибок/предупреждений

@Fix(MyDSL.MY_APPROPRIATE_DIAGNOSTIC) 
public void fixMyAppropriateDiagnostic(final Issue issue, final IssueResolutionAcceptor acceptor) { 
    ... 
} 

Что делать, если я хочу автоматически разрешить диагностику, т.е. автоматически выполнить IModification, не предлагая ее пользователю как быстрое исправление (представьте, что быстрое исправление для диагностики уникально)?

Есть ли способ связать (немедленный) код обработки с диагностикой аналогично тому, что происходит для быстрых исправлений пользователя?

Спасибо заранее, Marco

ответ

0

Там нет никакого способа установить быстрое решение будет выполняться автоматически. Ваши альтернативы:

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

  • Для некоторых проблем вы можете вместо этого создавать правила завершения или шаблоны кода. Они по-прежнему не полностью автоматизированы по требованию, но в принципе вы уже можете «исправить» частичный вход пользователя таким образом и не помечать нарушение для полного ввода.

+0

Спасибо за ваш ответ, Bananeweizen. :-) – user2258294

+0

Теперь мой вопрос следующий: если я хочу вызывать код разрешения маркера при поднятии ошибки, а соответствующий исходный код в редакторе подчеркивается (вместо этого), есть ли у вас какой-либо намек о том, где я мог бы подключить мой код обработки ошибок? – user2258294

Смежные вопросы