In this exercise, we will explore code evolution in real systems.
We will use the GitEvo tool.
This tool analyzes code evolution in Git repositories for Python, JavaScript, TypeScript, and Java languages, and generates HTML reports like this one.
More report examples can be found at https://github.com/andrehora/gitevo-examples.
Select a relevant repository in your preferred language (Python, JavaScript, TypeScript, or Java). You can find interesting projects at the links below:
- 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
Before installing the tool, it is recommended to create and activate a Python virtual environment.
Install the GitEvo tool with the command:
$ pip install gitevo
Run the tool on the selected repository using the command below (adjust according to the repository language).
Replace <git_url> with the URL of the repository to be analyzed:
# Python
$ gitevo -r python <git_url>
# JavaScript
$ gitevo -r javascript <git_url>
# TypeScript
$ gitevo -r typescript <git_url>
# Java
$ gitevo -r java <git_url>For example, to analyze the Flask project written in Python:
$ gitevo -r python https://github.com/pallets/flask
Note
This step may take a few minutes as the project will be cloned and analyzed locally.
After running the GitEvo tool, an HTML report containing various charts about code evolution is generated.
Open the HTML report and carefully observe the charts.
Select one of the evolution charts and explain it in your own words. For example, you can:
- Detail the evolution over time
- Detail whether the curves are in accordance with best practices
- Explain major changes in the curves
- Explore the repository documentation in search of explanations for major changes
- etc.
Be creative!
- Create a
forkof this repository (more information about forks here). - Add the
HTMLreport to your fork. - On Moodle, submit only the URL of your
fork.
Answer the questions below directly in this README.md file of your fork:
- Selected repository: <SELECTED_REPOSITORY_URL_HERE>
- Selected chart: <SELECTED_CHART_IMAGE_HERE>
- Explanation: <EXPLANATION_HERE>