Skip to content

An avoiding merge conflicts tool for Ruby projects

License

Notifications You must be signed in to change notification settings

magnosillas/taiti-plugin

 
 

Repository files navigation

Plugin TAITIr

TAITIr é uma ferramenta para predizer os arquivos que um desenvolvedor precisará alterar para realizar uma tarefa de programação, como o desenvolvimento de uma nova funcionalidade de sistema, e assim estimar o risco de conflito de merge entre tarefas a serem desenvolvidas em paralelo por uma equipe. Ela se aplica à projetos Rails que adotam a dinâmica de BDD (Behavior Driven Development) com o Cucumber para a escrita de testes de aceitação automatizados e o PivotalTracker para gerenciamento de tarefas do projeto. TAITIr foi desenvolvida como um plugin para a IDE RubyMine da JetBrains, também compatível com o IntelliJ Ultimate (com o plugin para Ruby).

Instalação

  • Instalar o RubyMine ou o IntelliJ Ultimate;
  • Baixar o arquivo .zip do plugin disponível nas releases do GitHub;
  • Abrir a IDE e, conforme ilustrado pela Figura 1, ir em File > Settings/Preferences > Plugins, clicar na engrenagem superior ao lado da aba Installed, selecionar a opção Install Plugin from Disk, selecionar o arquivo .zip do plugin e clicar em OK.
Figura 1 - Tela de plugins da IDE.

Engrenagem

Funcionamento

TAITIr prediz os arquivos que serão alterados durante a realização de uma tarefa de programação com base nos testes do Cucumber que validam o comportamento esperado da funcionalidade de sistema subjacente à tarefa. No Cucumber, os testes são cenários escritos em arquivos .feature. Logo, por intermédio de TAITIr, o desenvolvedor seleciona cenários de testes para uma tarefa, o que pressupõe que estes já tenham sido projetados. Os testes que validam o comportamento da tarefa são salvos em um arquivo .csv que é exportado para o PivotalTracker, ficando acessível no post-it da tarefa.

Com base no exposto, é necessário ter uma conta no PivotalTracker e que o projeto de software em desenvolvimento esteja hospedado no GitHub. Além disso, é necessário configurar o plugin para informar o projeto em desenvolvimento. Para tanto, basta acessar File > Settings/Preferences > Tools > TAITIr e preencher os três primeiros campos da seção Project settings na tela ilustrada pela Figura 2. Para saber o token do PivotalTracker, basta acessar o perfil do usuário e copiar o API Token. A seção Test Settings tem valores padrão referentes aos diretórios de armazenamento de arquivos de testes, que só devem ser alterados se realmente necessário.

Figura 2 - Tela de configuração do plugin TAITIr.

Settings

Após configurar o plugin, é possível utilizá-lo. O plugin tem duas telas principais: Task List (item 1 na Figura 3, uma aba na lateral esquerda da IDE) e Conflicts (item 2 na Figura 3, uma aba na região inferior da IDE). Task List lista as tarefas do PivotalTracker previstas para o desenvolvedor (item 3 na Figura 3) e as tarefas do PivotalTracker em execução no momento por outros desenvolvedores (item 4 na Figura 3), ou seja, o conjunto de tarefas a serem consideradas na análise de risco de conflito.

Figura 3 - Visão principal do plugin TAITIr.

Abas do Plugin

Conforme ilustrado na Figura 3 (item 3, listagem My unstarted tasks), quando o desenvolvedor identifica as tarefas que planeja executar, o plugin informa para cada uma delas o grau de risco de conflito total com outras tarefas em execução no momento. Informações mais detalhadas sobre as tarefas podem ser obtidas ao posicionar o mouse sobre a tarefa.

As tarefas em execução são obtidas automaticamente, mas aquelas planejadas para o desenvolvedor devem ser adicionadas por ele. Isso pode ser feito ao clicar no item 1 na Figura 4, que dá uma visão detalhada da barra de tarefas existente na tela Task List. Ainda na barra de tarefas ilustrada na Figura 4, é possível atualizar as listagens de tarefas ao clicar no item 2, bem como pesquisar pelo título de alguma tarefa de interesse usando a caixa de texto do item 3, em caso das listagens serem extensas.

Figura 4 - Visão detalhada das ações possíveis na tela Task List.

Ações do Task List

Finalmente, na listagem My unstarted tasks na tela Task List (Figura 3, item 3), é possível visualizar informação detalhada sobre o risco de conflito na tela Conflicts (Figura 5, item 1) ao dar dois cliques sobre alguma tarefa. Por exemplo, se há uma tarefa planejada e 3 tarefas em execução, é possível saber o risco de conflito entre a tarefa planejada e cada tarefa em execução individualmente e quais são os arquivos potencialmente conflitantes.

Figura 5 - Visão detalhada de risco de conflito entre tarefas de programação.

Conflicts

Para informar os testes do Cucumber que validam o comportamento esperado de uma tarefa de programação no PivotalTracker, é necessário clicar no item 1 na Figura 4 (tela Task List) para acessar a tela de configuração da tarefa, ilustrada pela Figura 6. Na Figura 6, o item 1 é o ID da tarefa no PivotalTracker (por exemplo, #123456789 ou 123456789). O item 2 é uma listagem de arquivos em estrutura de árvore na qual é possível selecionar um ou mais arquivos .feature que contém cenários de teste relacionados à tarefa. Já o item 3 exibe o arquivo .feature selecionado e o item 4 é uma tabela que contém todos os cenários selecionados.

Figura 6 - Tela de configuração de uma tarefa de programação.

Tela Add do plugin

Após informar o ID no item 1 e selecionar um arquivo .feature no item 2, a tela fica parecida com a Figura 6, na qual o arquivo selecionado é exibido ao centro e cada cenário de teste nele existente é identificado por um checkbox. Marcar um checkbox significa que o referido teste está relacionado à tarefa em configuração. Alternativamente, é possível selecionar todos os cenários de testes em um arquivo de uma vez apenas marcando o checkbox que identifica o nome do arquivo na parte central da tela (Área destacada no item 3). Por fim, é possível verificar todos os testes selecionados em um ou mais arquivos (item 4 da Figura 6), bem como atualizar essa seleção, removendo testes conforme a necessidade.

Uma vez finalizada a seleção dos testes relacionados à tarefa, basta clicar em OK e um arquivo .csv com os cenários de testes selecionados é criado e exportado para o PivotalTracker, sendo anexado como comentário na seção Activity da tarefa, conforme ilustrado pela Figura 7.

Figura 7 - Arquivo .csv anexado à uma tarefa no PivotalTracker.

Tela do plugin

Autores

Esse projeto foi desenvolvido pelo discente Mágno Gomes, sob orientação da docente Thaís Burity e participação do discente Gabriel Viana e do docente Rodrigo Cardoso, na Universidade Federal do Agreste de Pernambuco.

About

An avoiding merge conflicts tool for Ruby projects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%