Моя реализация AbstractProcessor
вызывается, даже если аннотированный метод содержит код, который приводит к ошибкам компилятора. (Т.е. процессор запускается при наличии аннотации, цель которой ElementType.METHOD
).
Немного поэкспериментировав, у меня сложилось впечатление, что синтаксические ошибки в теле метода приводят к тому, что AbstractProcessor не запускается, тогда как "ссылочные ошибки", fx пытается вызвать закрытый метод, который не может быть достигнут, действительно приводит к вызову AbstractProcessor.
Я рад, что вызывается AbstractProcessor, но мне нужно знать, аннотированный метод содержит какие-либо ошибки.
У меня два вопроса:
- Как мой код AbstractProcessor может узнать, содержит ли ExecutableElement мой метод ошибки? Мне известно о SuperficialValidation Google Auto, но я не могу заставить его обнаруживать эти ошибки - возможно, он работает только с TypeElements?
- Могу ли я быть уверен, что все версии компилятора имеют одинаковое поведение в отношении типов ошибок, препятствующих вызову AbstractProcessor, и какие из них позволят ему выполнить свой лог c?