Usp Ufba Ferramentas Analizo Antlr

campuspartybrasil 481 views 16 slides Jan 28, 2010
Slide 1
Slide 1 of 16
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16

About This Presentation

No description available for this slideshow.


Slide Content

Métricas na Prática
Lucianna Thomaz
[email protected]
João M. de Miranda
[email protected]

Como calcular as métricas?
Como extrair informações do código para
calcular as métricas?
Duas ferramentas:
Analizo
Novo extrator

Analizo
Ferramenta para análise do código-fonte
Multi-linguagem (C, C++ e Java)
Uso simples pela linha de comando
Reporta informações gerais e individuais de
cada módulo
Feita em Perl
http://softwarelivre.org/mezuro/analizo

Usando a Analizo
Um exemplo bem simples em Java...
HelloWorld.java
Main.java

Usando a Analizo
$ analizo-metrics hello_world/java/
Resultados Gerais Resultados do
HelloWorld.java
Resultados do
Main.java

Entendendo Analizo
Funcionamento da Analizo

Doxyparse
O Doxyparse usa o parser do Doxygen e
reporta as informações das suas estruturas de
dados
A chave para a extração de informações multi-
linguagem é o Doxygen

Usando o Doxyparse
Outro exemplo simples, agora em C++...
cat.cc
cat.h mammal.h animal.h
main.cc

Usando o Doxyparse
$ doxyparse animals/cpp/

O problema
Queriamos extrair mais informações dos
métodos, atributos e classes
Complexidade Ciclomática, parâmetros,
abstratos e virtuais
Para resolver teríamos que mexer no Doxygen
Decidimos fazer um novo extrator!

Novo Extrator
Uso da ANTLR (www.antlr.org)
”is a language tool that provides a framework
for constructing recognizers, interpreters,
compilers, and translators from grammatical
descriptions containing actions in a variety of
target languages”
Gerador de Lexer e Parser na target language

Novo Extrator
● Definição de uma gramática
para reconhecer os padrões
desejados
Trecho da gramática para
definição de método em Java
● Target Language: Ruby

Uma Gramática
Queremos reconhecer uma
simples declaração de variável:
•Toda declaração de variável
é formada por um tipo e seu
nome
•Pode também conter uma
inicialização com um número
Como fica a gramática?

O Modelo
Utilizamos o modelo para guardar as
informações e reportá-las ao final
Classe
Atributos
Métodos
Variáveis Locais
Parâmetros
Usos de variáveis e métodos
Cada um contém seu tipo e modificadores

Usando o Novo Extrator
Rodando para o mesmo
HelloWorld.java

Métricas na Prática
Lucianna Thomaz
[email protected]
João M. de Miranda
[email protected]
Tags