A revisão de código J2EE Best Practices consiste em apenas uma categoria; ela também é chamada de J2EE Best Practices.
Algumas regras na revisão de código requerem análise do fluxo de dados para detectar algumas descobertas. A análise do fluxo de dados rastreia o caminho para uma descoberta. Conseqüentemente, a revisão de código leva mais tempo para ser concluída quando essas regras são aplicadas.
A tabela a seguir lista todas as categorias e subcategorias na revisão de código J2EE Best Practices, juntamente com uma descrição das regras em cada uma. Na coluna esquerda, as categorias estão em texto em negrito e as subcategorias estão em texto simples.
Categoria ou Subcategoria | Descrição |
---|---|
J2EE Best Practices | Contém regras com base nas boas práticas de desenvolvimento do J2EE e suporta projetos da Web destinados a servidores WebSphere |
Correctness | Contém regras que detectam chamadas de método incorretas |
Data Race | Contém regras para detectar chamadas de método que podem causar condições de concorrência de dados em aplicativos J2EE |
Garbage Collection | Contém regras que detectam chamadas de método que podem atrasar a coleta de lixo |
Maintainability | Contém regras para detectar código que pode ser difícil de manter em aplicativos J2EE |
Performance and Scalability | Contém regras para detectar chamadas de método que impedem o desempenho ou limitam a escalabilidade de um aplicativo J2EE |
Resource Management | Contém regras de boas práticas J2EE para utilizar recursos nos aplicativos J2EE |
A revisão de código J2EE Best Practices aplica regras de dois tipos: regras rápidas e regras detalhadas. As características que diferenciam os tipos de regras são o período de tempo que a regra leva para ser aplicada e o tipo de informação que a regra apresenta em uma descoberta.
Regras Rápidas do J2EE
As regras rápidas do J2EE levam menos tempo para serem aplicadas na revisão de código J2EE Best Practices do que as regras detalhadas. As regras rápidas apresentam as mesmas informações para uma descoberta que as regras nas outras revisões de código.
Regras Detalhadas do J2EE
As regras detalhadas do J2EE requerem análise do fluxo de dados, portanto elas levam mais tempo para produzir descobertas do que as regras rápidas. As regras detalhadas do J2EE não produzem apenas descobertas, mas mostram também os caminhos que conduzem às descobertas. Essas regras requerem análise do fluxo de dados, o método que rastreia os caminhos, portanto elas levam mais tempo para produzir descobertas do que as regras rápidas. As regras detalhadas fornecem as informações adicionais a seguir:Há 36 regras detalhadas do J2EE. A coluna esquerda da tabela a seguir lista as subcategorias que as contêm. A coluna direita lista ou descreve quais regras na subcategoria são regras detalhadas do J2EE.
Categoria ou Subcategoria | Regra Detalhada do J2EE |
---|---|
Correctness | Evitar armazenar objetos que não implementam java.io.Serializable em javax.servlet.http.HttpSession |
Data Race | Evitar designação a quaisquer campos estáticos, a partir do javax.servlet.Service.service(), sem utilizar uma trava compartilhada Evitar designação a campos de instância do servlet, a partir do javax.servlet.Service.service(), sem utilizar uma trava compartilhada |
Performance and Scalability | Sempre chamar javax.servlet.http.HttpSession.invalidate() após javax.servlet.http.HttpServletRequest.getSession() |
Resource Management | Todas as 32 regras nesta subcategoria são regras detalhadas do J2EE. |
Esta seção contém uma amostra de cada tipo de regra aplicado na revisão de código J2EE Best Practices.
Regra rápida de amostra
A regra a seguir é uma regra rápida de amostra que está na subcategoria Performance and Scalability.
Evitar chamar java.lang.Runtime a partir de qualquer servlet
Regra detalhada de amostra
Sempre chamar java.io.FileInputStream.close() após new java.io.FileInputStream(java.io.File)
Esta seção documenta problemas conhecidos com a revisão de código J2EE Best Practices.
Positivo falso: Um fluxo de entrada não foi fechado
Resumo: A revisão de código J2EE Best Practices produz uma descoberta de que um fluxo de entrada não foi fechado. Na realidade, não há nenhum outro fluxo de entrada para ser fechado.
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; }
Solução alternativa: Clique com o botão direito do mouse na descoberta de positivo falso e clique em Ignorar.
Informações insuficientes: A descoberta é relatada para um arquivo .classpath
Resumo: A revisão de código J2EE Best Practices produz uma descoberta no arquivo .classpath e não em um recurso no workbench.
Descrição: A revisão de código localiza um problema com um tipo binário e esse tipo não possui recurso correspondente no workbench porque está contido em um JAR externo.
Referência: RFE RATLC00038795
Solução alternativa:
Resource filters: Não funcionam para regras detalhadas
Summary: Na página Resource Filters, você especifica os arquivos aos quais não deseja que a regra detalhada selecionada seja aplicada durante uma revisão de código. Entretanto, o filtro não funciona e a regra continua sendo aplicada aos arquivos especificados.
Description: As regras detalhadas do J2EE funcionam de modo diferente quando trata-se da especificação de arquivos aos quais você não deseja que uma regra seja aplicada durante uma revisão de código. As regras detalhadas não reconhecem os arquivos especificados na página Resource Filters, mas reconhecem os arquivos na página Excluded, na qual os arquivos JAR são listados por padrão. Essas regras reconhecem dois tipos de arquivo para exclusão, um arquivo completo JAR ou de servlet, e ignoram todos os outros.