This issue contains classification of supported and unsupported features in Java Analyzer. ## Features ### Objects - [x] Primitive types - [x] Reference types - [x] Arrays - [ ] Interfaces - [ ] Abstract classes ### Operators - [x] `Add`/`Sub`/`Mul`/`Div`/`Rem` - [x] `Shl`/`Shr`/`Ushr` - [x] `Or`/`And`/`Xor`/`Eq`/`Neq`/`Ge`/`Gt`/`Le`/`Lt` - [x] `Cmp`/`Cmpg`/`Cmpl` - [x] `Neg` ### Control flow - [x] Branching - [x] Loops - [x] Switch. Added in #39 - [x] Recursive calls ### Functions - [x] Member functions - [x] Static functions - [x] Recursive functions - [x] Throwing functions - [ ] Abstract functions ### Arrays - [x] 1-D arrays initialization - [ ] Multidimensional arrays initialization - [x] Writing, reading - [x] Length ### Statics - [x] Static fields. Added in #30 - [x] Static initialization. Added in #30 ### Exceptions - [x] `NullPointerException` - [x] `IndexOutOfBoundsException` - [x] `NegativeArraySizeException` - [x] `ArithmeticException` - [x] Explicit exceptions - [ ] Exception handlers - [ ] Exception trace recovery - [ ] Implicit/explicit exceptions distinguishing ### Invokes - [x] Special invokes - [x] Static invokes - [x] Virtual invokes. Added in #43 - [ ] Dynamic invokes ### Types - [x] Integral type casts - [x] Floating type casts - [x] `float`/`double` to `int`/`long` - [ ] `int`/`long` to `float`/`double` - [x] `instance of`. Added in #41 - [x] Casts. Added in #34 ### Approximations - [ ] Primitive wrappers - [ ] Collections - [ ] ... ## Other issues - [x] JacoDB incorrectly handles types for operations on integrals like `char`, `short`, etc. See [this](https://github.com/UnitTestBot/jacodb/issues/105). Fixed in #34 - [ ] No coverage for a `JcTest` - [ ] No `ULValue`s for `this` and locals - [x] Multidimensional arrays are resolved incorrectly in `JcTestResolver` - [ ] Can't easily extend `UMemoryBase` now - [ ] Minimize test cases based on thrown exceptions - [ ] Strange hack with `callStack.isNotEmpty()` - [ ] Locals count and parameters count are always evaluated, though it can be cached - [ ] Very big arrays causes OOME in `JcTestResolver` - [x] If statements not always have both successors - [ ] Create arrays with default value and a couple of writes
This issue contains classification of supported and unsupported features in Java Analyzer.
Features
Objects
Operators
Add/Sub/Mul/Div/RemShl/Shr/UshrOr/And/Xor/Eq/Neq/Ge/Gt/Le/LtCmp/Cmpg/CmplNegControl flow
Functions
Arrays
Statics
Exceptions
NullPointerExceptionIndexOutOfBoundsExceptionNegativeArraySizeExceptionArithmeticExceptionInvokes
Types
float/doubletoint/longint/longtofloat/doubleinstance of. Added in Support of complex type constraints #41UTypeStreams and casts inJcInterpreter#34Approximations
Other issues
char,short, etc. See this. Fixed in Support ofUTypeStreams and casts inJcInterpreter#34JcTestULValues forthisand localsJcTestResolverUMemoryBasenowcallStack.isNotEmpty()JcTestResolver