SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Métricas na Prática


     Lucianna Thomaz
   lucianna.th@gmail.com


     João M. de Miranda
   joaomm88@gmail.com
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...




                              Main.java



    HelloWorld.java
Usando a Analizo
$ analizo-metrics hello_world/java/




Resultados Gerais      Resultados do     Resultados do
                       HelloWorld.java     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.h             mammal.h             animal.h




       cat.cc                        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
                                 ●   Target Language: Ruby




                 Trecho da gramática para
                definição de método em Java
Uma Gramática

Queremos reconhecer uma           Como fica a gramática?
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
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
   lucianna.th@gmail.com


     João M. de Miranda
   joaomm88@gmail.com

Mais conteúdo relacionado

Mais procurados

Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS DeveloperIntrodução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS DeveloperHenrique Morbin
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Java Básico :: Classe Vector
Java Básico :: Classe VectorJava Básico :: Classe Vector
Java Básico :: Classe VectorWesley R. Bezerra
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Aula 2 conversao de variaveis j option-pane
Aula 2   conversao de variaveis j option-paneAula 2   conversao de variaveis j option-pane
Aula 2 conversao de variaveis j option-paneRafael Pinheiro
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funçõesFellyph Cintra
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Poo1 aula 4 - tipos de dados variáveis-constantes
Poo1   aula 4 - tipos de dados variáveis-constantesPoo1   aula 4 - tipos de dados variáveis-constantes
Poo1 aula 4 - tipos de dados variáveis-constantesDenis Sobrenome
 

Mais procurados (20)

Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS DeveloperIntrodução ao Swift por Henrique Morbin – iOS Developer
Introdução ao Swift por Henrique Morbin – iOS Developer
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Python 3.+
Python 3.+Python 3.+
Python 3.+
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Javascript OO
Javascript OOJavascript OO
Javascript OO
 
Java Básico :: Classe Vector
Java Básico :: Classe VectorJava Básico :: Classe Vector
Java Básico :: Classe Vector
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Java1
Java1Java1
Java1
 
Aula 2 conversao de variaveis j option-pane
Aula 2   conversao de variaveis j option-paneAula 2   conversao de variaveis j option-pane
Aula 2 conversao de variaveis j option-pane
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Poo1 aula 4 - tipos de dados variáveis-constantes
Poo1   aula 4 - tipos de dados variáveis-constantesPoo1   aula 4 - tipos de dados variáveis-constantes
Poo1 aula 4 - tipos de dados variáveis-constantes
 

Destaque (20)

Perspectives On Microsoft And Open Source F Y 10 Customer Presentation
Perspectives On  Microsoft And  Open  Source    F Y 10  Customer  PresentationPerspectives On  Microsoft And  Open  Source    F Y 10  Customer  Presentation
Perspectives On Microsoft And Open Source F Y 10 Customer Presentation
 
Astrofotografia geral campusparty
Astrofotografia geral campuspartyAstrofotografia geral campusparty
Astrofotografia geral campusparty
 
Apresentacao cp2011
Apresentacao cp2011Apresentacao cp2011
Apresentacao cp2011
 
Apresentacao cp2011
Apresentacao cp2011Apresentacao cp2011
Apresentacao cp2011
 
Campus Paty 2010
Campus Paty 2010Campus Paty 2010
Campus Paty 2010
 
Alerta 199 Campus Party 2010
Alerta 199   Campus Party 2010Alerta 199   Campus Party 2010
Alerta 199 Campus Party 2010
 
Sds.pt
Sds.ptSds.pt
Sds.pt
 
A Tecnologia Java Livre
A Tecnologia Java LivreA Tecnologia Java Livre
A Tecnologia Java Livre
 
Kde comunidade
Kde comunidadeKde comunidade
Kde comunidade
 
Campus partybrasil2011 v2
Campus partybrasil2011 v2Campus partybrasil2011 v2
Campus partybrasil2011 v2
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Tempestades solares: mitos e verdades
Tempestades solares: mitos e verdadesTempestades solares: mitos e verdades
Tempestades solares: mitos e verdades
 
Demonopolios.pt
Demonopolios.ptDemonopolios.pt
Demonopolios.pt
 
Palestra
PalestraPalestra
Palestra
 
Palestra O twitter e o poder do usuário
Palestra O twitter e o poder do usuárioPalestra O twitter e o poder do usuário
Palestra O twitter e o poder do usuário
 
Nuvens livres nas_escolas
Nuvens livres nas_escolasNuvens livres nas_escolas
Nuvens livres nas_escolas
 
Social interface
Social interfaceSocial interface
Social interface
 
Usp Ufba Codigo Fonte X Atratividade
Usp Ufba Codigo Fonte X AtratividadeUsp Ufba Codigo Fonte X Atratividade
Usp Ufba Codigo Fonte X Atratividade
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro Inevitável
 

