O BugRanking é um sistema para classificar desenvolvedores (BugHunters) com base na quantidade e na dificuldade dos bugs que eles solucionam. Ele utiliza uma lógica de pontuação, onde bugs resolvidos de diferentes dificuldades são contabilizados para calcular o desempenho total de cada desenvolvedor.
A aplicação está organizada em duas partes principais:
- BugRanking.Core: Contém as classes principais e a lógica do domínio do projeto, como os BugHunters, a resolução de bugs e os rankings.
- BugRanking.Tests: Projeto de testes unitários para garantir que as regras de negócio da aplicação funcionem corretamente.
Um BugHunter representa um desenvolvedor que resolve bugs. Cada BugHunter possui um nome, um email, e uma lista de bugs que ele resolveu, com diferentes níveis de dificuldade.
A classe SolvedBugs armazena as resoluções de bugs feitas por um BugHunter. Cada resolução inclui a quantidade de bugs resolvidos e a dificuldade (easy, medium, hard ou ultrahard).
A classe Ranking organiza os BugHunters de acordo com o total de pontos acumulados, considerando a dificuldade dos bugs resolvidos. Quanto maior a dificuldade, mais pontos são atribuídos ao BugHunter.
- C# (.NET 8): Linguagem principal para o desenvolvimento da aplicação.
- MSTest: Para testes unitários.
- .NET 8 SDK instalado na máquina.
- IDE com suporte a .NET, como Visual Studio ou Rider.
Subi o BugRanking como um nuget package, dessa forma você pode executá-lo tanto como um projeto quanto um pacote do nuget através do terminal como demonstrado abaixo:
dotnet add package BugRanking --version 1.0.0
- Clone este repositório:
git clone https://github.com/BernardoMeine/BugRanking.git
- Navegue até a pasta do projeto:
cd BugRanking
- Restaure as dependências:
dotnet restore
- Execute os testes para garantir que tudo está funcionando:
dotnet test
Aqui está um exemplo de como criar um BugHunter e calcular sua pontuação:
var email = new Email("[email protected]");
var resolutions = new List<BugResolution>
{
new BugResolution(5, EDifficulty.Easy),
new BugResolution(3, EDifficulty.Hard)
};
var bugHunter = new BugHunter(1, "Developer", email, new SolvedBugs(resolutions));
var totalScore = bugHunter.GetSolvedBugsScore();
Console.WriteLine($"Total Score: {totalScore}");