150 likes | 349 Views
The JQuery Tool A Generic Query-Based Code browser for Eclipse. This project is supported by an OTI “Eclipse Fellowship” program. Project leaders: Kris De Volder, Gregor Kiczales Students: Doug Janzen, Rajeswari Rajagopalan, Ray Suprio.
E N D
The JQuery ToolA Generic Query-BasedCode browser for Eclipse This project is supported by an OTI “Eclipse Fellowship” program Project leaders: Kris De Volder, Gregor Kiczales Students: Doug Janzen, Rajeswari Rajagopalan, Ray Suprio Software Practices Lab. -- The University of British Columbia
Different Approaches to “Modularity” • Programming Language Support • Modularity defined by how code is written • For example: aspects in AspectJ, classes in Java • “Hard” modularity. • Tool Support • Modularity defined by how code is viewed • For example: code browsers • “Soft” modularity • organization can crosscut PL modules • remodularize/reorganize “on the fly” • multiple simultaneous decompositions
JQuery: A Generic Browser Idea: Browser = navigable viewon the result of a queryexpressed in a sufficiently expressive query language, run against a suitable “data-base” of code. Prolog-like logic language • Facts describing code structure: • class, method, field declarations • inheritance relationships • calling dependencies • … Derived by calling Eclipse API’s
Why JQuery? • IDE have a “too many browsers” problem • Different type of view = different type of browser tool • Why is this undesirable? • Usage issues • Disorientation caused by switching between browsers • Implementation issues • Must implement many different browsers • Hard to support highly specific browsers • e.g. aware of specific naming / coding conventions • specific to a task Also… we can use JQuery for experimentation.
How to organize results Query Tree-view on query results The JQuery Eclipse plugin
Example 1: Method Browser Methods in tyRuBa.util organized by name
Where are instances of RE created? Example 2: Instance Creation Browser
Example 3: Category Browsers Custom JavaDoc @category tags attached to classes, interfaces and methods
Example 3: “Class Category Browser” Classes + interfaces with@category optimization tags
Example 4: Customizing Browsers Exploring creation of Figures in JHotdraw. Edit a copy of Instance Creation Browser to only show subtypes of “Figure”
Want to know more about this? Example 4: Customizing Browsers The resulting Figure Creation Browser:
This is a “sub-browser” Example 4: Customizing Browsers The resulting Figure Creation Browser:
Our Experience with Eclipse What we liked… • Nice integration of our tool with professional IDE • API access to Java source model • Eclipse incremental compiler We can even run queries on code that contains compilation errors!!! What we didn’t like so much • Steep learning curve for the API’s e.g: to get our “code facts” do we… • Use the AST package? • Or use the more high-level search engine API? Search engine looked good but…
Download The JQuery Tool A Generic Query-Based Code browser for Eclipse JDT • Download • The latest release of the JQuery plugin • + • papers about JQuery • http://www.cs.ubc.ca/labs/spl/projects/jquery.html