Usem o FindBugs!

8 respostas
T

O FindBugs ( http://findbugs.sourceforge.net ) é uma ferramenta para achar alguns bugs através da análise do código compilado.

Diga qual é o erro encontrado nesta classe do JDK (com.sun.xml.internal.txw2.output.XMLWriter) :

public void startCDATA() throws SAXException {
        try {
            if (!startTagIsClosed) {
                write('>');
                startTagIsClosed = true;
            }
            write("<![CDATA[");
            inCDATA = true;
        } catch (IOException e) {
            new SAXException(e);
        }
    }

Esse tipo de erro, como sabemos, é muito difícil de perceber. (O FindBugs, na verdade, reporta “Method ignores return value”, mas na verdade você sabe que o erro é outro - e você consegue corrigi-lo.)
>

8 Respostas

Omeganosferatu

O erro seria as atribuições estarem depois do método write que lança exception ?

T

Não; só vou dar uma dica - se você escrever mais uma palavra neste método, ele fica correto.

Marky.Vasconcelos

Rodei o FindBugs nomeu programa mas encontrou algo que não consigo arrumar.

Malicious code vunerability

Storing reference to mutable object

May expose internal representation by incorporating reference to mutable object

new mark.utils.swing.table.ObjectTableModel(FieldResolver[]) may expose internal representation by storing an externally mutable object into ObjectTableModel.fields

Código:

public class ObjectTableModel<T> extends AbstractTableModel {
	private FieldResolver<T>[] fields;

	public ObjectTableModel(FieldResolver<T>... fields) {
		this.fields = fields;//Nessa linha ele indica isso
	}
//... Resto do código omitido por não haver necessidade de exibi-lo
}

Achou mais alguns mas consegui resolver.

O que faço com esse?

T

Você pode deixar quieto, mas o correto seria clonar o array:

@SuppressWarnings (unchecked)



this.fields = (FieldResolver ) fields.clone();
Marky.Vasconcelos

Obrigado vou usar o modo correto.

victorwss

thingol:
O FindBugs ( http://findbugs.sourceforge.net ) é uma ferramenta para achar alguns bugs através da análise do código compilado.

Diga qual é o erro encontrado nesta classe do JDK (com.sun.xml.internal.txw2.output.XMLWriter) :

public void startCDATA() throws SAXException {
        try {
            if (!startTagIsClosed) {
                write('>');
                startTagIsClosed = true;
            }
            write("<![CDATA[");
            inCDATA = true;
        } catch (IOException e) {
            new SAXException(e);
        }
    }

Esse tipo de erro, como sabemos, é muito difícil de perceber. (O FindBugs, na verdade, reporta “Method ignores return value”, mas na verdade você sabe que o erro é outro - e você consegue corrigi-lo.)
>

Falta o throw antes do new SAXException(e);

T

Acertou, é realmente o “throw” que falta.

No JDK parece que há pelo menos uns três ou quatro erros desse tipo (esquecer de dar um “throw”).

B

Legal, acertei :slight_smile:

Criado 9 de maio de 2008
Ultima resposta 9 de mai. de 2008
Respostas 8
Participantes 5