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

PDF
Programação orientada a objetos – III
PDF
Aula 03 - Classes math e string - JAVA
PDF
Programação orientada a objetos - IV
PDF
Aula 02 - Aspectos fundamentais - JAVA
PPTX
Java: Manipulação de Arquivos
PDF
Exercícios de programação orientado a objeto
PPTX
04 api javadoc
Programação orientada a objetos – III
Aula 03 - Classes math e string - JAVA
Programação orientada a objetos - IV
Aula 02 - Aspectos fundamentais - JAVA
Java: Manipulação de Arquivos
Exercícios de programação orientado a objeto
04 api javadoc

Mais procurados (20)

PPTX
Introdução ao Swift por Henrique Morbin – iOS Developer
PPTX
Introdução a linguagem C# (CSharp)
PDF
Programação Orientada a Objetos - 001
PDF
Curso de OO com C# - Parte 02 - Introdução ao C#
PDF
Apostila de Introdução a POO com C#
PDF
Orientação a Objetos em Python
PPTX
Javascript OO
PPT
Java Básico :: Classe Vector
PPTX
Curso Java Básico - Aula 01
PDF
Introducao ao C#
PPTX
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
PDF
Python - Programação funcional
PPT
Aula 2 conversao de variaveis j option-pane
PPT
4º Aula do Grupo de estudos sobre funções
PDF
Semanaupecaruaru2013 c++para iniciantes
PDF
Introdução a estruturas de dados em python
PDF
Programando com Python
PPTX
Poo1 aula 4 - tipos de dados variáveis-constantes
Introdução ao Swift por Henrique Morbin – iOS Developer
Introdução a linguagem C# (CSharp)
Programação Orientada a Objetos - 001
Curso de OO com C# - Parte 02 - Introdução ao C#
Apostila de Introdução a POO com C#
Orientação a Objetos em Python
Javascript OO
Java Básico :: Classe Vector
Curso Java Básico - Aula 01
Introducao ao C#
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Python - Programação funcional
Aula 2 conversao de variaveis j option-pane
4º Aula do Grupo de estudos sobre funções
Semanaupecaruaru2013 c++para iniciantes
Introdução a estruturas de dados em python
Programando com Python
Poo1 aula 4 - tipos de dados variáveis-constantes
Anúncio

Destaque (20)

PDF
Perspectives On Microsoft And Open Source F Y 10 Customer Presentation
PPT
Astrofotografia geral campusparty
ODP
Apresentacao cp2011
PDF
Apresentacao cp2011
PPT
Campus Paty 2010
PDF
Alerta 199 Campus Party 2010
PDF
A Tecnologia Java Livre
PDF
Kde comunidade
PDF
Campus partybrasil2011 v2
PDF
Coding dojo
ODP
Tempestades solares: mitos e verdades
PDF
Demonopolios.pt
PDF
PPTX
Palestra O twitter e o poder do usuário
PDF
Nuvens livres nas_escolas
PDF
Social interface
PDF
Usp Ufba Codigo Fonte X Atratividade
PDF
Apresentação M V C
PDF
Android: Conheça o Futuro Inevitável
Perspectives On Microsoft And Open Source F Y 10 Customer Presentation
Astrofotografia geral campusparty
Apresentacao cp2011
Apresentacao cp2011
Campus Paty 2010
Alerta 199 Campus Party 2010
A Tecnologia Java Livre
Kde comunidade
Campus partybrasil2011 v2
Coding dojo
Tempestades solares: mitos e verdades
Demonopolios.pt
Palestra O twitter e o poder do usuário
Nuvens livres nas_escolas
Social interface
Usp Ufba Codigo Fonte X Atratividade
Apresentação M V C
Android: Conheça o Futuro Inevitável
Anúncio

Semelhante a Usp Ufba Ferramentas Analizo Antlr (20)

PDF
Ruby & Rails
PPTX
PDF
Java e orientação a objetos - aula 01
PDF
Linguagem Java OO | Curso 3WAY Networks
PPTX
Linguagem Java- Iniciação à programação Java
PDF
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
PDF
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
PDF
Curso de Java (Parte 2)
PDF
TDC 2011 Goiânia: Evolução da linguagem de programação C#
PDF
TechEd 2011 Review - Evolução da linguagem de programação C#
PDF
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
PDF
Programação Web com PHP 7.x
PPTX
01 introducao ao java
PDF
Algoritomos aula 3 rafael
ODP
Programação Defensiva
PPT
aula__tecnica_de_programação_algoritmo.ppt
PPTX
Clean code em C#
ODP
Construção de Frameworks com Annotation e Reflection API em Java
PDF
Introdução a lógica de Programação Aula-01
PDF
Apostila de-introdução-à-linguagem-c
Ruby & Rails
Java e orientação a objetos - aula 01
Linguagem Java OO | Curso 3WAY Networks
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...
Curso de Java (Parte 2)
TDC 2011 Goiânia: Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
Programação Web com PHP 7.x
01 introducao ao java
Algoritomos aula 3 rafael
Programação Defensiva
aula__tecnica_de_programação_algoritmo.ppt
Clean code em C#
Construção de Frameworks com Annotation e Reflection API em Java
Introdução a lógica de Programação Aula-01
Apostila de-introdução-à-linguagem-c

Mais de Campus Party Brasil (20)

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

Último (20)

PPT
Apresentacao Do Trabalho de Inteligencia
PPTX
Importacao_Ordem_Customizacao_SAP_S4HANA.pptx
PPTX
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
PPT
inteligencia_artificial REPRESENTAÇÃO DO CONHECECIMENTO
PPTX
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
PPTX
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
PDF
pdfcoffee.com_metalografia-25-pdf-free.pdf
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PDF
Gestão contínua de exposição a ameaças petrobras
PDF
Arquitetura de Software slides sommerville
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PPTX
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
PDF
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
PPTX
Modelo para Qualificação de Mestrado - Tecnologia da Informação
PPTX
Introdução a Computação em Nuvem-parte2-T2
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PPTX
Panorama da aviação civil brasileira ANAC
PDF
wp-sn-advanced-high-availability-architecture (pt-br).pdf
PPTX
Legislação aeronautica na aviação civil Brasileira
Apresentacao Do Trabalho de Inteligencia
Importacao_Ordem_Customizacao_SAP_S4HANA.pptx
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
inteligencia_artificial REPRESENTAÇÃO DO CONHECECIMENTO
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
pdfcoffee.com_metalografia-25-pdf-free.pdf
POO - Aula 05 - Herança - Generalização e Especialização.pdf
Gestão contínua de exposição a ameaças petrobras
Arquitetura de Software slides sommerville
Padrões de Beleza I - Estética Corporal e Saúde
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
Modelo para Qualificação de Mestrado - Tecnologia da Informação
Introdução a Computação em Nuvem-parte2-T2
POO - Aula 05 - Herança - Generalização e Especialização.pdf
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
Panorama da aviação civil brasileira ANAC
wp-sn-advanced-high-availability-architecture (pt-br).pdf
Legislação aeronautica na aviação civil Brasileira

Usp Ufba Ferramentas Analizo Antlr

  • 1. Métricas na Prática Lucianna Thomaz [email protected] João M. de Miranda [email protected]
  • 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 [email protected] João M. de Miranda [email protected]