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 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 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. O QUE É O SIGA-EDU QUEM MANTÉM
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. FALAR SOBRE AS COMPARAÇÕES COM equals() CODIGO-FONTE ANÁLISE DOS BUGS ESTÁ EM CONFORMIDADE CÓDIGO CODIGO-COMPILADO MAIS RÁPIDO
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 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
Conclusão Implementação dos padrões restantes Esse detector pode ser utilizado em qualquer Sistema Operacional que suporte o Eclipse SDK.
Perguntas