Find Bugs: procurando problemas no seu código fonte

[quote]Esta dica meu amigo Damico publicou em seu blog, o Find Bugs é um programa utilizado para procurar por BUGS em projetos java. É um software livre!!! Super recomendado para você aprimorar seu código!!! Leia mais no blog do Damico.

Para baixar, vá até: http://findbugs.sourceforge.net/[/quote]

fonte:http://jmmwrite.wordpress.com/

Alguem ja usou?

Eu perguntaria o contrário, alguém NÃO usa ele e sua trupi(PMD, Chekstyle, etc) para verificar o código?

Alguém usa ele no Netbeans?

É legal um software deste tipo desde o começo um projeto.

Tentar colocar algo assim no meio do caminho pode ser problemático, já vi casos de que tinha tanta violação que o pessoal desligou pois o Eclipse travava :stuck_out_tongue:

no meio do projeto! eh complicado mesmo eu nao arriscaria… com ele… daria preferencia aplicar refactoring!!

Muito bom esse programa!!!
Certo que eu vou começar a usar ele daqui pra frente.

Tava passsando aqui no trampo nas classes de interface, e ele acho 220 bugs, algumas coisas simples como não fazer nada em catchs ou catchs que nunca vão pegar nadas mas teve umas cabeludas, como essa que está sendo usado apenas um & comercial. Aliás nunca vai ter uma string com número negativo, pra que testar se é maior que 0???

	if((jFtfDescFabric.getText().trim().length() > 0 & jFtfDescFabric.getText().trim().length() < 3)) {

Alguém consegue me explicar isso?
Ele disse que colocando uma inner class como estática eu vou ganhar performance? É isso mesmo?

[quote=ivo costa]Aliás nunca vai ter uma string com número negativo, pra que testar se é maior que 0???

	if((jFtfDescFabric.getText().trim().length() > 0 & jFtfDescFabric.getText().trim().length() < 3)) {

[/quote]
Pra ver se a string não é vazia.

Mas nunca entendi por que um único ‘&’ funciona em expressões lógicas. Seria legado?

Nesse caso não precisava testar se a string era vazia, tinha que lançar um erro para o usuário caso fosse 0,1 ou 2.

Um & serve por exemplo para executar dois métodos num teste:

Mesmo que o primeiro volte false vai executar o segundo.

if(servico.tenta() & servico2.tenta())

E pra que raios alguém quer testar uma condição se já sabe que o resultado será false?

Edit: Isso é mais ilegível que um if ternário.

poxa muito animal esse findbugs hehe :stuck_out_tongue:

eu ví uns slides de um JavaOne, os caras executaram no JDK 6 e viram um monte de bug balão, até no código do Joshua Bloch hahaha, algo do tipo:

public String sayHello() { return this.sayHello(); }

[quote=Leozin]poxa muito animal esse findbugs hehe :stuck_out_tongue:

eu ví uns slides de um JavaOne, os caras executaram no JDK 6 e viram um monte de bug balão, até no código do Joshua Bloch hahaha, algo do tipo:

public String sayHello() { return this.sayHello(); }[/quote]

Todo mundo tem culpa no cartório!!! :twisted:

[quote=Leozin]poxa muito animal esse findbugs hehe :stuck_out_tongue:

eu ví uns slides de um JavaOne, os caras executaram no JDK 6 e viram um monte de bug balão, até no código do Joshua Bloch hahaha, algo do tipo:

public String sayHello() { return this.sayHello(); }[/quote]

Tu podia falar onde tu pegou os slides! :slight_smile:

Eu ainda não tive oportunidade de usar no trabalho, mas pelo o que eu vi é muito interessante!

poxa no link que o cara passou tem os slides, (na real, ele linkou pra outro blog, que linkou para outro e depois tem as aprensentações) heiaoheua

ok ok! hauhuahuaa…

nigga preciso falar contigo :slight_smile: , tô curioso about your future! Tenho umas news tb! haahha

Em algumas linguagens (como o Pascal e o VB.NET), “&” (que avalia sempre as duas expressões, a da esquerda e a da direita) é chamado de “and” e “&&” (que desiste na primeira expressão que for “false”) é chamado de “and then”).

Pessoalmente acho que isso é bem mais claro usar “and” ou “and then”.

E pessoalmente acho que a sintaxe do C (usar “!” para significar “not”, etc) é muito ruim; tanto é que estou tendo de lidar com um programa em que o programador escreveu explicitamente:

if (tal coisa == false) {
...
}

tudo porque o operador “!” (que seria o adequado para ser usado, ou seja: )

if (! tal coisa) {
...

é meio invisível e passa despercebido para quem está revisando o código.