Skip to content

Comparação de Métricas de Qualidade de Repositórios Python e Java

Notifications You must be signed in to change notification settings

TheMarini/python-vs-java-metrics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 Métricas de Python vs. Métricas de Java

📇 Sumário

  1. 🏷️ Versões
  2. 🗒️ Relatório Final
  3. 🧮 Dados
  4. ℹ️ Introdução
  5. 🔥 Instalação
  6. 👥 Autores

🏷️ Versões

Obs.: essa lista pode estar desatualizada conforme o lançamento de novas releases. A versão atualizada sempre estará no último lançamento feito, o qual se encontra na branch master.

🗒️ Relatório Final

Link para o PDF com as análises e métricas.

🧮 Dados

As métricas - e as análises sobre elas - foram baseadas conforme os dados diponíveis em python.csv e java.csv presentes neste repositório, obtidos em 07/10/2020 às 23h30 através do código descrito a seguir.

ℹ️ Introdução

Foi desenvolvido um script em Node.js que, a partir de um token da API do GitHub, realiza uma busca paginada da query GraphQL a seguir - alternando somente o atributo language entre "Python" e "Java", conforme desejado - e calcula o LOC, SLOC e CLOC de cada repositório enquanto, paralelamente, os resultados são salvos em seus respectivos arquivos CSV.

{
    search(type: REPOSITORY, query: "stars:>100 language:python", first: 100) {
      repositoryCount
      pageInfo {
        endCursor
      }
      nodes {
        ... on Repository {
          nameWithOwner
          stargazerCount
          createdAt
          forkCount
          watchers {
            totalCount
          }
          releases {
            totalCount
          }
        }
      }
    }
  }  

⚠️ AVISO: devido há limitações da API do GitHub, só é possível ter uma boa taxa de sucesso na requisição da query acima se ela for feita de 5 em 5 resultados. Por isto, este é o número máximo de resultados por página configurado no código, necessitando então de 20 requisições no total para se chegar aos 100 desejados.

Enquanto as métricas relacionadas ao repositório são obtidas através da​ query acima, os valores de LOC, SLOC e CLOC são obtidos através da ferramenta de análise estática de código ​sloc​, pelo comando sloc <diretório> --keys total,source,comment. Desta forma, a cada resultado da busca paginada, é clonado automaticamente um repositório, calculado com a ferramenta, armazenado os valores no respectivo CSV, deletado do disco de armazenamento e feito o mesmo processo para o repositório seguinte.

🔥 Instalação

  1. Instale as dependências:
    npm install
    
  2. (Recomendado) Crie a váriável de ambiente TOKEN a partir de um arquivo .env, na raiz do projeto, com o seguinte conteúdo:
    TOKEN=seu_token_do_GitHub_API
    
    ℹ️ Não se preocupe, caso não queira realizar o item acima, poderá informar seu token diretamente na linha de comando.
  3. Execute:
    npm start
    
  4. Pronto, agora é só esperar e os resultados estarão no diretório /data (a partir da raiz do projeto) com o nome python.csv e java.csv ✔️

👥 Autores

About

Comparação de Métricas de Qualidade de Repositórios Python e Java

Resources

Stars

Watchers

Forks

Packages

No packages published