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

Usp Ufba Ferramentas Analizo Antlr

Embed Size (px)

Citation preview

Page 1: Usp Ufba Ferramentas Analizo Antlr

Métricas na Prática

Lucianna Thomaz [email protected]

João M. de Miranda [email protected]

Page 2: Usp Ufba Ferramentas Analizo Antlr

Como calcular as métricas?

Como extrair informações do código para calcular as métricas?

Duas ferramentas: Analizo Novo extrator

Page 3: Usp Ufba Ferramentas Analizo Antlr

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

Page 4: Usp Ufba Ferramentas Analizo Antlr

Usando a Analizo

Um exemplo bem simples em Java...

HelloWorld.java

Main.java

Page 5: Usp Ufba Ferramentas Analizo Antlr

Usando a Analizo

$ analizo-metrics hello_world/java/

Resultados Gerais Resultados do HelloWorld.java

Resultados doMain.java

Page 6: Usp Ufba Ferramentas Analizo Antlr

Entendendo Analizo

Funcionamento da Analizo

Page 7: Usp Ufba Ferramentas Analizo Antlr

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

Page 8: Usp Ufba Ferramentas Analizo Antlr

Usando o Doxyparse

Outro exemplo simples, agora em C++...

cat.cc

cat.h mammal.h animal.h

main.cc

Page 9: Usp Ufba Ferramentas Analizo Antlr

Usando o Doxyparse

$ doxyparse animals/cpp/

Page 10: Usp Ufba Ferramentas Analizo Antlr

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!

Page 11: Usp Ufba Ferramentas Analizo Antlr

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

Page 12: Usp Ufba Ferramentas Analizo Antlr

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

Page 13: Usp Ufba Ferramentas Analizo Antlr

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?

Page 14: Usp Ufba Ferramentas Analizo Antlr

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

Page 15: Usp Ufba Ferramentas Analizo Antlr

Usando o Novo Extrator

Rodando para o mesmo HelloWorld.java

Page 16: Usp Ufba Ferramentas Analizo Antlr

Métricas na Prática

Lucianna Thomaz [email protected]

João M. de Miranda [email protected]