Hva refactoring verktøy bruker du for Python?

stemmer
60

Jeg har en haug med klassene jeg ønsker å endre navn. Noen av dem har navn som er små, og at navnet er gjenbrukt i andre klasse navn, hvor jeg ikke ønsker at navnet endret. Mesteparten av dette lever i Python-kode, men vi har også noen XML-kode som refererer klasse navn.

Enkelt søk og erstatt får bare meg så langt. I mitt tilfelle, jeg ønsker å endre navn AdminAction til AdminActionPlug og AdminActionLogger til AdminActionLoggerPlug, så det første ens søk og erstatt vil også treffe andre, feilaktig.

Har noen erfaring med Python refactoring verktøy? Bonuspoeng hvis de kan fikse klassenavn i XML-dokumenter også.

Publisert på 26/08/2008 klokken 18:26
kilden bruker
På andre språk...                            


7 svar

stemmer
48

I mellomtiden har jeg prøvd det to verktøy som har noen form for integrasjon med vim.

Den første er Rope , en python refactoring bibliotek som kommer med en Vim (og emacs) plug-in. Jeg prøvde det for noen Endrer navn, og som definitivt fungerte som forventet. Det tillot meg å forhåndsvise refactoring som en diff, som er fint. Det er litt tekst-drevet, men det er greit for meg, bare tar lengre tid å lære.

Den andre er Bicycle Repair Man som jeg tror vinner poeng på navn. Også plugges inn vim og emacs. Har ikke spilt mye med det ennå, men jeg husker jeg prøvde det for lenge siden.

Har ikke spilt med både nok ennå, eller prøvd flere typer refactoring, men jeg vil gjøre noe mer hacking med dem.

Svarte 27/08/2008 kl. 09:15
kilden bruker

stemmer
22

Jeg vil sterkt anbefale PyCharm - ikke bare for refactorings. Siden den første PyCharm svaret ble postet her for noen år siden ommøblerer støtte i PyCharm har bedret seg betraktelig.

Python refactorings tilgjengelige i PyCharm (sist sjekket 2016/07/27 i PyCharm 2016,2)

  • Endre signatur
  • Konverter til Python Package / modul
  • Kopiere
  • Pakk refactorings
  • På linje
  • Inverter boolsk
  • Gjør Top-Level Funksjon
  • Flytt refactorings
  • Push Medlemmer ned
  • Trekk Medlemmer opp
  • Gi nytt navn refactorings
  • sikker Slett

XML refactorings (jeg sjekket inn kontekstmenyen i en XML-fil):

  • Gi nytt navn
  • Bevege seg
  • Kopiere
  • Pakk Subquery som CTE
  • På linje

Javascript refactorings:

  • Pakk Parameter i Javascript
  • Endre signatur i Javascript
  • Pakk variabel i Javascript
Svarte 15/10/2014 kl. 11:34
kilden bruker

stemmer
4

PyCharm har noen refactoring funksjoner.

PYTHON refactoring

Gi nytt navn refactoring gjør det mulig å utføre globale kodeendringer trygt og raskt. Lokale endringer i en fil utføres på stedet. Refactorings jobbe i ren Python og Django prosjekter.

Bruk Presenter Variabel / Field / Constant og Inline Lokal for forbedring av kodestruktur i en metode, Pakk metode for å bryte opp lengre metoder, Extract Super , Push Up , Pull Down og Flytt for å flytte de metoder og klasser.

Svarte 10/09/2014 kl. 12:21
kilden bruker

stemmer
4

WingIDE 4,0 (WingIDE er min python IDE valg) vil støtte noen refactorings, men jeg bare prøvd ut den nyeste beta, beta6, og ... det er fortsatt arbeid som må gjøres. Retract metode fungerer fint, men Rename Symbol ikke.

Oppdatering: 4,0 utgivelsen har fikset alle de refactoring verktøy. De fungerer bra nå.

Svarte 03/02/2011 kl. 02:57
kilden bruker

stemmer
4

Din IDE kan støtte refactorings !! Sjekk det Eric, Eclipse, WingIDE har bygge verktøy for refactorings (Gi nytt navn inkludert). Og det er veldig trygge refactorings - hvis noe kan gå galt IDE wont gjøre ref.

Vurder også legge noen enhet test for å sikre at koden ikke lide under refactorings.

Svarte 28/11/2009 kl. 18:07
kilden bruker

stemmer
2

Jeg ville ta en titt på Bowler ( https://pybowler.io ).

Det er bedre egnet for bruk direkte fra kommandolinjen enn tau og oppmuntrer skript (engangsskript).

Svarte 27/09/2018 kl. 14:28
kilden bruker

stemmer
-3

Du kan bruke sed til å utføre dette. Trikset er å huske at regulære uttrykk kan gjenkjenne ord grenser. Dette fungerer på alle plattformer forutsatt at du får de verktøy, som på Windows er Cygwin, kan Mac OS krever installasjon av dev verktøy, jeg er ikke sikker, og Linux har dette ut av boksen. Så grep, xargs, og sed skal gjøre triks, etter 12 timer med lesing man-sidene og prøving og feiling;)

Svarte 26/12/2012 kl. 22:12
kilden bruker

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