Semelhante a Métricas na Prática: Ferramentas de Extração

Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Linguagem Java OO | Curso 3WAY Networks
Linguagem Java OO | Curso 3WAY NetworksLinguagem Java OO | Curso 3WAY Networks
Linguagem Java OO | Curso 3WAY Networks3Way Networks
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.xNorton Guimarães
 
Algoritomos aula 3 rafael
Algoritomos aula 3 rafaelAlgoritomos aula 3 rafael
Algoritomos aula 3 rafaelhugodrocha
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01EdsonEmanoel
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cMaicon Rodrigues
 

Semelhante a Métricas na Prática: Ferramentas de Extração (20)

Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Ruby
RubyRuby
Ruby
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Linguagem Java OO | Curso 3WAY Networks
Linguagem Java OO | Curso 3WAY NetworksLinguagem Java OO | Curso 3WAY Networks
Linguagem Java OO | Curso 3WAY Networks
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Algoritomos aula 3 rafael
Algoritomos aula 3 rafaelAlgoritomos aula 3 rafael
Algoritomos aula 3 rafael
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-c
 
ANTLR & ANTTLRWorks
ANTLR & ANTTLRWorksANTLR & ANTTLRWorks
ANTLR & ANTTLRWorks
 

Mais de Campus Party Brasil

Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosCampus Party Brasil
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Campus Party Brasil
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solarCampus Party Brasil
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custoCampus Party Brasil
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresCampus Party Brasil
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusivaCampus Party Brasil
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXCampus Party Brasil
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusivaCampus Party Brasil
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreCampus Party Brasil
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito ImpressoCampus Party Brasil
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasCampus Party Brasil
 

Mais de Campus Party Brasil (20)

Wordpress
WordpressWordpress
Wordpress
 
Buracos negros
Buracos negrosBuracos negros
Buracos negros
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Técnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivosTécnicas forenses para a recuperação de arquivos
Técnicas forenses para a recuperação de arquivos
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
A busca por planetas além do sistema solar
A busca por planetas além do sistema solarA busca por planetas além do sistema solar
A busca por planetas além do sistema solar
 
Passeio virtual pelo LHC
Passeio virtual pelo LHCPasseio virtual pelo LHC
Passeio virtual pelo LHC
 
Construção de uma luneta a baixo custo
Construção de uma luneta a baixo custoConstrução de uma luneta a baixo custo
Construção de uma luneta a baixo custo
 
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livresHardware livre Arduino: eletrônica e robótica com hardware e software livres
Hardware livre Arduino: eletrônica e robótica com hardware e software livres
 
Robótica e educação inclusiva
Robótica e educação inclusivaRobótica e educação inclusiva
Robótica e educação inclusiva
 
Fazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectXFazendo do jeito certo: criando jogos sofisticados com DirectX
Fazendo do jeito certo: criando jogos sofisticados com DirectX
 
Blue Via
Blue ViaBlue Via
Blue Via
 
Linux para iniciantes
Linux para iniciantesLinux para iniciantes
Linux para iniciantes
 
Robótica e educação inclusiva
	Robótica e educação inclusiva	Robótica e educação inclusiva
Robótica e educação inclusiva
 
Gestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software LivreGestão e monitoramento de redes e dispositivos com Software Livre
Gestão e monitoramento de redes e dispositivos com Software Livre
 
Confecção de Circuito Impresso
Confecção de Circuito ImpressoConfecção de Circuito Impresso
Confecção de Circuito Impresso
 
Vida de Programador
Vida de Programador Vida de Programador
Vida de Programador
 
Virtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendenciasVirtualização, cloud computig e suas tendencias
Virtualização, cloud computig e suas tendencias
 
Desafio Robótica Livre
Desafio Robótica LivreDesafio Robótica Livre
Desafio Robótica Livre
 

Métricas na Prática: Ferramentas de Extração

  • 1. Métricas na Prática Lucianna Thomaz lucianna.th@gmail.com João M. de Miranda joaomm88@gmail.com
  • 2. Como calcular as métricas?  Como extrair informações do código para calcular as métricas?  Duas ferramentas:  Analizo  Novo extrator
  • 3. 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
  • 4. Usando a Analizo Um exemplo bem simples em Java... Main.java HelloWorld.java
  • 5. Usando a Analizo $ analizo-metrics hello_world/java/ Resultados Gerais Resultados do Resultados do HelloWorld.java Main.java
  • 7. 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
  • 8. Usando o Doxyparse Outro exemplo simples, agora em C++... cat.h mammal.h animal.h cat.cc main.cc
  • 9. Usando o Doxyparse $ doxyparse animals/cpp/
  • 10. 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!
  • 11. 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
  • 12. Novo Extrator ●Definição de uma gramática para reconhecer os padrões desejados ● Target Language: Ruby Trecho da gramática para definição de método em Java
  • 13. Uma Gramática Queremos reconhecer uma Como fica a gramática? 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
  • 14. 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
  • 15. Usando o Novo Extrator Rodando para o mesmo HelloWorld.java
  • 16. Métricas na Prática Lucianna Thomaz lucianna.th@gmail.com João M. de Miranda joaomm88@gmail.com