Dobrý den, typ proměnné k dispozici je. Např. toto pravidlo změní každé přiřazení do proměnné typu long:
Assignment { Identifier [id: ident, instanceof: "java.lang.Long"], Expression [id: expr] } -> Assignment { Identifier [ref: ident], Literal [kind: LONG_LITERAL, value: 42] } Lze dělat i složitější transformace. Např. p = x - y, kde p je typu long a x a y jsou nějaké výrazy, lze transformovat na p = y / x: Assignment { Identifier [id: ident, instanceof: "java.lang.Long"], Binary [kind: MINUS] { Expression [id: x], Expression [id: y] } } -> Assignment { Identifier [ref: ident], Binary [kind: DIVIDE] { Expression [ref: y], Expression [ref: x] } } Př.: v = 12 - 24 bude nahrazeno v = 24 / 12 a v = x - 2 * y bude nahrazeno v = 2 * y / x. Jméno souboru ani číslo řádku bohužel vypsat nejde a běží to zatím pouze v NetBeans. Nicméně NetBeans zobrazí nalezené řádky v refaktorovacím okně. Z. -- Zdenek Tronicek FIT CTU in Prague Filip Jirsák napsal(a): > Dobrý večer, > já bohužel nemám s RefactoringNG osobní zkušenost, jenom jsem viděl pár > příkladů a připadalo mi to zajímavé ale zatím jsem neměl příležitost si to > na něčem vyzkoušet. Jenom mne napadlo, že by to mohlo řešit váš problém. > Ale > jestli se nepletu, autorem nebo spoluautorem je Zdeněk Troníček, který na > váš dotaz také reagoval, ten na vaše otázky asi bude umět odpovědět lépe. > Z toho, co jsem o tom zaznamenal – podpora pro typy tam je, ten přiřazený > výraz byste musel dokázat popsat pravidlem a pak popsat, na co se má > přepsat. Přinejhorším můžete zkusit generovat automaticky skripty pro > RefactoringNG :-) Podívejte se ještě na java.cz, najdete tam nějaké > podcasty, blogy nebo workshopy k RefactoringNG. > Pokud vím, je to nyní jen modul do NetBeans. Taky bych uvítal, kdyby jádro > byla samostatná knihovna, myslím, že třeba ve spojení s anotacema a apt by > to byl mocný nástroj. > > S pozdravem > > Filip Jirsák > > > 2011/2/28 Dušan Kolář <ko...@fit.vutbr.cz> > >> Dobré ráno, >> >> toto vypadá slibně - chtěl jsem se zeptat, jestli je tam nějaká >> podpora >> pro typy - mně třeba zajímá přiřazení do proměnné typu long - tedy ne >> konkrétní jméno, ale typ a potom potřebuji přistoupit na ten přiřazovaný >> výraz, jako na jeho strom. Ale to asi nejde, co? :-( A aspoň to >> přiřazení, >> že bych si dopsal, aby to vypsalo jméno souboru a řádek, to by nějak šlo >> udělat? Zatím jsem koukal na příklady a tutorial a z toho mi plyne, že >> spíše >> ne... :-( >> >> Dále jsem se chtěl zeptat, jestli to je nějak spustitelné z příkazové >> řádky. NetBeans jsem neměl nainstalovány ani nepamatuji, tak možná přes >> ně >> (myšleno jako cmdline)? Nebo jen přes jejich GUI? >> >> Děkuji za případné odkazy... >> >> Dušan Kolář >> >> On 25.2.2011 11:02, Filip Jirsák wrote: >> >> Zdravím, >> podívejte se na projekt RefactoringNG – >> http://kenai.com/projects/refactoringng . Je to nástroj pro změny kódu, >> jenom funguje trochu jinak, než popisujete – nevyvolává váš kód, místo >> toho >> popíšete, co se má čím nahradit. >> >> S pozdravem >> >> Filip Jirsák >> >> >> 2011/2/25 Dušan Kolář <ko...@fit.vutbr.cz> >> >>> Zdravím konferenci, >>> >>> před lety jsem používal nástroj Spoon ( http://spoon.gforge.iniria.fr/ >>> ) >>> celkem úspěšně na změny ve zdrojácích, které se generovaly (ne zcela >>> korektně) a bylo třeba je změnit. >>> >>> Zdá se, že tento projekt je ale více jak 3 roky mrtev. Nepoužíváte, >>> nebo >>> nevíte někdo o něčem podobném, co by aktivně žilo? Nejde mi jen o to >>> naparsovat Javu, ale mít možnost se zaháčkovat tak, že mi vyvolá třeba >>> pro >>> každý přiřazovací příkaz můj kód, já potom změním ten kód a nakonec >>> nechám >>> opět vygenerovat Javovský kód, ale upravený. >>> >>> Nevím, jestli to prostě jen blbě googlám, nebo mám smůlu... :-\ Ale >>> psat >>> se mi to celé nechce. :-( >>> >>> >>> Pěkný den, >>> >>> Dušan >>> >>> >> >