Зачем IntelliJ нужен плагин Lombok? - PullRequest
0 голосов
/ 30 августа 2018

Насколько я понимаю, Lombok использует процессоры аннотаций Java для генерации дополнительных методов.

С Maven 3.5 он работает отлично, без добавления каких-либо дополнительных настроек, просто добавьте зависимости в Lombok и добавьте некоторые аннотации, такие как @Getter, @Setter.

Однако, если я открою этот проект в IntelliJ IDEA 2018.2, все случаи использования сгенерированных методов получения / установки будут выделены как ошибки. У меня включена обработка аннотаций, я пытался построить проект в IntelliJ или встроить в Maven, а затем использовать в IntelliJ, но для этого по-прежнему требуется плагин Lombok, чтобы избежать ложных ошибок.

Это какая-то ошибка? Ошибка в рабочем процессе? Или, может быть, Lombok использует не только процессоры аннотаций, но и некоторые другие вещи, которые я не знал, и поэтому IntelliJ + javac не может понять, как с этим справиться? Было бы странно, так как сам javac компилирует эти файлы без ошибок

Я знаю, что есть много вопросов "У меня есть ошибки при использовании Lombok" и ответы типа "использовать плагин". Я не спрашиваю, должен ли я использовать плагин, но почему я должен его использовать, почему IntelliJ не может справиться с этим без плагина, в то время как javac делает

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Это потому, что подсветка синтаксиса IDEA использует внутренний анализатор Java. Если бы IDEA использовал только javac, он не смог бы выделять синтаксические ошибки при вводе. Он также дает гораздо лучшие подсказки о неправильном коде, поэтому каждая конструкция, функция или аннотация Java должна быть реализована командой JetBrains или для этого есть плагин, как в этом случае.

Параметр обработки аннотации предназначен только для построения проекта, который выполняется с помощью javac, но не для подсветки синтаксиса.

0 голосов
/ 30 августа 2018

Ale IDE используют плагин lombok, будь то intelij-idea или eclipse. javac отлично работает с ним - но помните, что он работает, когда, например, вы строите свой проект с mvn clean package. Затем, когда у вас есть IDE - он работает иначе - код не обрабатывается, как в задаче сборки.

Плагин сообщает IDE, что это за аннотация и какой код он генерирует под капотом без необходимости javac.

0 голосов
/ 30 августа 2018

Механизм анализа кода IntelliJ не использует javac и не запускает процессоры аннотаций. Вместо этого IntelliJ использует собственный анализатор Java и логику разрешения ссылок и создает собственную модель кода. Плагин Lombok расширяет модель кода, предоставляя информацию о объявлениях, сгенерированных процессором аннотаций Lombok.

...