|
1 | | -# python-vs-java-metrics |
2 | | -Comparação de Métricas de Qualidade de Repositórios Python e Java |
| 1 | +# :bar_chart: Métricas de Python vs. Métricas de Java |
| 2 | + |
| 3 | +## :card_index: Sumário |
| 4 | + |
| 5 | +1. [:label: Versões](#label-versões) |
| 6 | +2. [:abacus: Dados](#abacus-dados) |
| 7 | +3. [:information_source: Introdução](#information_source-introdução) |
| 8 | +4. [:fire: Instalação](#fire-instalação) |
| 9 | +5. [:busts_in_silhouette: Autores](#busts_in_silhouette-autores) |
| 10 | + |
| 11 | +## :label: Versões |
| 12 | + |
| 13 | +- [Sprint 1 (v0.1.0) - _current_](https://github.com/TheMarini/python-vs-java-metrics/tree/v0.1.0) |
| 14 | + |
| 15 | +**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](https://github.com/TheMarini/python-vs-java-metrics). |
| 16 | + |
| 17 | +## :abacus: Dados |
| 18 | + |
| 19 | +As métricas - e as futuras análises sobre elas - serão baseadas conforme os dados diponíveis em [python.csv](https://github.com/TheMarini/python-vs-java-metrics/blob/v1.0.0/data/python.csv) e [java.csv](https://github.com/TheMarini/python-vs-java-metrics/blob/v1.0.0/data/java.csv) presentes neste repositório, obtidos em 30/09/2020 às 18h55 através do código descrito a seguir. |
| 20 | + |
| 21 | +## :information_source: Introdução |
| 22 | + |
| 23 | +Nesta primeira entrega do projeto, o objetivo foi o seguinte: |
| 24 | + |
| 25 | +> **Sprint 01:** arquivo .csv com a lista dos top-100 repositórios Java e os top-100 repositórios Python, bem como os scripts de coleta utilizados para mineração e análise dos repositórios |
| 26 | +> - Valor: 5 pontos |
| 27 | +> - Entrega em 30/09/2020 até às 18:30 no Canvas e no SGA |
| 28 | +
|
| 29 | +Tendo isto em vista, 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 - enquanto, paralelamente, os resultados são salvos em seus respectivos arquivos CSV. |
| 30 | + |
| 31 | + |
| 32 | +```GraphQL |
| 33 | +{ |
| 34 | + search(type: REPOSITORY, query: "stars:>100 language:python", first: 100) { |
| 35 | + repositoryCount |
| 36 | + pageInfo { |
| 37 | + endCursor |
| 38 | + } |
| 39 | + nodes { |
| 40 | + ... on Repository { |
| 41 | + nameWithOwner |
| 42 | + stargazerCount |
| 43 | + createdAt |
| 44 | + forkCount |
| 45 | + watchers { |
| 46 | + totalCount |
| 47 | + } |
| 48 | + releases { |
| 49 | + totalCount |
| 50 | + } |
| 51 | + } |
| 52 | + } |
| 53 | + } |
| 54 | + } |
| 55 | +``` |
| 56 | + |
| 57 | +**:warning: 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. |
| 58 | + |
| 59 | +## :fire: Instalação |
| 60 | + |
| 61 | +1. Instale as dependências: |
| 62 | + ``` |
| 63 | + npm install |
| 64 | + ``` |
| 65 | +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: |
| 66 | + ``` |
| 67 | + TOKEN=seu_token_do_GitHub_API |
| 68 | + ``` |
| 69 | + :information_source: Não se preocupe, caso não queira realizar o item acima, poderá informar seu _token_ diretamente na linha de comando. |
| 70 | +3. Execute: |
| 71 | + ``` |
| 72 | + npm start |
| 73 | + ``` |
| 74 | +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` :heavy_check_mark: |
| 75 | +
|
| 76 | +## :busts_in_silhouette: Autores |
| 77 | +
|
| 78 | +- [Bruno Marini](https://github.com/TheMarini) |
0 commit comments