...
Use Case 6: Find occurences of nested try/catch blocks that rethrow an exception.
Evaluation
X = can't be supportednot supported
✓ = can be supported
? = not sure
| Final Array & Anonymous Class | Generic Constructors | Capture Conversion Idiom | Overloaded Methods Sharing Single Type | Covariant Arrays | Rethrown Exception |
---|---|---|---|---|---|---|
JTL | X | X | X | ? | X | X |
BBQ | X | X | X | ? | X | X |
SOUL |
|
|
|
|
|
|
JQuery | X | X | X | X (*1) | X | X |
.QL (*2) | ✓ | ? | ? | ? | ✓ | ? |
Jackpot | X | ✓ | X | X | X | ? |
PMD | X | X | X | X | X | X |
...
No variable binding support which restricts a lot of the analysis.
Taxonomy
Query Language Features
- Model: Relational vs Tree
- control flow statements
- variable binding & cross reference
- types information of AST nodes + type constraints (subtype relations)
- set operators
- generics / wildcards
- read/write references
- anonymous class
- aggregates (grouping results)
- pattern matching? (i.e JTL style for argument list, SOUL like for AST matching)
- universal quantifiers (forall, exists, no)
- querying style: logic, query-by-example
Java Language Features supported
- control flow statements
- type information of AST nodes
- type constraints (subtype relations)
- generics / wildcards
- anonymous class
Conclusion/Ideas
Relational based query languages not low level enough.
...