• Nenhum resultado encontrado

Atividade2

N/A
N/A
Protected

Academic year: 2021

Share "Atividade2"

Copied!
14
0
0

Texto

(1)

DETECÇÃO DE CLONES

Emmanuel Tenório Férrer – et Gabriela Fernanda - gfsv

(2)

Configuracao mais adequada

(3)

O clone de id 51 foi o clone que mais ocorreu e o clone que mais apareceu em arquivos diferentes. As classes que o clone ocorreu foram: “DaoNoticia”,”DaoLinhaPesquisa”, “DaoPesquisa” e “DaoMembro”. Observamos que esses clones quando aparece no mesmo arquivo eles são mais parecidos do que em arquivos diferentes. Esse clone tem um tamanho 80 e a quantidade de tipos de tokens é 20. Esse é um clone significativo. Abaixo , a figura ilustra esse clone:

(4)

O clone 74 é o clone com o maior do McCabe (4). É o clone mais complexo. É um clone significativo. Possui um tamanho de 214 e 27 tipos de tokens

O clone 161 apresenta a maior taxa de RNR com 0.940. Este é um clone bastante significativo pois é exatamente igual nas 4 vezes em que aparece. Tem tamanho 66 e 17 tipos de tokens:

(5)

O clone 141 não é um clone significativo, por fazer coisas diferentes. Aparece 2 vezes no mesmo arquivo “AdcionarPublicacaoServlet”com 61 de tamanho e 15 tipos de tokens:

O clone 122 não é significativo. Apesar de incluir um método que faz a mesma coisa, não consideramos ele como significativo, apesar de tem um raio com valor 9 , pois inclui chamada de métodos diferentes. Podemos ver na figura:

Clones significativos:

 5 – Funções de remover, muda apenas o parâmetro

 6 – O método doGet aparece em 4 arquivos e em todos executa a mesma ação

 19 – Não sabemos se este clone é significativo, pois os tipos de retorno do método são diferentes.

 35 – O método doGet aparece em 2 arquivos e em todos executa a mesma ação.  74, 84, 161 e 203 – São os mesmos métodos em classes separadas

(6)

 171 – Classe foto e pdf com o mesmo método

Clones não significativos:  141, 122

Foram encontrados 13 clones, sendo 11 significativos e 2 não significativos.

Configurações com os outros valores

das outras equipes

(7)
(8)

Configuração padrão do programa

Para as configuração padrão do programa, os seguinte dados foram recolhidos:

(9)

Um clone significativo para essa configuração foi encontrado no adicionar de “adcionarPublicacaoServlet.java” e “adcionarMembroServlet.java”. A função “ProcessFormField()” aparece nos dois arquivos de forma idêntica. Como mostrado na figura abaixo:

(10)

O segundo clone significativo que aparece nesses dois arquivos é dentro de da função “extractFields()” em “adcionarMembroServlet.java” e dentro da função “doPost()” em “adcionarPublicacaoServlet.java” . Embora os métodos sejam diferentes em uma determinada parte do código dessas funções eles fazem um procedimento igual . A figura abaixo ilustra esse procedimento.

A Figura a seguir mostra em vermelho mais um exemplo de clone significativo e em verde um clone não significativo

(11)

Informações dos clones detectados nos arquivos “adcionarPublicacaoServlet.java” e “adcionarMembroServlet.java.

(12)

 O clone identificado com o id 3 é a função “processFormField()”. Aparece em 6 arquivos . O tamanho desse clone é de 53 e ele pode ser considerado um clone significativo. Pois sua estrutura é a mesma em todos os arquivos em que ele aparece. O clone possui 15 tokens:

 O clone identificado com o id 9 é a função “RemoverMembroServlet ()”. Aparece em 2 arquivos diferentes . O tamanho desse clone é de 89. É um clonesignificativo. Sua estrura é muito parecida nos 2 arquivos em que aparece, basicamente mudando apenas o valores do parâmetros. Possui 15 tokens.

 O clone identificado com o id 10 são classe que possui a mesma estruturas , diferenciando apenas nos valores do parâmetros além do nome da classe. São elas:

RemoverMembroServlet, DetalharPublicacaoServlet, AlterarNoticiaServlet, DetalharNoticiaServlet. O tamanho do clone é 87 . é um clone significativo com 16

(13)

 Um clone bem maior é o clone de id 13. Com o tamanho de 181 e 25 tokens, ele engloba duas funções(“processFormField()”, “doPost”) em 3 arquivos. Porém partes desse clone não deveria ser detectado como clone , pois são informações dos (ou para os ) atributos da classe Membro e Publicação e estes são diferentes. Parte desse clone é significativo.

 O clone de id 27 aparece duas vezes no mesmo arquivo como também em outro arquivo. Para os arquivos diferentes a estrutura desse clone é diferente e não deveria ser considerado como um clone significativo. Porém quando aparece no mesmo arquivo o clone é significativo, pois poderíamos reusar a função modificando os valores dos parâmetros. Seu tamanho é 114 e 16 tokens.

 Para o clone 36 , o programa não detecta que ele deveria ter o mesmo id do clone de id 10. Apesar do seu tamanho ser de 76 e possui 15 tokens, ambos diferentes dos valores do id 10, a estrutura desse clone faz o mesmo que o clone de id 10 faz. O sistema não percebeu que no clone id 10 a variável criada do tipo int não é usado pela estrutura e portanto não deveria ser distinguido do clone de id 36. Esse é um clone significativo e aparece em dois arquivos : “DetalharMembroServlet”, e

