210 likes | 339 Views
Comment Extractor. Ethan Chan Tianqiu Tem Wang Juliana Wong. Introduction (1). What do high level software tools provide? abstract level understanding specific knowledge focus After using these tools, programmers eventually have to touch source code. Abstract Level. Text Level.
E N D
Comment Extractor Ethan Chan Tianqiu Tem Wang Juliana Wong
Introduction (1) • What do high level software tools provide? • abstract level understanding • specific knowledge • focus • After using these tools, programmers eventually have to touch source code Abstract Level Text Level
Introduction (2) • Comment • explanatory text embedded in program source • helps human readers understand program source code • the most useful thing at code level
Motivation (1) • Comments are localized Expression of interest Expression declaration Comments associated with expression The same expression used elsewhere • Comments relating to the expression are found only in one place
Motivation (2) Searching for comments • is a tedious job • interrupts original work flow
Motivation (3) • Sometimes Expression of interest is far away Possibly a gap of a lot of files! Expression of interest Expression Declaration Comments associated with Expression
Motivation (4) • Examples: • Grep • too many incorrect results • Javadoc • format must be specific • needs to know belonging class • More in DEMO later on…
Claim • Programmers shouldn’t • stop the workflow • do any extra work to find comments. • Need a tool • deals with these problems • extracts comments automatically.
Solution • Comment Extractor • A plug-in for JEdit (an open source java editor) • Extracts comments from 4 types of CO • Returns comments by Intelli-Selection • user’s selection • cursor’s location
What the icons mean Variable comment Type comment Java predefined type comment Function comment No comment
This is the class (for members) or return type (for methods) This is the first level. Each level always shows the respective type and variable comments This is the second level, showing comments relating to function openPrintWriter() The selected express that is of interest This is the detailed view pane for the selected comment above Allow going back and forth with various comment trees Freezes comment extraction DEMO – Introduction to the GUI
DEMO – Complex process finding comments from Inherited Classes • Need to knowwhich classhas isInt()’scomment Type isInt() isReal() BasicType isInt() isReal() isInt() PointerType isReal() …. isInt() IntType isReal() BooleanType isInt() isReal() ….
DEMO – Finding out the usual way • Where is m? • 170 lines up, we find it’s declaration • Where is Machine class? • 1 out of 61 files, we find it’s declaration • Where is method emitLoad? • 200 lines down, we find two overloaded declarations • Which emitLoad method is correct? • Need to know what parameter (sto, tmp) types are! • Give up?
DEMO – Finding out the JavaDoc way • Where is m? • 170 lines up, we find it’s declaration • Open JavaDoc on Machine class • Find emitLoad documentation • Need to know what parameter (sto, tmp) types are! • Not all comments are JavaDoc style, so are not seen!
DEMO – Finding out the grep way • Assuming there are few uses of the text “emitLoad”, where is emitLoad? • Need to weed out emitLoad declarations • Much faster, only because not repeated declaration • Still need to know which overloaded method • (still need to find out sto and tmp!) • Still need to open files and read comments • Hard to go back to original position if not created in separate process
DEMO – Finding out the Comment Extractor way
Limitations • This tool won’t be helpful if • No comments • Bad comments • Comments not associated with a CO • a plugin currently only for JEdit • works only for Java While loop
Lessons Learned (1) • Didn’t have CE to develop CE • difficult to understand JEdit’s massive source code • Unintentional benefits • i.e. warping files
Lessons Learned (2) • Modular design allowed easy integration of unanticipated changes • User Interaction (GUI) • Functionality JEdit Comment Extractor Comment Hunter Location Searcher GUI JEdit plugin interface
Any comments? (no pun intended)We’ll help you extract it! Comment Extractor