Descrição do projeto
Trabalho referente a disciplina de Métodos de Desenvolvimento de Software, Ministrada pela prof. Carla Rocha, na Universidade de Brasília - FGA. Este projeto visa criar uma biblioteca Python para gerar relatórios automáticos sobre as participações dos desenvolvedores em um repositório/projeto. Como por exemplo, listar a quantidade de commits e issues por cara desenvolvedor.
Objetivo
A biblioteca "pyGitInfo" tem o objetivo de fornecer funcionalidades para análise e extração de informações relacionadas a repositórios Git. Ela oferece uma variedade de funções que podem ser utilizadas para extrair dados sobre commits, coautores, problemas (issues), além de realizar análises estatísticas e geração de relatórios.
Alguns dos principais objetivos da biblioteca são:
- Facilitar a busca e análise de informações sobre commits realizados em um repositório Git, permitindo filtrar por usuário, período de tempo e palavras-chave nas descrições dos commits.
- Identificar commits que possuem coautores, ou seja, colaboradores que contribuíram para um commit específico.
- Gerar estatísticas sobre o número de commits por usuário e calcular a média de commits para avaliar o desempenho de cada colaborador em relação à média geral.
- Analisar problemas (issues) relacionados ao repositório, verificando quantos foram fechados em determinado período e gerando gráficos para visualização.
- Classificar os arquivos que estão sendo commitados pelos contribuidores de acordo com suas extensões, permitindo identificar quais tipos de arquivos são mais comumente modificados.
- Gerar relatórios completos que combinam várias análises, como commits com coautores, média geral de commits e informações sobre problemas, fornecendo uma visão abrangente do repositório Git.
Documentation
Overview
Imagine a scrum master, having to gather metrics about his team, he needs to check the number of commits per member, what is the general average of the team, which issues are still to be done, all this would take some time and scrum effort master.The pyGitInfo library aims to facilitate all this analysis of repositories on github, bringing insights about each contributor and their respective participation in the repository. It has features for analyzing commits, files, issues, Pull Requests and much of what is used in a repository.
Installation and Configuration
Installing the libraryTo install the library, use the following command in your terminal:
pip install pyGitInfo
Configuring the library
Create a file .env inside the "gitinfo" folder. In that file you need to add your GITHUB_TOKEN and your repository directory 'REPO'
The file looks like this:
GITHUB_TOKEN = "ghp_ap0JAORWzs**********************" #your personal access token
REPO = "fga-eps-mds/2023.1-RelatorioGitPython" #Your project directory on Github
Library use
After downloading and configuring the library, we can start using it.First let's import the library into the project:
from pyGitInfo import *
Notes/Standardization Date: The default format for passing dates is "month-day-year" Ex: "06-07-2023" is equivalent to June 07, 2023.
Functions and Returns
get_commits_by_user()Allows you to search for commits by user, passing 3 strings as a parameter, the user's name (str), a start date and an end date.
get_commits_by_user('name_user','date_init','date_end')
This function returns DataFrame from the Pandas library or an error message.
get_commits_users()
Allows you to search for commits from all contributors, passing as a parameter 2 strings that define the time range, a start date and an end date.
get_commits_users('date_init','date_end')
This function returns DataFrame from the Pandas library.
get_coAuthor()
Search all commits with Coauthor, passing as parameters 2 strings that define the time range, a start date and an end date.
get_coAuthor('date_init','date_end')
This function returns a DataFrame from the Pandas library or an error message.
issues_month()
This function verifies how many Issues were closed per month, within the stipulated period. The function receives 2 date strings as a parameter, the start and end date.
issues_month('date_init','date_end')
The function returns DataFrame from the Pandas library and also generates a png graphic.
calculate_commit_average()
Calculates the average commits across all contributors and shows who is above or below that average. You must pass the analysis period as a parameter with 2 strings representing the dates.
calculate_commit_average('date_init','date_end')
The function returns DataFrame from the Pandas library and also generates a png graphic.
commit_data()
Searches for all commits on a specific day, the function receives a string with the desired date as a parameter.
commit_data('date')
The function generates a markdown file with the information.
commit_palavra()
Searches for all commits (within a time range) that have the desired word in their description. This function receives 3 strings as a parameter, the first with the 'word' to be searched for, and the 2 'dates' referring to the time interval.
commit_palavra('palavra','date_init','date_end')
The function returns a DataFrame from the Pandas library or an error message.
check_extension()
It does a search for the files that are being committed by each contributor and classifies them according to their extension. You must pass the time interval for the analysis (2 strings of 'date').
check_extension('date_init','date_end')
The function returns a variable with the content written in markdown format.
title_commits()
Searches all commit titles, by user, thus facilitating the visualization of what each contributor has done (Requires a time interval) 2 strings 'data'.
title_commits('date_init','date_end')
The function returns a variable with the content written in markdown format.
gerenate_report()
Combines the functions of commit with coauthor and overall average to generate a more complete report. The function receives as parameter 2 date strings with the time interval to be analyzed ('initial_date','final_date').
gerenate_report('date_init','date_end')
Generates a "gitInfo_report.md" markdown with information about commits with coauthor and the number of commits per user.
issues_open()
Searches all Issues that are open but have not yet been signed by anyone. It takes nothing as a parameter.
issues_open()
The function returns a variable with the content written in markdown format
Código de conduta
Por favor, siga o código de conduta desse projeto.
Contribuição
Contribuições são sempre bem-vindas!
Licença
Este projeto está sob licença. Acesse para mais informações.