Que ferramentas de refatoração que você usa para Python?

votos
59

Eu tenho um monte de classes I deseja renomear. Alguns deles têm nomes que são pequenos e esse nome é reutilizado em outros nomes de classe, onde eu não quero que o nome mudou. A maior parte deste vive em código Python, mas também temos algum código XML que faz referência a nomes de classe.

Pesquisa simples e substituir apenas me deixa tão longe. No meu caso, eu quero mudar o nome AdminAction para AdminActionPlug e AdminActionLogger para AdminActionLoggerPlug, então a primeira de uma pesquisa e substituição que também atingiu o segundo, de forma errada.

Alguém tem experiência com ferramentas de refatoração Python? Os pontos de bónus se eles podem corrigir nomes de classe nos documentos XML também.

Publicado 26/08/2008 em 19:26
fonte usuário
Em outras línguas...                            


7 respostas

votos
48

Nesse meio tempo, eu tentei duas ferramentas que têm algum tipo de integração com o vim.

A primeira é a corda , uma biblioteca refatoração python que vem com uma Vim (e emacs) plug-in. Eu tentei por algumas renomeações, e que definitivamente funcionou como esperado. Isso me permitiu visualizar a refatoração como um diff, que é bom. É um pouco impulsionado texto, mas tudo bem para mim, leva muito tempo para aprender.

A segunda é Bicycle Repair Man que eu acho pontos vitórias no nome. Também se conecta a vim e emacs. Não tenho jogado muito com ele ainda, mas lembro-me de tentar isso há muito tempo.

não tenho jogado tanto com o suficiente ainda, ou tentou mais tipos de refatoração, mas vou fazer mais alguns hackers com eles.

Respondeu 27/08/2008 em 10:15
fonte usuário

votos
21

Eu recomendaria fortemente PyCharm - não apenas para refatorações. Desde a primeira resposta PyCharm foi postado aqui há alguns anos o apoio refatoração em PyCharm tem melhorado significativamente.

Refactorings Python disponíveis no PyCharm (última verificação 2016/07/27 em PyCharm 2.016,2)

  • Alterar Assinatura
  • Converter para Python Caixa / Módulo
  • cópia de
  • Refactorings extrato
  • Na linha
  • Inverter booleana
  • Faça Função de Nível Superior
  • Refactorings movimento
  • Empurre Membros para baixo
  • Puxe Membros se
  • renomeie Refactorings
  • Eliminação segura

refatorações XML (I despachada menu de contexto em um arquivo XML):

  • rebatizar
  • Mover
  • cópia de
  • Extraia Subquery como CTE
  • Na linha

refatorações javascript:

  • Extraia Parâmetro em JavaScript
  • Alterar Assinatura em JavaScript
  • Extrair variável em JavaScript
Respondeu 15/10/2014 em 12:34
fonte usuário

votos
4

PyCharm têm algumas características de refatoração.

PYTHON refatoração

Renomear refatoração permite realizar alterações no código globais com segurança e instantaneamente. Alterações locais dentro de um arquivo são realizados no local. Refatorações trabalhar em projectos de Python e Django simples.

Use Introduzir Variável / Campo / Constante e inline local para melhorar a estrutura de código dentro de um método, Extrair Método para quebrar métodos mais longos, Extrair Superclasse , Push Up , Pull Down e Mover para mover os métodos e classes.

Respondeu 10/09/2014 em 13:21
fonte usuário

votos
4

WingIDE 4.0 (WingIDE é o meu python IDE de escolha) apoiará algumas refatorações, mas eu só tentei com o último beta, beta6, e ... ainda há trabalho a ser feito. Método retrair funciona muito bem, mas Símbolo Rename não.

Update: A versão 4.0 fixou todas as ferramentas de refatoração. Eles trabalham muito agora.

Respondeu 03/02/2011 em 03:57
fonte usuário

votos
4

O IDE pode suportar refatorações !! Verificá-Eric, Eclipse, WingIDE tem construir em ferramentas de refatorações (Rename inclusive). E que são refatorações muito seguro - se algo pode dar errado IDE não vai fazer ref.

Considere também adicionando alguns teste de unidade para garantir o seu código não sofreu durante refatorações.

Respondeu 28/11/2009 em 19:07
fonte usuário

votos
2

Gostaria de dar uma olhada em Bowler ( https://pybowler.io ).

É mais adequado para uso directamente a partir da linha de comando de corda e incentiva scripting (scripts one-off).

Respondeu 27/09/2018 em 14:28
fonte usuário

votos
-3

Você pode usar sed para executar esta. O truque consiste em recordar que as expressões regulares podem reconhecer limites de palavra. Isso funciona em todas as plataformas desde que você obter as ferramentas, que no Windows é Cygwin, Mac OS pode exigir a instalação das ferramentas dev, não tenho certeza, e Linux tem esta fora da caixa. Então grep, xargs, e sed deve fazer o truque, após 12 horas de leitura de páginas de manual e de tentativa e erro;)

Respondeu 26/12/2012 em 23:12
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more