...
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
- 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.
...