Las opciones de control del núcleo de JDT controlan el comportamiento de las características del núcleo, como pueden ser el compilador Java, el formateador de código, la asistencia de código y otros comportamientos del núcleo. Las API que permiten acceder a las opciones están definidas en la clase JavaCore. Se puede acceder a las opciones como grupo, de esta manera:
También se puede acceder a las opciones de manera individual mediante un nombre de tipo serie.
Las opciones están almacenadas en forma de tabla hash en la que figuran todas las opciones configurables conocidas junto con sus valores. Se han definido constantes de ayuda en JavaCore para cada ID de opción y los posibles valores de las constantes.
El siguiente fragmento de código restaura el valor de todas las opciones del
núcleo para que adopten sus valores por omisión, salvo una
(COMPILER_PB_DEPRECATION
), que se establece de forma específica.
// Obtener las opciones actuales
Hashtable options = JavaCore.getDefaultOptions();
// Cambiar el valor de una opción
options.put(JavaCore.COMPILER_PB_DEPRECATION, JavaCore.ERROR);
// Establecer las opciones nuevas
JavaCore.setOptions(options);
El siguiente fragmento de código conserva el valor de las opciones actuales y modifica
el de una sola (COMPILER_PB_DEPRECATION
):
// Obtener las opciones actuales
Hashtable options = JavaCore.getOptions();
// Cambiar el valor de una opción
options.put(JavaCore.COMPILER_PB_DEPRECATION, JavaCore.ERROR);
// Establecer las opciones nuevas
JavaCore.setOptions(options);
Los valores de las opciones se pueden alterar temporalmente a nivel de proyecto utilizando el protocolo en la interfaz IJavaProject.
El siguiente fragmento de código recupera el valor de una opción
(COMPILER_PB_DEPRECATION
) para un proyecto concreto de dos maneras
distintas. El parámetro booleano controla si solo se deben devolver las
opciones específicas del proyecto en una consulta o bien si los valores de las
opciones del proyecto se deben fusionar con los valores de JavaCore.
// Obtener el proyecto IJavaProject project = ...; // Ver si el valor de una opción ha sido establecido en este proyecto String value = project.getOption(JavaCore.COMPILER_PB_DEPRECATION, false); if (value == null) { // No se ha establecido ninguna opción específica en el proyecto ... } // Obtener el valor de una opción a partir de este proyecto. Usar el valor // procedente de JavaCore si no se ha especificado ninguno para el proyecto String value = project.getOption(JavaCore.COMPILER_PB_DEPRECATION, true);
Las siguientes tablas describen las opciones disponibles del núcleo de JDT. El ID de la opción se muestra entre paréntesis y el valor por omisión se muestra en negrita cursiva.
Descripción | Valores |
---|---|
Generar atributo de depuración de variable local (COMPILER_LOCAL_VARIABLE_ATTR) | |
Si se genera, este atributo permite visualizar los nombres de variables locales en el depurador, solo en los lugares en los que las variables estén asignadas claramente (el archivo .class será más grande). | GENERATE |
DO_NOT_GENERATE | |
Generar atributo de depuración de número de línea (COMPILER_LINE_NUMBER_ATTR) | |
Si se genera, este atributo permite resaltar el código fuente en el depurador (el archivo .class será más grande). | GENERATE |
DO_NOT_GENERATE | |
Generar atributo de depuración del fuente (COMPILER_SOURCE_FILE_ATTR) | |
Si se genera, este atributo permite al depurador presentar el código fuente correspondiente. | GENERATE |
DO_NOT_GENERATE | |
Conservar variables locales no utilizadas (COMPILER_CODEGEN_UNUSED_LOCAL) | |
A menos que se ha haya solicitado conservar las variables locales no utilizadas, (es decir, que no se han leído nunca), el compilador las optimizará eliminándolas, alterando potencialmente la depuración. | PRESERVE |
OPTIMIZE_OUT | |
Definir plataforma Java destino (COMPILER_CODEGEN_TARGET_PLATFORM) | |
Por razones de compatibilidad binaria, los archivos .class pueden codificarse con determinadas versiones de VM y posteriores. Tenga en cuenta que el destino "1.4" le exige que conmute también la modalidad de conformidad a "1.4". | VERSION_1_1 |
VERSION_1_2 | |
VERSION_1_3 | |
VERSION_1_4 | |
Notificar código inalcanzable (COMPILER_PB_UNREACHABLE_CODE) | |
El código inalcanzable puede notificarse opcionalmente como un error, un aviso o simplemente pasarse por alto. La generación de bytecode lo optimizará eliminándolo siempre. | ERROR |
WARNING | |
IGNORE | |
Notificar importación no válida (COMPILER_PB_INVALID_IMPORT) | |
Una sentencia de importación que no puede resolverse puede notificarse opcionalmente como un error, un aviso o pasarse por alto. | ERROR |
WARNING | |
IGNORE | |
Notificar intento de alterar temporalmente método por omisión de paquete (COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD) | |
Un método de paquete por omisión no es visible en otro paquete y, por lo tanto, no puede alterarse temporalmente. Si se habilita esta opción, el compilador indicará este tipo de escenario como error o aviso. | ERROR |
WARNING | |
IGNORE | |
Notificar método con nombre de constructor (COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME) | |
Dar a un método el nombre de un constructor se considera generalmente como programación de estilo pobre. Si se habilita esta opción, el compilador indicará este tipo de escenario como error o aviso. | ERROR |
WARNING | |
IGNORE | |
Notificar obsolescencia (COMPILER_PB_DEPRECATION) | |
Si se habilita esta opción, el compilador indicará la utilización de una API obsoleta como error o aviso. | ERROR |
WARNING | |
IGNORE | |
Notificar obsolescencia dentro del código obsoleto (COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE) | |
Si se habilita esta opción, el compilador indicará la utilización de una API obsoleta como error o aviso. | ENABLED |
DISABLED | |
Notificar bloque catch oculto (COMPILER_PB_HIDDEN_CATCH_BLOCK) | |
Localmente con respecto a una sentencia try, algunos bloques catch pueden
ocultar otros; por ejemplo:
try { throw new java.io.CharConversionException(); } catch (java.io.CharConversionException e) { } catch (java.io.IOException e) {}.Si se habilita esta opción, el compilador emitirá un error o un aviso para los bloques catch ocultos correspondientes a excepciones comprobadas. |
ERROR |
WARNING | |
IGNORE | |
Notificar variable local no utilizada (COMPILER_PB_UNUSED_LOCAL) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso para las variables locales no utilizadas (es decir, variables en las que no se ha leído nunca). | ERROR |
WARNING | |
IGNORE | |
Notificar parámetro no utilizado (COMPILER_PB_UNUSED_PARAMETER) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso para los parámetros de método no utilizados (es decir, parámetros en los que no se ha leído nunca). | ERROR |
WARNING | |
IGNORE | |
Notificar parámetro no utilizado si se implementa método abstracto (COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT) | |
Si se habilita esta opción, el compilador señalará los parámetros no utilizados en las implementaciones de los métodos abstractos. | ENABLED |
DISABLED | |
Notificar parámetro no utilizado si se altera temporalmente un método concreto (COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE) | |
Si se habilita esta opción, el compilador señalará los parámetros no utilizados en los métodos que alteran temporalmente métodos concretos. | ENABLED |
DISABLED | |
Notificar importación no utilizada (COMPILER_PB_UNUSED_IMPORT) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso para las referencias a importaciones no utilizadas. | ERROR |
WARNING | |
IGNORE | |
Notificar miembros privados no utilizados (COMPILER_PB_UNUSED_PRIVATE_MEMBER) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso siempre que se declare un método o un campo privado que no se utilice nunca dentro de la misma unidad. | ERROR |
WARNING | |
IGNORE | |
Notificar emulación de acceso sintética (COMPILER_PB_SYNTHETIC_ACCESS_EMULATION) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso siempre que emule el acceso a un miembro no accesible de un tipo delimitador. Tales accesos pueden tener implicaciones en el rendimiento. | ERROR |
WARNING | |
IGNORE | |
Notificar literal de tipo serie no externalizado (COMPILER_PB_NON_NLS_STRING_LITERAL) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso para los literales de tipo serie no externalizados (es decir, no señalados con el código //$NON-NLS-<n>$). | ERROR |
WARNING | |
IGNORE | |
Notificar utilización de identificador 'assert' (COMPILER_PB_ASSERT_IDENTIFIER) | |
Si está habilitada, el compilador emitirá un error o un aviso siempre que se utilice 'assert' como identificador (palabra clave reservada en 1.4). | ERROR |
WARNING | |
IGNORE | |
Notificar referencia no estática a un miembro estático (COMPILER_PB_STATIC_ACCESS_RECEIVER) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso siempre que se acceda a un campo o a un método estático con un receptor de expresión. | ERROR |
WARNING | |
IGNORE | |
Notificar asignación sin efecto (COMPILER_PB_NO_EFFECT_ASSIGNMENT) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso siempre que haya una asignación sin efecto (por ejemplo, 'x = x'). | ERROR |
WARNING | |
IGNORE | |
Notificar método de interfaz no compatible con métodos no heredados (COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso siempre que una interfaz defina un método incompatible con el de un objeto no heredado. | ERROR |
WARNING | |
IGNORE | |
Notificar utilización de expresiones char[] en concatenaciones de tipo serie (COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION) | |
Si se habilita esta opción, el compilador emitirá un error o un aviso siempre que se utilice una expresión de tipo char[] en concatenaciones de tipo serie (por ejemplo, "hello" + new char[]{'w','o','r','l','d'}). | ERROR |
WARNING | |
IGNORE | |
Establecer modalidad de compatibilidad del fuente (COMPILER_SOURCE) | |
Especifique si el fuente es compatible con 1.3 ó 1.4. A partir de 1.4, 'assert' es una palabra clave reservada para el soporte de aserción. Tenga en cuenta también que, al conmutar a la modalidad 1.4, el nivel de VM destino debe establecerse en "1.4" y la modalidad de conformidad debe ser "1.4". | VERSION_1_3 |
VERSION_1_4 | |
Establecer nivel de conformidad (COMPILER_COMPLIANCE) | |
Seleccione el nivel de conformidad del compilador. En la modalidad "1.3", los valores del origen y el destino no deben ser superiores al nivel "1.3". | VERSION_1_3 |
VERSION_1_4 | |
Número máximo de problemas notificados por unidad de compilación (COMPILER_PB_MAX_PER_UNIT) | |
Especifique el número máximo de problemas notificados en cada unidad de compilación (si el máximo es cero, se notifican todos los problemas). | Un entero positivo. El valor por omisión es 100 |
Definir los códigos de tarea automáticos (COMPILER_TASK_TAGS) | |
Cuando el código no está vacío, el compilador emitirá un marcador de tarea siempre que encuentre uno de los correspondientes códigos dentro de un comentario en el código fuente Java. Los mensajes de tarea generados incluirán el código y se extenderán hasta el separador de línea siguiente o la finalización de comentario, y se podarán. | {<código>[,<código>]*}. El valor por omisión es "" |
Definir las prioridades de tarea automáticas (COMPILER_TASK_PRIORITIES) | |
En paralelo con los códigos de tarea automáticos, esta lista define las prioridades (alta, normal o baja) de los marcadores de tarea emitidos por el compilador. Si se especifica el valor por omisión, la prioridad de cada marcador de tarea es "NORMAL". | {<prioridad>[,<prioridad>]*}. El valor por omisión es "" |
Descripción | Valores |
---|---|
Especificar filtros para control de copia de recursos (CORE_JAVA_BUILD_RESOURCE_COPY_FILTER) | |
Especifique filtros para controlar el proceso de copia de recursos. (<nombre> es un patrón de nombre de archivo (solo se permiten los comodines *) o el nombre de una carpeta que termine en '/'). | {<nombre>[,<nombre>]*}. El valor por omisión es "" |
Cancelar si la vía de acceso de clases no es válida (CORE_JAVA_BUILD_INVALID_CLASSPATH) | |
Se indica al constructor que cancele si la vía de acceso de clases no es válida. | ABORT |
IGNORE | |
Hacer limpieza de carpeta(s) de salida (CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER) | |
Indica si se permite que JavaBuilder haga limpieza de las carpetas de salida al realizar operaciones de construcción completas. | CLEAN |
IGNORE |
Descripción | Valores |
---|---|
Calcular orden de construcción de proyecto (CORE_JAVA_BUILD_ORDER) | |
Indica si JavaCore debe forzar que el orden de construcción del proyecto se base en la cadena de prerrequisitos de la vía de acceso de clases. Si se solicita calcular, esta opción adopta el orden por omisión de la plataforma (basado en las referencias del proyecto). | COMPUTE |
IGNORE | |
Especificar formato de codificación de fuente por omisión (CORE_ENCODING) | |
Obtener el formato de codificación de los recursos compilados. Este valor es solo de lectura y equivale a ResourcesPlugin.getEncoding(). | Cualquiera de los nombres de codificación soportados. El valor por omisión es el de la plataforma |
Notificar vía de acceso de clases incompleta (CORE_INCOMPLETE_CLASSPATH) | |
Indica la gravedad del problema notificado cuando no existe una entrada en la vía de acceso de clases, o cuando la entrada no es legítima o visible (por ejemplo, cuando está cerrado un proyecto al que se hace referencia). | ERROR |
WARNING | |
Notificar ciclo de vía de acceso de clases (CORE_CIRCULAR_CLASSPATH) | |
Indica la gravedad del problema notificado cuando hay un proyecto implicado en un ciclo. | ERROR |
WARNING | |
Habilitar utilización de patrones de exclusión de vía de acceso de clases (CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS) | |
Si esta opción se establece en "DISABLED" (inhabilitada), no se puede asociar ninguna entrada de una vía de acceso de clases de proyecto a un patrón de exclusión. | ENABLED |
DISABLED | |
Habilitar utilización de múltiples ubicaciones de salida de vía de acceso de clases (CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS) | |
Si esta opción se establece en "DISABLED" (inhabilitada), no se puede asociar ninguna entrada de una vía de acceso de clases de proyecto a una ubicación de salida específica, impidiendo así la utilización de múltiples ubicaciones de salida. | ENABLED |
DISABLED |
Descripción | Valores |
---|---|
Insertar línea nueva antes de llave de apertura (FORMATTER_NEWLINE_OPENING_BRACE) | |
Si se elige INSERT (Insertar), se inserta una línea nueva antes de una llave de apertura; en caso contrario, no se inserta nada. | INSERT |
DO_NOT_INSERT | |
Insertar línea nueva dentro de sentencia de control (FORMATTER_NEWLINE_CONTROL) | |
Si se elige INSERT (Insertar), se inserta una línea nueva entre } y else, catch, finally. | INSERT |
DO_NOT_INSERT | |
Borrar líneas en blanco (FORMATTER_CLEAR_BLANK_LINES) | |
Si se elige CLEAR ALL (Borrar todo), se eliminan todas las líneas en blanco. Si se elige PRESERVE ONE (Conservar una), se eliminan todas las líneas menos una. | CLEAR_ALL |
PRESERVE_ONE | |
Insertar línea nueva entre Else/If (FORMATTER_NEWLINE_ELSE_IF) | |
Si se elige INSERT (Insertar), se inserta una línea en blanco entre una sentencia else y una sentencia if cuando estas dos sentencias son contiguas. Si se elige no insertar (DO_NOT_INSERT), else-if se mantendrán en la misma línea si es posible. | INSERT |
DO_NOT_INSERT | |
Insertar línea nueva en bloque vacío (FORMATTER_NEWLINE_EMPTY_BLOCK) | |
Si se elige INSERT (Insertar), se insertará una interrupción de línea entre dos llaves { y } contiguas, si no hay ninguna palabra clave a continuación de la llave }. | INSERT |
DO_NOT_INSERT | |
Dividir líneas que sobrepasan la longitud (FORMATTER_LINE_SPLIT) | |
Permitir la división de líneas largas (que superen la longitud configurable). Si la longitud es 0, se inhabilitará la división de línea. | Un entero positivo. El valor por omisión es 80 |
Compactar asignación (FORMATTER_COMPACT_ASSIGNMENT) | |
Las asignaciones pueden formatearse asimétricamente; por ejemplo, 'int x= 2;'; en el caso de Normal, se inserta un espacio antes del operador de asignación. | COMPACT |
NORMAL | |
Definir carácter de sangrado (FORMATTER_TAB_CHAR) | |
Puede optar por sangrar con caracteres de tabulación o con espacios. | TAB |
SPACE | |
Definir longitud de espacio de sangrado (FORMATTER_TAB_SIZE) | |
Si utiliza espacios, establezca la cantidad de caracteres de espacio que deben utilizarse para cada marca de sangrado. | Un entero positivo. El valor por omisión es 4 |
Insertar espacio en expresión de conversión temporal (FORMATTER_SPACE_CASTEXPRESSION) | |
Si el valor es INSERT (insertar), se añade un espacio entre el tipo y la expresión de una conversión temporal. | INSERT |
DO_NOT_INSERT |
Descripción | Valores |
---|---|
Activar conclusión sensible a visibilidad (CODEASSIST_VISIBILITY_CHECK) | |
Si está activa, la conclusión no muestra lo que no se puede ver (por ejemplo, no podrá ver los métodos privados de una superclase). | ENABLED |
DISABLED | |
Calificación automática de miembros implícitos (CODEASSIST_IMPLICIT_QUALIFICATION) | |
Si está activa, la conclusión queda automáticamente calificada en las expresiones de mensajes y las referencias a campo implícitas. | ENABLED |
DISABLED | |
Definir los prefijos del nombre de campo (CODEASSIST_FIELD_PREFIXES) | |
Cuando los prefijos no están vacíos, la conclusión del nombre del campo empezará por uno de los prefijos propuestos. | {<prefijo>[,<prefijo>]*}. El valor por omisión es "" |
Definir los prefijos del nombre de campo estático (CODEASSIST_STATIC_FIELD_PREFIXES) | |
Cuando los prefijos no están vacíos, la conclusión del nombre del campo estático empezará por uno de los prefijos propuestos. | {<prefijo>[,<prefijo>]*}. El valor por omisión es "" |
Definir los prefijos del nombre de variable local (CODEASSIST_LOCAL_PREFIXES) | |
Cuando los prefijos no están vacíos, la conclusión del nombre de la variable local empezará por uno de los prefijos propuestos. | {<prefijo>[,<prefijo>]*}. El valor por omisión es "" |
Definir los prefijos del nombre de argumento (CODEASSIST_ARGUMENT_PREFIXES) | |
Cuando los prefijos no están vacíos, la conclusión del nombre del argumento empezará por uno de los prefijos propuestos. | {<prefijo>[,<prefijo>]*}. El valor por omisión es "" |
Definir los sufijos del nombre de campo (CODEASSIST_FIELD_SUFFIXES) | |
Cuando los sufijos no están vacíos, la conclusión del nombre del campo acabará en uno de los sufijos propuestos. | {<sufijo>[,<sufijo>]*}. El valor por omisión es "" |
Definir los sufijos del nombre de campo estático (CODEASSIST_STATIC_FIELD_SUFFIXES) | |
Cuando los sufijos no están vacíos, la conclusión del nombre del campo estático acabará en uno de los sufijos propuestos. | {<sufijo>[,<sufijo>]*}. El valor por omisión es "" |
Definir los sufijos del nombre de variable local (CODEASSIST_LOCAL_SUFFIXES) | |
Cuando los sufijos no están vacíos, la conclusión del nombre de la variable local acabará en uno de los sufijos propuestos. | {<sufijo>[,<sufijo>]*}. El valor por omisión es "" |
Definir los sufijos del nombre de argumento (CODEASSIST_ARGUMENT_SUFFIXES) | |
Cuando los sufijos no están vacíos, la conclusión del nombre del argumento acabará en uno de los sufijos propuestos. | {<sufijo>[,<sufijo>]*}. El valor por omisión es "" |