Revisión del código en cuanto a recomendaciones de J2EE

La revisión del código en cuanto a recomendaciones de J2EE consta de una sola categoría; también denominada Recomendaciones de J2EE.

Finalidad

La revisión del código en cuanto a las recomendaciones de J2EE aplica reglas para detectar antipatrones en el código que resultaría complicado detectar por los medios convencionales. Los Antipatrones son problemas conocidos que se producen en el código y no siguen las recomendaciones. Mientras que los patrones de diseño son modelos buenos para seguir, los antipatrones son modelos malos que debe evitar. Estos antipatrones pueden provocar una degradación grave del rendimiento o interrupciones en el sistema. Esta revisión del código sólo se ejecuta en servlets. Los servlets deben estar en proyectos web dinámicos que tienen como destino uno de estos índices:
  • WebSphere® Application Server 5.0
  • WebSphere Application Server 5.1
  • WebSphere Application Server 6.0
No se da soporte a los JSP, strut y EJB.

Ciertas reglas en la revisión del código requieren análisis del flujo de datos para detectar algunos hallazgos. el Análisis del flujo de datos realiza un seguimiento de la vía de acceso a un hallazgo. En consecuencia, la revisión del código tarda más en terminar cuando se siguen estas reglas.

Categorías de regla

La tabla siguiente lista todas las categorías y subcategorías de la revisión del código en cuanto a las recomendaciones de J2EE, junto con una descripción de las reglas de cada una. En la columna de la izquierda, las categorías aparecen en negrita y las subcategorías en texto plano.

Categoría o subcategoría Descripción
Recomendaciones de J2EE Contiene reglas basadas en las recomendaciones de desarrollo de J2EE y da soporte a proyectos web destinados a servidores de WebSphere
Corrección Contiene reglas para detectar llamadas a métodos incorrectos
Intentos simultáneos de acceso a datos Contiene reglas para detectar invocaciones de métodos que pueden generar condiciones de intentos simultáneos de acceso a datos en aplicaciones J2EE
Recopilación de información no válida (basura) Contiene reglas para detectar invocaciones de métodos que pueden retrasar la recopilación de información no válida (basura)
Capacidad de mantenimiento Contiene reglas para detectar código que puede ser difícil de mantener en aplicaciones J2EE
Rendimiento y escalabilidad Contiene reglas para detectar invocaciones de método que obstaculizan el rendimiento o limitan la escalabilidad de una aplicación J2EE
Gestión de recursos Contiene reglas de recomendaciones J2EE para utilizar recursos en aplicaciones J2EE

Tipos de regla

La revisión del código en cuanto a las recomendaciones de J2EE aplica reglas que son de dos tipos: reglas rápidas y reglas detalladas. Las características que diferencian los tipos de regla son el tiempo que tarda la regla en aplicarse y el tipo de información que presenta la regla en un hallazgo.

Reglas J2EE rápidas

Las reglas J2EE rápidas tardan menos tiempo en aplicarse en la revisión del código en cuanto a las recomendaciones de J2EE que las reglas detalladas. Las reglas rápidas presentan la misma información para un hallazgo que las reglas de las otras revisiones del código.

Reglas J2EE detalladas

Las reglas J2EE detalladas requieren un análisis del flujo de datos por lo que tardan más tiempo en generar hallazgos que las reglas rápidas. Las reglas detalladas de J2EE no generan hallazgos, pero también muestran las vías de acceso de las que provienen los hallazgos. Estas reglas requieren un análisis del flujo de datos, el método que realiza el seguimientos de las vías de acceso, por lo que pueden tardar más en generar hallazgos que las reglas rápidas. Las reglas detalladas proporcionan la siguiente información adicional:

Lista de reglas J2EE detalladas

Hay 36 reglas J2EE detalladas. La columna izquierda de la tabla siguiente lista las subcategorías que las contienen. La columna de la derecha lista o describe las reglas de la subcategoría que son reglas J2EE detalladas.

Categoría o subcategoría Regla J2EE detallada
Corrección
Evite almacenar objetos que no implementen java.io.Serializable en javax.servlet.http.HttpSession
Intentos simultáneos de acceso a datos
Evite asignar a cualquier campo estático desde javax.servlet.Service.service() sin utilizar un bloqueo compartido
Evite asignar al servlet campos de instancia, desde javax.servlet.Service.service(), sin utilizar un bloqueo compartido
Rendimiento y escalabilidad
Siempre llame a javax.servlet.http.HttpSession.invalidate() después de javax.servlet.http.HttpServletRequest.getSession()
Gestión de recursos Las 32 reglas de esta subcategoría son reglas J2EE detalladas.

Reglas de ejemplo

