implementação do siga-pattern no sigaepct- edu através de análise estática de código...

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 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-CENTRAL DIRETORIA DE EDUCAÇÃO E TECNOLOGIA DA INFORMAÇÃO

Upload: internet

Post on 18-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

Ó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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Perguntas