ContextLongMethod: Uma Ferramenta
Sensível à Arquitetura para Detecção de
Métodos Longos
Cleverton Santos
Marcos Barbosa Dósea
Cláudio Nogueira Sant’Anna
clevertonmaggot@gmail.com, dosea@ufs.br, santanna@dcc.ufba.br
Universidade Federal de Sergipe
Universidade Federal da Bahia
TOOLS 2016
Maringá, Setembro 2016
Introdução
• A erosão do design é percebida pela surgimento
progressivo de anomalias no código.
• Métodos longos estão entre as anomalias de
código mais comuns independente do domínio
da aplicação.
Introdução
Introdução
• Estratégias automáticas para revisão de código
são baseadas em métricas coletadas do código.
– Valores limiares Genéricos;
– Executadas ao final da codificação;
ContextLongMethod
É um sistema de recomendação que extrai
conhecimento do design de um sistema
referência e utiliza-o para recomendar
candidatos a métodos longos para o
desenvolvedor.
Interesse Arquitetural
1. Papel arquitetural da classe.
2. Design do código da aplicação
Interesse Arquitetural
ContextLongMethod
• Plug-in para o Eclipse
• Abordagens disponibilizadas:
a) Valor limiar genérico.
b) Valor limiar genérico extraído do design de um
sistema de referência.
c) Valores limiares para cada interesse arquitetural
extraídos do design de um sistema de referência
ContextLongMethod
• Funcionamento
ContextLongMethod
• Valores Limiares por Interesse Arquitetural
– O papel arquitetural da classe
– O design do código da aplicação
ContextLongMethod
• Identificação dos Métodos Longos
Exemplo de Uso
• Preferências do Plug-in
Exemplo de Uso
• Métodos Longos Identificados
Arquitetura Referência
• Arquitetura Cartoon
Avaliação
• Nove versões do sistema MobileMedia
– Versão 01 como Sistema Referência
– Comparação com resultados de Paiva et al. (2015)
• inFusion, JDeodorant e PMD
• feature envy, god class e god method
– Precision, Recall e F-Score
Avaliação
• Resultados
Precisão (%) Cobertura (%) % F-Score
Paiva et al. (2015)
inFusion 100 26 41,27
Jdeodorant 35 50 41,18
PMD 100 26 41,27
ContextLongMethod
45 LOC/Método 96 47 63,10
Percentil 75 27 100 42,52
Percentil 90 56 95 70,46
Percentil 75 +
interesse 32 100 48,48
Percentil 90 +
interesse 60 89 71,68
Considerações Finais
• Estendendo a utilização das informações
contextuais para detecção de outros code
smells.
• Aprimorando o algoritmo que recupera
informações do design do sistema referência.
• Plug-in open source
– https://github.com/marcosdosea/ContextSmellDetector
ContextLongMethod: Uma Ferramenta
Sensível à Arquitetura para Detecção de
Métodos Longos
Cleverton Santos
Marcos Barbosa Dósea
Cláudio Nogueira Sant’Anna
clevertonmaggot@gmail.com, dosea@ufs.br, santanna@dcc.ufba.br
Universidade Federal de Sergipe
Universidade Federal da Bahia
TOOLS 2016
Maringá, Setembro 2016

ContextLongMethod - CBSOFT 2016 - TOOLS

  • 1.
    ContextLongMethod: Uma Ferramenta Sensívelà Arquitetura para Detecção de Métodos Longos Cleverton Santos Marcos Barbosa Dósea Cláudio Nogueira Sant’Anna clevertonmaggot@gmail.com, dosea@ufs.br, santanna@dcc.ufba.br Universidade Federal de Sergipe Universidade Federal da Bahia TOOLS 2016 Maringá, Setembro 2016
  • 2.
    Introdução • A erosãodo design é percebida pela surgimento progressivo de anomalias no código. • Métodos longos estão entre as anomalias de código mais comuns independente do domínio da aplicação.
  • 3.
  • 4.
    Introdução • Estratégias automáticaspara revisão de código são baseadas em métricas coletadas do código. – Valores limiares Genéricos; – Executadas ao final da codificação;
  • 5.
    ContextLongMethod É um sistemade recomendação que extrai conhecimento do design de um sistema referência e utiliza-o para recomendar candidatos a métodos longos para o desenvolvedor.
  • 6.
    Interesse Arquitetural 1. Papelarquitetural da classe. 2. Design do código da aplicação
  • 7.
  • 8.
    ContextLongMethod • Plug-in parao Eclipse • Abordagens disponibilizadas: a) Valor limiar genérico. b) Valor limiar genérico extraído do design de um sistema de referência. c) Valores limiares para cada interesse arquitetural extraídos do design de um sistema de referência
  • 9.
  • 10.
    ContextLongMethod • Valores Limiarespor Interesse Arquitetural – O papel arquitetural da classe – O design do código da aplicação
  • 11.
  • 12.
    Exemplo de Uso •Preferências do Plug-in
  • 13.
    Exemplo de Uso •Métodos Longos Identificados
  • 14.
  • 15.
    Avaliação • Nove versõesdo sistema MobileMedia – Versão 01 como Sistema Referência – Comparação com resultados de Paiva et al. (2015) • inFusion, JDeodorant e PMD • feature envy, god class e god method – Precision, Recall e F-Score
  • 16.
    Avaliação • Resultados Precisão (%)Cobertura (%) % F-Score Paiva et al. (2015) inFusion 100 26 41,27 Jdeodorant 35 50 41,18 PMD 100 26 41,27 ContextLongMethod 45 LOC/Método 96 47 63,10 Percentil 75 27 100 42,52 Percentil 90 56 95 70,46 Percentil 75 + interesse 32 100 48,48 Percentil 90 + interesse 60 89 71,68
  • 17.
    Considerações Finais • Estendendoa utilização das informações contextuais para detecção de outros code smells. • Aprimorando o algoritmo que recupera informações do design do sistema referência. • Plug-in open source – https://github.com/marcosdosea/ContextSmellDetector
  • 18.
    ContextLongMethod: Uma Ferramenta Sensívelà Arquitetura para Detecção de Métodos Longos Cleverton Santos Marcos Barbosa Dósea Cláudio Nogueira Sant’Anna clevertonmaggot@gmail.com, dosea@ufs.br, santanna@dcc.ufba.br Universidade Federal de Sergipe Universidade Federal da Bahia TOOLS 2016 Maringá, Setembro 2016