Подтвердить что ты не робот

Обработчики, обработанные аннотацией Ошибки/предупреждения, которые не отображаются в редакторе Eclipse или в представлении "Проблемы"

Я написал обработчик аннотации клиента для генерации различных исходных файлов, завернутых в плагин Eclipse. В рамках этого процесса он также регистрирует различные ошибки и предупреждения с помощью обычного вызова ProcessingEnvironment#getMessager().printMesssage(Kind, String, Element).

Я тестировал процессор, отлаживая плагин в Eclipse. В запущенном подэкзамене Eclipse процессор работает как ожидалось - исходные файлы генерируются, подбираются и интерпретируются компилятором по желанию. Любые компиляторы (то есть нестандартные) ошибки в сгенерированных и не сгенерированных появятся в редакторе, "Проблемы" и т.д., Как и ожидалось.

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

  • Если ни один элемент не указан, все сообщения появляются в журнале ошибок в типе Info, независимо от типа, указанного при регистрации ошибки.
  • Если сообщение имеет вид NOTE, оно всегда появляется в журнале ошибок в типе Info, независимо от того, указан ли элемент.
  • В противном случае, если элемент указан, ошибки и предупреждения периодически появляются в представлении "Проблемы" и в редакторе; иногда они не появляются нигде. Они никогда не появляются в журнале ошибок, является ли тип ERROR или WARNING

В соответствии с вышеизложенным, настоящая проблема - пункт 3 - что в определенных ситуациях я просто не могу получить ошибки, чтобы появляться в редакторе, несмотря на то, что они вошли в действительные элементы. Фактически, мне удалось достоверно сделать ошибки и не появляться, просто изменив имя определенного сгенерированного исходного файла.

Конечно, проблема заключается не в самом имени файла, а в том, что создание класса с именем, которое соответствует ссылкам, уже имевшимся в коде, приводит к тому, что ошибки становятся скрытыми, в то же время генерируя их другим именем (или вообще не ) вызывает ошибки (как и все обычные ошибки компилятора, вызванные отсутствующим классом). Самое странное, что нет ничего принципиально иного в этом сгенерированном классе по сравнению с любым из других (которого их много), хотя он уникален по своей структуре и как он ссылается. Он также достаточно длинный (около 400 методов), но искусственное сокращение его не имело никакого значения. Другие сгенерированные классы также имеют существующие ссылки в коде и не подавляют ошибки.

К сожалению, я еще не успел проверить, возникает ли эта проблема при развертывании плагина Eclipse (т.е. работает в "реальном" экземпляре Eclipse), или действительно, если проблема возникает при вызове javac явно или вызывая сборку Maven.

Без публикации полного кода плагина я не ожидаю, что кто-то сможет напрямую помочь, но я очень открыт для любых предложений или советов, если у кого-то есть проблемы с ошибками, вызванными обработкой аннотаций. Мне кажется, как ошибка в Eclipse, но я не смог найти ссылку на нее в Интернете. Я также не могу найти никаких ошибок в файлах .metadata/.log как основного экземпляра Eclipse, так и запущенного подэкзамена Eclipse. Наконец, я убедился, что в коде процессора аннотаций не было исключено или не указано исключение.

Сведения о версии Eclipse:

Version: Luna Service Release 1a (4.4.1)
Build id: 20150109-0600

Любая помощь приветствуется и благодарит заранее:)

4b9b3361

Ответ 1

Если проблема/ошибка должна отображаться в представлении "Проблемы с Eclipse", вам необходимо создать маркер на конкретном ресурсе (файл/папка/проект). См. Следующие ссылки о том, как создавать маркеры в плагине Eclipse:

https://wiki.eclipse.org/FAQ_How_do_I_create_problem_markers_for_my_compiler%3F https://www.eclipse.org/articles/Article-Mark%20My%20Words/mark-my-words.html

С точки зрения того, как появляются пользовательские ошибки/предупреждения, представление "Проблемы" (или общий маркер) полностью гибко отображает/скрывает определенные элементы. Посмотрите меню "Настроить содержимое..." в представлении "Проблемы", чтобы получить больше информации.