230 likes | 401 Views
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.
E N D
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 FindBugsPlugin 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 FindBugsPlugin 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 FindBugsPlugin e como esse detector pode ajudar no processo de desenvolvimento do sistema SIGA-EDU.
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 na detecção de falhas no sistema. • 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 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.
Criando um Detector do FindBugsPlugin para utilização no SIGA-EDU • Situação • Classes “EJB” • Classes “DAO”
Criando um Detector do FindBugsPlugin para utilização no SIGA-EDU • Ambiente de desenvolvimento • Java JDK com variáveis de ambiente configuradas • JDK 1.5 ou mais nova • Eclipse Galileo3.5.0 • FindBugssource1.3.9.qualifier
Criando um Detector do FindBugsPlugin para utilização no SIGA-EDU • Configurando o FindBugsPlugin • findbugs.xml • messages.xml • SIGADetector.java
Criando um Detector do FindBugsPlugin para utilização no SIGA-EDU • Configurando o FindBugsPlugin • 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 FindBugsPlugin para utilização no SIGA-EDU • Configurando o FindBugsPlugin • messages.xml • Definição da nossa categoria: SIGAEDU
Criando um Detector do FindBugsPlugin para utilização no SIGA-EDU • Configurando o FindBugsPlugin • messages.xml • Definição do nosso detector no arquivo messages.xml
Criando um Detector do FindBugsPlugin para utilização no SIGA-EDU • Configurando o FindBugsPlugin • messages.xml • Definição das mensagens visíveis para os bugpatterns identificados pelos conteúdos do atributo type.
Criando um Detector do FindBugsPlugin 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 FindBugsPlugin 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()
Conclusão • Implementação dos padrões restantes • Esse detector pode ser utilizado em qualquer Sistema Operacional que suporte o Eclipse SDK.