Open
Description
This issue contains classification of supported and unsupported features in Java Analyzer.
Features
Objects
- Primitive types
- Reference types
- Arrays
- Interfaces
- Abstract classes
Operators
-
Add
/Sub
/Mul
/Div
/Rem
-
Shl
/Shr
/Ushr
-
Or
/And
/Xor
/Eq
/Neq
/Ge
/Gt
/Le
/Lt
-
Cmp
/Cmpg
/Cmpl
-
Neg
Control flow
- Branching
- Loops
- Switch. Added in Supported switch instruction in JaCoDB interpreter #39
- Recursive calls
Functions
- Member functions
- Static functions
- Recursive functions
- Throwing functions
- Abstract functions
Arrays
- 1-D arrays initialization
- Multidimensional arrays initialization
- Writing, reading
- Length
Statics
- Static fields. Added in Initial support for static fields in JcInterpreter #30
- Static initialization. Added in Initial support for static fields in JcInterpreter #30
Exceptions
-
NullPointerException
-
IndexOutOfBoundsException
-
NegativeArraySizeException
-
ArithmeticException
- Explicit exceptions
- Exception handlers
- Exception trace recovery
- Implicit/explicit exceptions distinguishing
Invokes
- Special invokes
- Static invokes
- Virtual invokes. Added in Virtual calls #43
- Dynamic invokes
Types
- Integral type casts
- Floating type casts
-
float
/double
toint
/long
-
int
/long
tofloat
/double
-
instance of
. Added in Support of complex type constraints #41 - Casts. Added in Support of
UTypeStream
s and casts inJcInterpreter
#34
Approximations
- Primitive wrappers
- Collections
- ...
Other issues
- JacoDB incorrectly handles types for operations on integrals like
char
,short
, etc. See this. Fixed in Support ofUTypeStream
s and casts inJcInterpreter
#34 - No coverage for a
JcTest
- No
ULValue
s forthis
and locals - 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
- If statements not always have both successors
- Create arrays with default value and a couple of writes
Metadata
Metadata
Assignees
Labels
No labels