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 SIGAEPCTEDU 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
Sumário

Introdução

Análise Estática

Arquitetura Eclipse Plugin

FindBugs
Sumário

Padrões

Criando um Detector do FindBugs Plugin
para utilização no SIGA-EDU

Conclusão
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 SIGAEDU.
Introdução:
Motivação para a criação do detector

Necessidade
para
a
equipe
de
desenvolvimento do SIGA-EDU a agilidade
no processo de verificação e validação.

Ferramenta Open-Source.
Introdução:
Motivação para a criação do detector

Ótimo desempenho da ferramenta
detecção de falhas no sistema.
na

Fácil integração do FindBugs com as
ferramentas utilizadas no desenvolvimento
do sistema.
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.
Análise Estática

Falsos Positivos & Falsos Negativos
◦ Penalidades

Ferramentas de análise estática
◦ FindBugs X outras ferramentas
Eclipse IDE

Histórico da plataforma

Plataforma para a integração de ferramentas
de desenvolvimento.

Independência de Sistema Operacional.
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.
Padrões

Evita a utilização de técnicas não-orientadas
a objetos.

Bug
Patterns
são
padrões
comportamentos errôneos

Detectores de Bug Patterns
de
◦ Bug-patterns agrupam-se em categorias.
◦ São identificados por pequenos códigos no
arquivo findbugs.xml.
Criando um Detector do FindBugs
Plugin para utilização no SIGA-EDU

Situação
◦ Classes “EJB”
◦ Classes “DAO”
Criando um Detector do FindBugs
Plugin para utilização no SIGA-EDU

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

Configurando o FindBugs Plugin
 findbugs.xml
 messages.xml
 SIGADetector.java
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
Criando um Detector do FindBugs
Plugin para utilização no SIGA-EDU

Configurando o FindBugs Plugin
◦ messages.xml
 Definição da nossa categoria: SIGAEDU
Criando um Detector do FindBugs
Plugin para utilização no SIGA-EDU

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

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

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

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()
Resultados dos testes
SIGA-PATTERN
1%
CORRECTNESS
19%
CORRECTNESS
PERFORMANCE
30%
BAD_PRACTICE
STYLE
PERFORMANCE
STYLE
4%
BAD_PRACTICE
46%
SIGA-PATTERN
Conclusão

Implementação dos padrões restantes

Esse detector pode ser utilizado em
qualquer Sistema Operacional que suporte o
Eclipse SDK.
Perguntas
Download

implementação do siga-pattern no sigaepct-edu através de