Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Выполнить код во время компиляции программы |
Автор: Karadul 9.4.2013, 05:44 |
Можно ли, во время компиляции проверить, например, валидный ли регексп/url? |
Автор: Killer_13 9.4.2013, 09:41 |
Если я не ошибаюсь, то нужно смотреть в сторону Reflection. |
Автор: Stolzen 9.4.2013, 10:24 |
Возможно, можно применить тот же подход, который используется в Project Lombok http://notatube.blogspot.co.uk/2010/11/project-lombok-trick-explained.html |
Автор: Stolzen 10.4.2013, 09:57 |
Ну мне кажется, что можно повесить хук, и во время компиляции каким-либо образом пройтись по AST дереву и для строк, если там регулярки, проверить их. Естественно, логичнее будет при этом помечать каким-то образом строки с регулярками, например, аннотацией. |
Автор: Karadul 10.4.2013, 10:27 |
А пример есть какой-то, или проще эту идею оставить? |
Автор: LSD 10.4.2013, 10:34 |
http://habrahabr.ru/post/88908/ |
Автор: Karadul 10.4.2013, 11:56 |
И что там? Как использовать аннотации? А как туда прикрутить проверку во время компиляции и как кидать ошибки? |
Автор: LSD 10.4.2013, 13:04 | ||
Тебе стоит задуматься над сменой профессии, например клининг-оператор. |
Автор: Karadul 10.4.2013, 14:13 |
Я просто не профессиональный жавалюб. А вот смотря на тебя, диву даешься, каким чепушилам модерку дают. |
Автор: LSD 10.4.2013, 14:19 |
Ты в принципе не профессионал, ты не может ни документацию прочесть, ни код написать. Только на хамиство тебя и хватает. |
Автор: Karadul 10.4.2013, 14:48 | ||
А помойму, это ты - хам, да еще и с модеркой. Я лишь спросил, нет ли чего-нибудь, с чем попроще разобраться. "В принципе не профессионал" - мосье знает, чем я занимаюсь? Или слово "профессионал" зарезервировали для себя жавалюбы? |
Автор: LSD 10.4.2013, 15:18 |
Ты спросил А когда я тебе дал ссылку на пример, ты заявил: Сразу видно, что ты внимательно все прочитал и разобрался. Ты занимаешься явно не своим делом. |
Автор: Karadul 10.4.2013, 15:28 |
И чем я занимаюсь и какое же мое дело? Интересно, тебя сюда зудеть поставили или ты это добровольно делаешь? |
Автор: LSD 10.4.2013, 15:30 | ||
Пытаешь программировать, это явно не твое призвание. Добавлено через 29 секунд
Уговорил, завязываем. |
Автор: jk1 10.4.2013, 23:50 | ||||||||
Если среди этого накала страстей кому-то еще интересна техническая сторона вопроса, то вот вариант на базе anootation processor'а: Сначала создадим marker-аннотацию
и процессор к ней
Теперь упакуем это в JAR и добавим в него файл /META-INF/services/javax.annotation.processing.Processor со следующим содержимым
на самом деле это просто полное имя нашего процессора аннотаций с пакетами. Теперь процессор готов и его можно подключать его к проектам, в которых мы хотим проверять Regexp'ы на валидность, например так:
если мы сделали все правильно и JAR с процессором есть в classpath, то компиляция файла пройдет только если regexp является валидным. Для наглядности приаттачу проект, где все собирается мавеном. |