Este apartado contiene un ejemplo de cada tipo de regla que se aplica en la revisión del código en cuanto a las recomendaciones de J2EE.

Regla rápida de ejemplo

La siguiente regla es una regla rápida de ejemplo que está en la subcategoría Rendimiento y escalabilidad.

Evite llamar java.lang.Runtime desde cualquier servlet

Regla detallada de ejemplo

La siguiente regla es una regla detallada de ejemplo que está en la subcategoría Gestión de recursos.
Siempre llame a java.io.FileInputStream.close() después del nuevo java.io.FileInputStream(java.io.File)

Problemas conocidos

Este apartado ofrece información sobre problemas conocidos relacionados con la revisión del código en cuanto a las recomendaciones de J2EE.

Falso positivo: Una corriente de datos de entrada que no se ha cerrado

Resumen: La revisión del código en cuanto a las recomendaciones de J2EE genera un hallazgo que indica que una corriente de datos de entrada no se ha cerrado. En realidad, no hay ninguna corriente de datos de entrada para cerrar.

Descripción: La revisión del código no reconoce que todas las corrientes de datos de entrada están cerradas en las situaciones siguientes:
  • Si bis es nulo, no hay ninguna corriente de datos para cerrar
  • Una corriente de datos de entrada, FileInputStream, se utiliza para crear una segunda, BufferedInputStream. Cuando la segunda corriente de datos de entrada se cierra, lo hace también la primera.
Ilustración: Las líneas resaltadas en el ejemplo del código siguiente muestran ambas situaciones:
public static int readFirstByte(String fileName) {
 int firstByte = -1;
 FileInputStream fis=null;
 BufferedInputStream bis = null;
 try {
  fis = new FileInputStream(fileName);
  bis = new BufferedInputStream(fis);  firstByte = bis.read();
 } catch (FileNotFoundException fnfe) {
  LogUtility.log(fnfe);
 } catch (IOException ioe) {
  LogUtility.log(ioe);
 } finally {
  if (bis!=null){   try {
    bis.close();   } catch (IOException ioe){
    LogUtility.log(ioe);
   }
  }
 }
 return firstByte;
} 

Solución provisional: Pulse el botón derecho del ratón sobre el hallazgo falso positivo y pulse Ignorar.

Información insuficiente: Se informa del hallazgo con relación a un archivo .classpath

Resumen: La revisión del código en cuanto a las recomendaciones de J2EE genera un hallazgo en el archivo .classpath y no en un recurso del área de trabajo.

Descripción: La revisión del código encuentra un problema con un tipo binario y ese tipo no tiene ningún recurso correspondiente en el área de trabajo porque lo contiene una JAR externo.

Referencia: RFE RATLC00038795

Solución provisional:

  1. En la vista Detalles de la revisión del código, pulse la pestaña Vías de acceso para ver qué tipo no tiene correspondencia de recurso en el área de trabajo.
  2. Amplíe la información para ver los nombres de los tipos y los posibles métodos y campos relacionados con el hallazgo.

Filtros del recurso: No funcionan con las reglas detalladas

Resumen: En la página Filtros del recurso especifique los archivos que no desea que sigan una regla detallada durante una revisión del código. Sin embargo, el filtro no funciona y la regla se continúa aplicando a los archivos especificados.

Descripción: Las reglas detalladas de J2EE funcionan de forma distinta cuando sucede que el usuario ha especificado que no desea aplicar una regla durante una revisión del código. Las reglas detallas no reorganizan los archivos especificados en la página Filtros del recurso pero sí reconocen los archivos de la página Excluido, en la que por omisión se listan los archivos JAR. Estas reglas reconocen dos tipos de archivo para excluir, un servlet con nombre completo o un archivo JAR, e ignoran todo lo demás.

Solución provisional:
  1. Pulse Ventana > Preferencias para que se abra la ventana Preferencias.
  2. En el panel de la izquierda, amplíe Java™ y Revisión del código y, a continuación, seleccione Excluido.
  3. En la página Excluido, revise los archivos que aparecen listado en la página Recursos y haga lo siguiente:
    • Si el archivo que desea excluir de la revisión mediante las reglas detalladas de J2EE aparece en la lista, pulse Aceptar. No hace falta ninguna acción adicional por su parte.
    • Para excluir un servlet de la revisión mediante las reglas detalladas de J2EE, seleccione el archivo .java o .class del servlet y, a continuación, pulse Aceptar.
    • Para excluir un archivo JAR de la revisión mediante las reglas detalladas de J2EE, seleccione el archivo JAR y, a continuación, pulse Aceptar.
Si un archivo aparece listado y no desea excluirlo de la revisión del código, seleccione el archivo y pulse Eliminar.
Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.