Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Java Analyzer check-list #25

Open
37 of 57 tasks
sergeypospelov opened this issue Jun 19, 2023 · 0 comments
Open
37 of 57 tasks

Java Analyzer check-list #25

sergeypospelov opened this issue Jun 19, 2023 · 0 comments

Comments

@sergeypospelov
Copy link
Member

sergeypospelov commented Jun 19, 2023

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

Functions

  • Member functions
  • Static functions
  • Recursive functions
  • Throwing functions
  • Abstract functions

Arrays

  • 1-D arrays initialization
  • Multidimensional arrays initialization
  • Writing, reading
  • Length

Statics

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

Approximations

  • Primitive wrappers
  • Collections
  • ...

Other issues

  • JacoDB incorrectly handles types for operations on integrals like char, short, etc. See this. Fixed in Support of UTypeStreams and casts in JcInterpreter #34
  • No coverage for a JcTest
  • No ULValues for this 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant