Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código...
Transcript of Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código...
![Page 1: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/1.jpg)
Implementação do Siga-Pattern no SIGAEPCT-EDU através de Análise
Estática de Código utilizando a Ferramenta FindBugs Plugin
José Roberto de Melo Filho
Orientadora: Prof.ª Ms. Marília Aranha Freire
Co-orientador: Ms. Wanderson Câmara dos Santos
18 de julho de 2011
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE
CAMPUS NATAL-CENTRALDIRETORIA DE EDUCAÇÃO E TECNOLOGIA DA
INFORMAÇÃO
![Page 2: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/2.jpg)
Sumário
Introdução
Análise Estática
Arquitetura Eclipse Plugin
FindBugs
![Page 3: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/3.jpg)
Padrões
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
Conclusão
Sumário
![Page 4: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/4.jpg)
Introdução:Objetivos do Estudo e Implementação
O principal objetivo deste trabalho consiste na criação de um detector utilizando a Análise Estática em conjunto com a ferramenta FindBugs Plugin e como esse detector pode ajudar no processo de desenvolvimento do sistema SIGA-EDU.
![Page 5: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/5.jpg)
Introdução:Motivação para a criação do detectorNecessidade para a equipe de
desenvolvimento do SIGA-EDU a agilidade no processo de verificação e validação.
Ferramenta Open-Source.
![Page 6: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/6.jpg)
Ótimo desempenho da ferramenta na detecção de falhas no sistema.
Fácil integração do FindBugs com as ferramentas utilizadas no desenvolvimento do sistema.
Introdução:Motivação para a criação do detector
![Page 7: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/7.jpg)
Análise Estática
Processo realizado por uma ferramenta em um programa sem necessidade de execução do mesmo.
Análise em Código Fonte versus Código Compilado.
![Page 8: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/8.jpg)
Falsos Positivos & Falsos Negativos◦Penalidades
Ferramentas de análise estática◦FindBugs X outras ferramentas
Análise Estática
![Page 9: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/9.jpg)
Histórico da plataforma
Plataforma para a integração de ferramentas de desenvolvimento.
Independência de Sistema Operacional.
Eclipse IDE
![Page 10: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/10.jpg)
FindBugs
Ferramenta de Análise Estática
Utiliza a biblioteca BCEL para verificar o bytecode.
Formado por duas partes: Engine e Front-ends◦Engine: Núcleo da ferramenta◦Front-ends: Subdividem em Task para
ANT, Plugin para Eclipse e aplicação stand-alone.
![Page 11: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/11.jpg)
Padrões
Evita a utilização de técnicas não-orientadas a objetos.
Bug Patterns são padrões de comportamentos errôneos
Detectores de Bug Patterns◦ Bug-patterns agrupam-se em categorias.◦ São identificados por pequenos códigos
no arquivo findbugs.xml.
![Page 12: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/12.jpg)
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
Situação
◦Classes “EJB”
◦Classes “DAO”
![Page 13: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/13.jpg)
Ambiente de desenvolvimento
◦Java JDK com variáveis de ambiente configuradas JDK 1.5 ou mais nova
◦Eclipse Galileo 3.5.0
◦FindBugs source 1.3.9.qualifier
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 14: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/14.jpg)
Configurando o FindBugs Plugin
findbugs.xml
messages.xml
SIGADetector.java
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 15: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/15.jpg)
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
Configurando o FindBugs Plugin
◦findbugs.xml Configuração da classe do detector
Tag <Detector> Instancia todos os detectores definidos por
essa tag
Tag <BugPattern> Especifica o tipo de bug que será retornado
![Page 16: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/16.jpg)
Configurando o FindBugs Plugin
◦messages.xml Definição da nossa categoria: SIGAEDU
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 17: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/17.jpg)
Configurando o FindBugs Plugin
◦messages.xml Definição do nosso detector no arquivo
messages.xml
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 18: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/18.jpg)
Configurando o FindBugs Plugin
◦messages.xml Definição das mensagens visíveis para os
bug patterns identificados pelos conteúdos do atributo type.
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 19: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/19.jpg)
Implementando o SIGADetector.java
◦Deve implementar a interface Detector e estender a superclasse PreorderVisitor
◦Faz-se uma chamada à classe BugReporter no construtor
◦Declara o método visitClassContext(ClassContext)
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 20: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/20.jpg)
Implementando o SIGADetector.java
◦Criamos dois métodos auxiliares, getLastName() e o isMesmoNome(), para ajudar a limpar mais o método visit().
◦Sobrescrever o método visit()
Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU
![Page 21: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/21.jpg)
Resultados dos testes
CORRECTNESS19%
BAD_PRACTICE46%
STYLE4%
PERFORMANCE30%
SIGA-PATTERN1%
CORRECTNESSBAD_PRACTICESTYLEPERFORMANCESIGA-PATTERN
![Page 22: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/22.jpg)
Conclusão
Implementação dos padrões restantes
Esse detector pode ser utilizado em qualquer Sistema Operacional que suporte o Eclipse SDK.
![Page 23: Implementação do Siga-Pattern no SIGAEPCT- EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin José Roberto de Melo Filho.](https://reader036.fdocumentos.tips/reader036/viewer/2022062418/552fc13c497959413d8dafd0/html5/thumbnails/23.jpg)
Perguntas