Sziasztok!
Szeretném kinyerni a kódból, hogy milyen hibaüzeneteket dobálhat egy adott WS hívás. Végig kell menni rekurzívan az elejétől, ezzel nincs gond. Spoonnal próbálkoztam, de abból miután felépítette az AST-t, csak a deklaráció szignatúráját lehet kiszedni, tehát
public void display(MessageConstant message);
public void displayObject(Object message);
enum MessageConstants {
MESSAGE1,
MESSAGE2;
}
esetén ha ilyet írok:
setError(MessageConstants.MESSAGE1);
setErrorObject(MessageConstants.MESSAGE1);
akkor
setError(MessageConstants.MESSAGE1);
-nél setError(MessageConstants)
-t kapok
this.setErrorObject(MessageConstants.MESSAGE1);
-nél pedig setErrorObject(java.lang.Object); -et
és nekem MESSAGE1 a lényeg.
CtExecutable parent = ref.getParent(CtExecutable.class);
String codeBlock = parent.getBody().toString();
-tel kiszedtem annak a blokknak a forrását amiben a metódusok vannak és regex-el ki tudom hámozni, a MESSAGE1-et, de setErrorObject()-tel nem boldogulok, mert arra nem matchel az Enum mivel Objectként látja.
Sajnos az nem opció, hogy megváltoztassam a metódus szignatúrákat mert meglévő kódról van szó.
Van esetleg valami olyan eszköz amivel ez kényelmesen megoldható?
- 561 megtekintés
Hozzászólások
Egyszer régen használtam a pmd-t Java forráskód elemzésre programozottan. Azzal mindent (is) lehet szinte.
Nem vagyok benne biztos, hogy megéri a fáradtságot.
Inkább kérj dokumentációt a gazdájától a szerviznek.
- A hozzászóláshoz be kell jelentkezni
Most éppen én vagyok a gazdája, és nem szeretek doksit írni :)
szerk: pont ezért szeretnék rá programot írni, hogy a gép dolgozzon, ne én
- A hozzászóláshoz be kell jelentkezni
> Sajnos az nem opció, hogy megváltoztassam a metódus szignatúrákat mert meglévő kódról van szó.
Csak a felgöngyölítés erejéig miért ne lehetne átírni a szignatúrát? Feltéve, hogy nem túl sok típussal van használva ez a metódus.
Annyira sokféle hibaüzenet tud jönni, hogy ha simán be lenne indexelve a kód, akkor "kézzel" végignyálazni lehetetlen lenne?
- A hozzászóláshoz be kell jelentkezni
Mert a kódot a fejlesztők módosítgatják és olyankor újra kell húzni a doksit. Nem egyszeri eset.
- A hozzászóláshoz be kell jelentkezni
Ha van egy AST-d, akkor miért nem mész végig pl. egy visitorral, miért kezded el a blokkot stringként feldolgozni?
Pont az a jó az AST-ben, hogy nem kell stringként küzdeni. Mi egyébként Eclipse AST-vel csináltunk jó dolgokat, ha jól értem a Spoon is erre épül, de nem tudom mennyire rejti el. Az Eclipse AST-ből mindent ki lehet nyerni + módosítani / új kódot is lehet generálni, nem kell hozzá regex meg toString().
- A hozzászóláshoz be kell jelentkezni
Pont olyan eszközt keresek ami tud építeni AST-t és a tényleges forrást adja vissza minden elemhez. Sajnos a Spoon nem ilyen vagy én nem tudom hogyan kell rávenni, hogy így működjön.
- A hozzászóláshoz be kell jelentkezni
Pont erre benne van a kommentben a válasz: az Eclipse AST ilyen. Nem tudom ismeretlen forrásra hogyan lehet rábírni, hogy behúzza, legrosszabb esetben csinálsz egy üres Eclipse projektet, és abba belemásolod az összes forrást egyetlen source folderbe, az működni fog - remélhetőleg.
- A hozzászóláshoz be kell jelentkezni
Basszus, bocs! Pedig elolvastam a hozzászólásod, de ezek szerint csak az AST jutott el az agyamig :( Nem jó, ha az embernek több dolgot kell csinálni egyszerre. Igen, Spoon is Eclipse AST-t használ, azt olvastam én is. Megpróbálkozom akkor azzal natívan. Köszi!
- A hozzászóláshoz be kell jelentkezni
Sőt, kisg hozzászólását! Áhh, nem megy ez nekem ma. Inkább pihenek egyet :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ez jól néz ki, de nem látom, hogy lenne publikus apija amin keresztül nézelődni lehet. Csak kliketti.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Végülis ezzel sikerült megoldani! Kényelmes java8-as apija van, jól lehet vele dolgozni. Köszi!
- A hozzászóláshoz be kell jelentkezni