Skip to content

Java Analyzer check-list #25

Description

@sergeypospelov

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions