Recurso de limpeza/reformatação de código ReSharper versus sistemas de controle de versão

StackOverflow https://stackoverflow.com/questions/56313

  •  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.

Foi útil?

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.

Estamos trabalhando em algo para trabalhar com refatoradores no nível do código-fonte.Chamamos isso de Xmerge e agora faz parte Plástico.É apenas uma primeira abordagem, já que estamos trabalhando em soluções mais avançadas.Confira aqui.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top