Objectivos
Adquirir a capacidade de melhorar a qualidade do código produzido utilizando:
- Um debugger para descobrir a fonte dos bugs em programas Java;
- Uma ferramenta de análise estática de código para assinalar possíveis bugs no código.
Actividade
- Instalação de um debugger de Java;
- Resolução do enunciado da aula.
- Exercitar a utilização de um debugger;
- Exercitar a utilização de uma ferramenta de análise estática de código.
Enunciado da Aula
A aula está dividida em duas partes:- Utilização de um debugger;
- Utilização de uma ferramenta de análise estática de código.
Utilização de um Debugger
Primeiro, siga este procedimento para instalar e executar o debugger de Java. Após ter instalado o debugger, faça debugging da seguinte aplicação Dates.java:- Descarregue o ficheiro com a aplicação. Esta aplicação recebe duas datas no formato mês1 dia1 mês2 dia2 e escreve número de dias entre as duas datas.
- Coloque o ficheiro Dates.java num directório correcto, tendo em conta que esta classe pertence ao package exemplo;
- Inicie o programa DrJava utilizando o seguinte comando:
- java -jar /caminho/para/drjava-stable-20140826-r5761.jar
- em que /caminho/para representa o directório que contém este ficheiro jar. Caso o ficheiro jar se encontre no directório actual, então apenas necessita de dar o seguinte comando:
- java -jar drjava-stable-20140826-r5761.jar
- Crie um projecto no DrJava para esta aplicação. Siga o procedimento indicado nesta secção;
- Compile o projecto;
- Coloque o DrJava em modo debugg;
- Corra a aplicação. A aplicação vai lançar uma excepção na linha 32. Coloque um breakpoint nesta linha e corra a aplicação de novo. Veja agora o valor da variável "args" na janela Interactions.
- O erro é devido ao facto de não estarmos a indicar os argumentos todos na linha de comandos e portanto a variável args representar um vector vazio. O DrJava não suporta a especificação de argumentos a passar ao método main. No entanto isto pode ser feito na janela Interactions. Assim, nesta janela, escreva o seguinte run exemplo.Dates 1 2 1 3;
- Agora a aplicação lança uma excepção na linha 45. Remova o breakpoint anterior e coloque um novo na linha 45, corra o debugger de novo e perceba o que se passa de errado nesta linha;
- A aplicação ainda tem um erro dado que não calcula correctamente o valor do número de dias entre as duas datas. Usando a opção de Step Over do debugger verifique como é calculado os valores das variáveis someDayInYear e laterDayInYear. Corrija o erro.
- Crie um projecto no DrJava para o projecto que está a desenvolver em Programação com Objectos.
Utilização de uma Ferramenta de Análise Estática de Código
Ao contrário de um debugger, em que para encontrar bugs é necessário executar a aplicação e exigem interacção com uma pessoa, as ferramentas de análise estática do código fazem uma análise automática ao código fonte da aplicação em causa e produzem um relatório com as possíveis fontes de erros encontrados durante a análise do código. Nem todas as possíveis fontes de erro encontradas correspondem a bugs reais. É depois da responsabilidade do programador analisar este relatório e corrigir os erros que são realmente verdadeiros. Note que as ferramentas de análise estática de código não conseguem garantir que encontram todas as fontes de erro.
A ferramenta de análise estática sugerida é o FindBugs. Instale esta ferramenta no seu computado.
Após ter instalado a ferramenta FindBugs, volte a descarregar a versão com erros de Dates.java. Utilize agora a ferramenta FindBugs para descobrir os erros de Dates.java. Como vai verificar, nem todos os bugs (aliás, uma parte significativa) são apanhados por FindBugs. Será sempre necessário testar a aplicação por forma a encontrar os erros. No entanto, a utilização desta ferramenta permite apanhar e corrigir alguns bugs com um custo muito baixo.