Jeg mener et program, der kan søge java source filerne igennem og finde variabler, der aldrig bliver brugt og metoder, der aldrig bliver kaldt.
Jeg har omstruktureret koden og kopieret eller flyttet metoder mellem klasser og pakker. Der kan være metoder og variabler, jeg har glemt at slette, og som nu aldrig vil blive kaldt.
Jeg ønsker at undgå st skulle finde dem manuelt :-)
Det skal være på source niveau. Med andre ord har jeg ikke brug for et program, der kigger på afviklingen af koden for at se, hvad der ikke bliver brugt. Jeg vil vide, hvad der aldrig KAN blive kaldt.
Jeg kender ikke til de programmer, du nævner mht. html...
hmmm, idet java har maader at 'dynamisk loade kode' paa under udfoersel, kan man vil egentlig ikke lave et program der 100% sikkert kun fjerner doed kode...
arne_v: Jeg har kigget på PMD. Den kan godtnok finde døde private metoder og variabler - men det er de public metoder og variabler, der er det største problem.
...og som trolle skriver, kan det sikkert ikke engang laves, da man kan kalde metoder via reflektion.
Normalt vil man være meget forsigtig med at fjerne noget public, fordi hvad nu hvis et eller andet alligevel bruger det. Ikke kun via reflection, men også ekstern kilde kode.
Korrekt, men mine metoder tilgås via interfaces, så når jeg fjerner signaturen fra interfacet, så burde ingen udefra kunne kalde metoden - ihvert fald ikke på en dokumenteret måde.
Jeg kunne dog sagtens selv kalde dem indefra, så derfor vil jeg gerne have et stykke software til at finde dem, som #1: ikke kan tilgås via implementerede interfaces og #2: ikke bliver kaldt fra komponenten selv (hvor 'komponenten selv' dækkes de filer, der skal checkes).
Det er let nok manuelt at fjerne de metoder, der ikke er på interfacet, men måske bruger jeg dem selv. Jeg kunne så rekompilere det hele hver gang jeg fjerner/udkommenterer en metode, men det er en ret langsommelig process.
Nope! Den arbejder på bytecode niveau. Jeg vil have ryddet op i mine source filer, så jeg ikke sidder og vedligeholder og dokumenterer metoder og variabler, der aldrig bliver brugt :^>
du har dine .java filer, du compiler, proguard analyserer dine .class filer og fortæller dig hvad der ikke bliver brugt, du ved hvilke .java filer du skal rette i, eller ?
Nu kender jeg jo ikke proguard, men den type programmer plejer ikke at 'fortælle' noget. De går som regel blot ned i .class filen og fjerner det, der ikke bliver brugt.
Specifies to list dead code of the input class files. The list is printed to the standard output or to the given file. For example, you can list the unused code of an application. Only applicable when shrinking.
Finding dead code These options list unused fields and methods in the application mypackage.MyApplication:
Jeg har nu leget lidt med proguard, men fik den ikke til at køre rigtigt. Den forlanger, at alt ligger i jar filer, hvilket ikke er tilfældet for mig. Derudover skal den have reference til alle de klasser, der refereres til. Jeg kan ikke nøjes med rt.jar som i eksemplet - jeg har flere tusinde klasser spredt ud over både jar- og class-filer.
Du kan selvfølgelig bruge eclipse/proguard/etc. til at lave en statisk analyse på metoder/variable for at se hvilke ikke bliver refereret. Men det er ikke muligt at lave et generelt værktøj til at finde al "død kode".
Søg evt. på google efter: "unreachable code" og "halting problem"
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.