Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Use Case 6: Find occurences of nested try/catch blocks that rethrow an exception.

Evaluation

Wiki Markup
*\[This section is work in progress\]*

X = not supported

= supported

...

No variable binding support which restricts a lot of the analysis. 

Taxonomy

Wiki Markup
*\[This section is work in progress\]*

Query Language Features

  • Model: Relational vs Tree
  • variable binding (unification) & back-reference
  • set operators
  • support for dataflow (Read/write references...)
  • aggregates (grouping results)
  • List pattern matching (i.e JTL style for argument list)
  • behavioural pattern matching (SOUL like, Jackpot)
  • quantifiers (forall, exists, no)
  • querying style: logic, query-by-example, path, sql

...

  • control flow statements
  • type information of AST nodes
  • type constraints (subtype relations)
  • generics / wildcards
  • anonymous class

Conclusion/Ideas

Wiki Markup
*\[This section is work in progress\]*

Relational based query languages not low level enough. 

...

Week

Date

Tasks

Milestones

1

9 July - 13 July

  • Source Code Query Languages Research
  • Write up of Review on wiki

 

2

16 July - 20 July

  • Source Code Query Languages Evaluation & Taxonomy 
  • Write up of Results on wiki

 

3

23 July - 27 July

  • Tools research
  • Comparison of static analysis API (pmd, tree, eclipse)
  • Working on Eclipse Plugin to query JCT use cases

Milestone 1 

  • Comparative Study of Source Code Query Languages

4

30 July - 3 August

  • Developed Eclipse plugin
  • Investigating Diagnostic ListenerCreate new AST visitor to enrich AST nodes with type & relation information

 

5

6 August - 10 August

  • Create new AST visitor to enrich AST nodes with type & relation informations 
  • List AST relations that needs to be retrieved

 

6

13 August - 17 August

  •  Working at Santa Clara office

Milestone 1.5
Complete new AST visitor on steroids.  

7

20 August - 24 August 

 

8

27 August - 31 August

  •  Indexer (modified javac + diagnostic listener parser)

Milestone 2 

  • Database representation of Java Source Code

9

3 September - 7 September

  • Develop prototype to query JCT use cases using our API. (backend or SQL)

 

10

10 September - 14 September

 

 

11

17 September - 21 September

 

Milestone 3 

  • Design
Front end
  • Language to query database representation of the source code

12

24 September - 28 September

  • Preparing presentation for JavaONE

 

13

1 October - 5 October

  • Raoul at JavaONE

 

14

8 October - 12 October

  • Stockholm presentation

 

...