Recurso de limpeza/reformatação de código ReSharper versus sistemas de controle de versão
-
09-06-2019 - |
Pergunta
Recurso de limpeza de código ReSharper (com "reordenar membros" e "reformatar código" ativado) é realmente ótimo.Você define um modelo de layout usando XML e, em seguida, uma simples combinação de teclas reorganiza todo o seu arquivo de origem (ou pasta/projeto/solução) de acordo com as regras definidas no modelo.
De qualquer forma, você acha que isso poderia ser um problema em relação ao VCS como Subversion, CVS, git, etc.?Existe uma chance de que isso cause muitos conflitos indesejados?
Obrigado.
Solução
Sim, isso definitivamente causará problemas.Além de criar conflitos que precisam ser resolvidos manualmente, quando você faz check-in de um arquivo que foi reformatado, o VCS notará quase todas as linhas como tendo sido alteradas.Isso tornará difícil para você ou um colega de equipe olhar para trás na história e ver o que mudou e quando.
Dito isto, se todos formatarem automaticamente seu código da mesma maneira (ou seja, você distribuir esse modelo XML para a equipe), então poderá funcionar bem.Os problemas realmente só surgem quando nem todos estão fazendo a mesma coisa.
Outras dicas
Estou esperando por um IDE ou editor que sempre salve o código-fonte usando algumas regras básicas de formatação, mas permita que cada desenvolvedor individual exiba e edite o código em seu formato preferido.Dessa forma, posso colocar minha chave aberta no início da próxima linha e não no final da linha atual, onde todos vocês, pagãos, parecem pensar que ela vai.
Meu palpite é que estarei esperando por muito tempo.
- Apenas reformate toda a solução uma vez
- E verifique se todo desenvolvedor está usando o Resharper
- E verifique se as opções de formatação são compartilhadas e versionadas (opções de compartilhamento de estilo de código)
Você pode usar EstiloCop para impor um conjunto abrangente de padrões que praticamente obriga todos a usar os mesmos estilos de layout.Então, tudo o que você precisa fazer é desenvolver uma especificação de estilo de código ReSharper que corresponda a isso e distribuí-la para a equipe.
Eu ainda estou esperando outra pessoa para fazer isso, e para que a JetBrains esclareça todos os detalhes mesquinhos que não são totalmente suportados, a fim de permitir que o ReSharper basicamente garanta a conformidade total com o StyleCop.
Definitivamente, isso pode causar conflitos, por isso, certifique-se de não reformatar arquivos inteiros se houver pessoas trabalhando neles em paralelo.
Definitivamente poderia causar conflitos.
Se você quiser usar isso em um ambiente multiusuário, a configuração do Resharper precisa formatar seu código de acordo com um conjunto de padrões que são aplicados em sua organização, independentemente de os usuários usarem o Resharper ou não.
Dessa forma, você está usando a ferramenta para garantir que seu próprio código atenda aos padrões, e não aplicando suas preferências a toda a base de código.
Concordo com as respostas anteriores que afirmam que os conflitos são possíveis e até prováveis.
Se você está planejando reformatar o código, pelo menos certifique-se de não misturar checkins de reformatação com aqueles que alteram a função do código real.Dessa forma, as pessoas podem pular check-ins que são simples reformatações.Também é uma boa ideia garantir que todos saibam que uma reformatação está chegando, para que possam se opor caso tenham trabalho em andamento nessa área.
Pode ser uma boa ideia escrever um script para verificar cada versão em seu histórico de controle de origem, aplicar a limpeza de código e, em seguida, fazer check-in em um novo repositório.Em seguida, use esse repositório para todo o seu trabalho no futuro.