“AlterarMembroServlet”.

 O clone de id 44 não é um clone significativo, pois nos 2 arquivos em que aparece , a estrutura do clone faz alterar campos diferentes. Seu tamanho é 56 e possui 13 tokens.

 Clone de id 51 possui tamanho 80 e 20 tokens . Aparece em 4 arquivos:

“DaoPublicacao”, “DaoLinhaPesquisa”, “DaoNoticia”, “DaoMembro.” São funções

gets que se tornam diferentes apenas no valor e no tipo do parâmetro. É um clone significativo. (Penso que o tipo do parâmetro não está influenciando).

 O clone de id 63 com 215 de tamanho e 27 tokens ele pega parte do clone 51 e acrescenta mais conteúdo . Aparece em 2 arquivos. Poderiamos distrinchar esse clone pegando uma parte dele e criando uma função , passando a classe como parâmetro . Esse conteúdo seria o mesmo conteúdo que vem na função “List<Noticia>

getNoticias”, “List<LinhaPesquisa> getLinhasPesquisa”.

 O clone de id 106 com 161 de tamanho e 21 tokens podereria ter sido encontrando também na class Filtrar MembrosServlet” além de ser encontrada nas classes

“FiltrarNoticiasServlet”, “FiltrarPublicacoesServlet”, “FiltrarLinhasServlet”. Mas não faz

isso pois na class “FiltrarMembrosServlet”, a função doPost() não está posicionado logo acima da função “addField”. Este não é um clone significativo, pois existe outro clone que detecta a clonagem da função “addField”.

 O clone 117 não é um clone significante. Tem tamanho 98, aparece em dois arquivos e possui 13 tokens.

(14)

 O clone 120 não é significativo, pois são criadas classes diferentes. Possui 52 de tamanho e 15 tokens. (São condições para saber se é Mestrado ou Doutorado).

 Clone de id 131 e o id 134 de tamanho 69 e 20 tokens e tamanho 59 e 12 tokens respectivvamente não são significativos , pois já faz chamada a outros métodos . São 4 e 2 classes respectivamente que esse clone aparece (clone de exceção.).

 Os clones de id 144 e 145 são clones que o loop em um Iterator faz a mesma coisa, porém na condição do else os clones agem diferentes. Por tanto, podemos considerar como um clone não siginificativo. A quantidade de tokens são 16 e 17 e o tamanho é 64 e 73 respectivamente.

'

 O clone de id 158 é um clone significativo. São as classes de “FotoServlet“ e

“PDFServlet”. O formato do documento é o que tem de diferente nas classes. Seu

tamanho é 117 e possui 19 tokens.

 Clone de id 185 significativos . A função “addField” é idêntica nas 4 classes em que ela aparece. Seu tamanho é 92 e possui 20 tokens.

 Clone 220 é significativo. O método “List<String> getElementsWithSplitAndTrim”é igual em tudo em todos os 2 arquivos em que aparece Seu tamanho é 59 e possui 19 tokens.

 Clone 234 talves seja significativo, se o tipo da classe não fizer diferença para o procedimento que está sendo feito, podemos fazer uma melhora no código desses loops . Seu tamanho é 52 e possui 18 tokens.

 Clone 235 não é significativo, Não vale a pena fazer mudanças.(IF else) Aparece em apenas um arquivo . Seu tamanho é 52 e possui 18 tokens.

Referências

Documentos relacionados

Considerando a potencialidade dos recursos didáticos para a formação continuada de professores alfabetizadores e para promover o avanço das aprendizagens dos alunos no ciclo

After 24 h the aggregation rate (AR) was assessed morphologically by the detection of a single, cohesive cell mass or by a re-expanded and reorganized blas- tocyst. In mice we used

1721.35.03.00.00 Transferências Diretas do FNDE referentes ao Programa Nacionalde Alimentação Escolar - PNAE FNDE - FUNDO NAC. 1721.35.03.00.00 Transferências Diretas do FNDE

Baseado nestes principais pontos, o objetivo deste trabalho foi estudar e avaliar o comportamento tribológico de aditivos do tipo modificadores de atrito de naturezas

O Diretor de Escola Técnica da ETEC Rubens de Faria e Souza, faz saber aos candidatos abaixo relacionados o deferimento e indeferimento das inscrições e CONVOCA para a

3 – Os Termos de Compromisso de estágio obrigatório do curso deverão ser recolhidos pelo professor orientador do estágio e entregues todos juntos na DPPF, não serão

Madalena Freire (1983) defende que o papel da professora é o de organizadora: “no sentido de quem observa, colhe os dados, trabalha em cima deles, com total respeito.. A

Strang, &#34;Finite element multiwavelets&#34;, in Wavelet Applications in Signal and Image Processing II, SPIE Proceedings Volume 2303, A. Unser, eds., Society of