Neste exercício, iremos explorar a evolução de código em sistemas reais.
Iremos utilizar a ferramenta GitEvo.
Essa ferramenta analisa a evolução de código em repositórios Git nas linguagens Python, JavaScript, TypeScript e Java, e gera relatórios HTML como este.
Mais exemplos de relatórios podem ser podem ser encontrados em https://github.com/andrehora/gitevo-examples.
Selecione um repositório relevante na linguagem de sua preferência (Python, JavaScript, TypeScript ou Java). Você pode encontrar projetos interessantes nos links abaixo:
- Python: https://github.com/topics/python?l=python
- JavaScript: https://github.com/topics/javascript?l=javascript
- TypeScript: https://github.com/topics/typescript?l=typescript
- Java: https://github.com/topics/java?l=java
Note
Antes de instalar a ferramenta, é recomendado criar e ativar um ambiente virtual Python.
Instale a ferramenta GitEvo com o comando:
$ pip install gitevo
Execute a ferramenta no repositório selecionado utilizando o comando abaixo (ajuste conforme a linguagem do repositório).
Substitua <git_url> pela URL do repositório que será analisado:
# Python
$ gitevo -r python <git_url>
# JavaScript
$ gitevo -r javascript <git_url>
# TypeScript
$ gitevo -r typescript <git_url>
# Java
$ gitevo -r java <git_url>Por exemplo, para analisar o projeto Flask escrito em Python:
$ gitevo -r python https://github.com/pallets/flask
Note
Essa etapa pode demorar alguns minutos pois o projeto será clonado e analisado localmente.
Após executar a ferramenta GitEvo, é gerado um relatório HTML contendo diversos gráficos sobre a evolução do código.
Abra o relatório HTML e observe com atenção os gráficos.
Selecione um dos gráficos de evolução e explique-o com suas palavras. Por exemplo, você pode:
- Detalhar a evolução ao longo do tempo
- Detalhar se as curvas estão de acordo com boas práticas
- Explicar grandes alterações nas curvas
- Explorar a documentação do repositório em busca de explicações para grandes alterações
- etc.
Seja criativo!
- Crie um
forkdeste repositório (mais informações sobre forks aqui). - Adicione o relatório
HTMLno seu fork. - No Moodle, submeta apenas a URL do seu
fork.
Responda às questões abaixo diretamente neste arquivo README.md do seu fork:
-
Repositório selecionado: https://github.com/spring-projects/spring-framework
-
Gráfico selecionado: Record Declarations ao longo do tempo (2021–2026)
| Ano | record_declaration |
|---|---|
| 2021 | 0 |
| 2022 | 0 |
| 2023 | 22 |
| 2024 | 57 |
| 2025 | 124 |
| 2026 | 178 |
-
Explicação:
O gráfico de Record Declarations mostra a adoção gradual e crescente do recurso
recorddo Java no Spring Framework ao longo do tempo.Os Java Records foram introduzidos como preview no Java 14 (2020) e tornaram-se um recurso oficial e estável no Java 16 (2021). Eles são classes imutáveis com código boilerplate mínimo (sem necessidade de escrever
getters,equals,hashCodeetoStringmanualmente).Análise da curva:
- 2021–2022: Zero usos de
record. O Spring Framework ainda não adotava o recurso, provavelmente por manter compatibilidade com versões mais antigas do Java. - 2023: Os primeiros 22
recordsaparecem, coincidindo com o Spring Framework 6.x, que passou a exigir Java 17 como versão mínima. Com a garantia de que os usuários estariam em Java 17+, a equipe começou a introduzirrecordsno código-fonte. - 2024–2026: A adoção acelera de forma consistente (57 → 124 → 178), indicando que a equipe do Spring passou a preferir
recordspara representar estruturas de dados simples e imutáveis, como DTOs, configurações e objetos de valor.
Conclusão: A curva está em total acordo com boas práticas modernas de Java. O aumento gradual reflete uma adoção responsável: primeiro a migração para um baseline de Java 17, depois a substituição progressiva de classes de dados verbosas por
records, tornando o código mais conciso, legível e seguro (imutabilidade por padrão). - 2021–2022: Zero usos de

