Códigos do GitHub consiste em 82% de clones de arquivos

A maioria dos arquivos de código fonte hospedados no GitHub são realmente clones de arquivos criados anteriormente, de acordo com um estudo recente realizado por uma equipe conjunta de pesquisadores da Universidade da Califórnia, Irvine, Universidade Técnica Checa, Microsoft Research e Northeastern University.

Os pesquisadores analisaram 4,5 milhões de projetos originais (não adiantados) GitHub, com um total de 482 milhões de arquivos diferentes. Eles descobriram que apenas 85 milhões de arquivos eram únicos, ou aproximadamente 17,63% de todos os arquivos analisados.

Os projetos de JavaScript continham os arquivos mais duplicados

O estudo apenas analisou projetos de código-fonte escritos em C ++, Java, JavaScript e Python. Dos quatro, os projetos JavaScript continham o código mais duplicado, com 94% dos arquivos sendo um clone 100% idêntico (baseado no arquivo hash) de outro arquivo hospedado no GitHub.

C ++ ficou em segundo lugar, com 73% de todos os arquivos sendo duplicados de outros arquivos, enquanto o Python gravou 71% de reutilização de código e Java apenas 40%.

Os pesquisadores também analisaram arquivos duplicados com base em parciais do conteúdo do arquivo (com base em hashes de token), mas os resultados eram quase idênticos.

NPM é o responsável pela maioria dos duplicados de arquivos JavaScript

A razão pela qual o JavaScript continha os exemplos de código mais reutilizados é simples de explicar, e o NPM, o gerenciador de pacotes de fato para todos os projetos de JavaScript do lado do cliente e do servidor.

Enquanto os gerentes de pacotes existem em outras linguagens de programação, o NPM é o maior pacote de pacotes do mundo no mundo, com mais de 350.000 bibliotecas, que é mais do que o dobro do registro de pacotes mais popular, o repositório Apache Maven.

Como o NPM contém bibliotecas mais úteis, os desenvolvedores também usam mais. Como os desenvolvedores usam mais, eles importam mais bibliotecas em projetos JavaScript do que em outras linguagens de programação, daí a grande quantidade de código reutilizado.

Quanto ao código mais “reapropriado”, a situação é a seguinte:

C ++: Biblioteca GNU ISO C ++, um modelo particular de casa de estudo, exemplos de Arduino
Java: Minecraft-API, PhoneGap
JavaScript: o modelo Hello World de PhoneGap, OctoPress, um modelo BlueMix
Python: Cactus, Shadowsocks, Scons

A pesquisa de reutilização de código é crítica para outros estudos

“O sistema de controle de origem sobre o qual o GitHub é construído, o Git, incentiva os projetos de forks”, dizem os pesquisadores. “No entanto, há muito mais duplicação de código que ocorre no GitHub que não atravessa o mecanismo da filtragem e, em vez disso, passa por copiar e colar arquivos e até bibliotecas inteiras”.

“Este estudo tem algumas conseqüências importantes. Em primeiro lugar, parece que o próprio GitHub pode se comprimir  para uma fração do que é. Em segundo lugar, cada vez mais pesquisas estão sendo feitas usando grandes coleções de projetos de código aberto prontamente disponível no GitHub.

“A duplicação de código pode distorcer severamente as conclusões desses estudos. A suposição de diversidade de projetos nesses conjuntos de dados pode ser comprometida. DéjàVu pode ajudar pesquisadores e desenvolvedores a navegar através da clonagem de códigos no GitHub e evitá-lo quando necessário”.

O trabalho de pesquisa da equipe é intitulado “DéjàVu: A Map of Code Duplicates on GitHub”, e está disponível para download a partir daqui e aqui . Os dados brutos do estudo também estão disponíveis como depósitos do MySQL que podem ser baixados a partir daqui .

FONTE:  BLEEPING COMPUTER

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *