java - Anotación Los errores/advertencias generados por el procesador no se muestran en el editor de Eclipse o en la vista Problemas
eclipse-plugin annotation-processing (1)
He escrito un procesador de anotaciones de clientes para generar varios archivos de origen, envueltos en un complemento de Eclipse. Como parte de este proceso, también registra varios errores y advertencias utilizando el llamado ProcessingEnvironment#getMessager().printMesssage(Kind, String, Element)
.
He estado probando el procesador mediante la depuración del complemento en Eclipse. En la sub-instancia lanzada de Eclipse, el procesador funciona como se esperaba: el compilador genera, recoge e interpreta los archivos de origen según lo deseado. Cualquier error del compilador (es decir, no personalizado) en el generado y en el no generado aparece en el editor, en la vista Problemas, etc., como se esperaba.
Sin embargo, estoy viendo muchas inconsistencias en cuanto a cómo aparecen los errores y advertencias personalizados. El comportamiento que veo es el siguiente:
- Si no se especifica ningún elemento, todos los mensajes aparecen en el registro de errores bajo la información de tipo, independientemente del tipo especificado al registrar el error.
- Si un mensaje es de tipo
NOTE
, siempre aparece en el Registro de errores bajo la información de tipo, independientemente de si se especifica o no un elemento. - De lo contrario, si se especifica un Elemento, aparecen intermitentemente errores y advertencias en la vista Problemas y en el editor; a veces no aparecen en ninguna parte . Nunca aparecen en el registro de errores, ya sea que el tipo sea
ERROR
oWARNING
Según el énfasis anterior, el problema real es el elemento 3: en ciertas situaciones simplemente no puedo obtener errores para que aparezcan en el editor a pesar de haber iniciado sesión en elementos válidos. De hecho, he logrado que los errores aparezcan de manera confiable y no aparezcan simplemente cambiando el nombre de un archivo fuente generado en particular.
Por supuesto, el problema no es el nombre de archivo en sí mismo, pero sí es cierto que generar la clase con un nombre que coincida con las referencias que ya están en el código hace que los errores se oculten, mientras que la generación con un nombre diferente (o no lo hace) causa errores para mostrar (así como todos los errores regulares del compilador causados por una clase faltante). Lo más extraño es que no hay nada fundamentalmente diferente en esta clase generada en comparación con ninguna de las otras (de las cuales hay muchas), aunque es única en su estructura y en cómo se hace referencia a ella. También es razonablemente largo (alrededor de 400 métodos), pero acortarlo artificialmente no hizo ninguna diferencia. Otras clases generadas también tienen referencias existentes en el código y no suprimen los errores.
Lamentablemente, todavía no he tenido tiempo de probar si este problema ocurre cuando se implementa el complemento Eclipse (es decir, se ejecuta en una instancia ''real'' de Eclipse), o si el problema ocurre al llamar a javac
explícitamente o invocar una compilación de Maven.
Sin publicar el código completo del complemento, no espero que nadie pueda ayudarlo directamente, pero estoy muy abierto a cualquier sugerencia o consejo si alguien tiene problemas de experiencia con los errores generados por el procesador de anotaciones. Me parece un error en Eclipse, pero no he podido encontrar ninguna referencia a él en línea. Tampoco puedo encontrar ningún error en los archivos .metadata / .log de la instancia de Eclipse subyacente o de la sub-instancia iniciada de Eclipse. Finalmente, me aseguré de que no haya excepciones suprimidas o informadas en el código del procesador de anotaciones.
Detalles de la versión de Eclipse:
Version: Luna Service Release 1a (4.4.1)
Build id: 20150109-0600
Cualquier ayuda apreciada y muchas gracias de antemano :)
Si se debe mostrar un problema / error en la vista Problemas de Eclipse, debe crear un marcador en el recurso en particular (archivo / carpeta / proyecto). Consulte los siguientes enlaces sobre cómo crear los marcadores en un complemento de 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
En términos de cómo aparecen los errores / advertencias personalizados, la vista Problemas (o la vista genérica de MarkersView) es completamente flexible para mostrar / ocultar ciertos elementos. Eche un vistazo al menú "Configurar contenido ..." en la vista Problemas para tener una idea más clara.