josé roberto de melo filho orientadora: prof.ª ms . marília aranha freire

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: adlai

Post on 22-Jan-2016

32 views

Category:

Documents


0 download

DESCRIPTION

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. Implementação do Siga- Pattern no SIGAEPCT-EDU através de Análise Estática de Código utilizando a Ferramenta FindBugs Plugin. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Sumário

Introdução

Análise Estática

Arquitetura Eclipse Plugin

FindBugs

Page 3: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Padrões

Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU

Conclusão

Sumário

Page 4: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Ó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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Falsos Positivos & Falsos Negativos◦Penalidades

Ferramentas de análise estática◦FindBugs X outras ferramentas

Análise Estática

Page 9: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Histórico da plataforma

Plataforma para a integração de ferramentas de desenvolvimento.

Independência de Sistema Operacional.

Eclipse IDE

Page 10: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU

Situação

◦Classes “EJB”

◦Classes “DAO”

Page 13: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Configurando o FindBugs Plugin

findbugs.xml

messages.xml

SIGADetector.java

Criando um Detector do FindBugs Plugin para utilização no SIGA-EDU

Page 15: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

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: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Resultados dos testes

CORRECTNESS19%

BAD_PRACTICE46%

STYLE4%

PERFORMANCE30%

SIGA-PATTERN1%

CORRECTNESSBAD_PRACTICESTYLEPERFORMANCESIGA-PATTERN

Page 22: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Conclusão

Implementação dos padrões restantes

Esse detector pode ser utilizado em qualquer Sistema Operacional que suporte o Eclipse SDK.

Page 23: José Roberto de Melo Filho Orientadora: Prof.ª  Ms . Marília Aranha Freire

Perguntas