Class Kind

java.lang.Object
qilin.core.builder.callgraph.Kind
All Implemented Interfaces:
Numberable

public final class Kind extends Object implements Numberable
Enumeration type representing the kind of a call graph edge.
Author:
Ondrej Lhotak
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Kind
    Implicit call to AsyncTask.doInBackground() due to AsyncTask.execute() call.
    static final Kind
    Implicit call to static initializer.
    static final Kind
    Implicit call to java.lang.Runnable.run() due to Executor.execute() call.
    static final Kind
    Implicit call to java.lang.ref.Finalizer.register from new bytecode.
    static final Kind
    Fake edges from our generic callback model.
    static final Kind
    Implicit call to Handler.handleMessage(android.os.Message) due to Handler.sendxxxxMessagexxxx() call.
    static final Kind
    Due to explicit invokeinterface instruction.
    static final Kind
     
    static final Kind
    Due to an invokedynamic instruction: its target (lambda body, method reference), with the captured values as the only arguments passed.
    static final Kind
    Implicit call to finalize() from java.lang.ref.Finalizer.invokeFinalizeMethod().
    static final Kind
    Call on a lambda / method reference object reaching its implementation, with the call's arguments, the captured values and the result bound as the functional object prescribes.
    static final Kind
    Implicit call to constructor from java.lang.Class.newInstance().
    static final Kind
    Implicit call to run() through AccessController.doPrivileged().
    static final Kind
    Due to call to Class.newInstance(..) when reflection log is enabled.
    static final Kind
    Due to call to Constructor.newInstance(..).
    static final Kind
    Due to call to Method.invoke(..).
    static final Kind
    Due to explicit invokespecial instruction.
    static final Kind
    Due to explicit invokestatic instruction.
    static final Kind
    Implicit call to Thread.run() due to Thread.start() call.
    static final Kind
    Due to explicit invokevirtual instruction.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
     
    boolean
     
    static boolean
     
    boolean
    Returns true if the call is to static initializer.
    static boolean
    Returns true if the call is to static initializer.
    boolean
     
    static boolean
     
    boolean
    Returns true if the call is due to an explicit invoke statement.
    static boolean
    Returns true if the call is due to an explicit invoke statement.
    boolean
     
    static boolean
     
    boolean
     
    static boolean
     
    boolean
    Returns true if the call is due to an explicit instance invoke statement.
    static boolean
    Returns true if the call is due to an explicit instance invoke statement.
    boolean
     
    static boolean
     
    boolean
     
    static boolean
     
    boolean
     
    static boolean
     
    boolean
     
    static boolean
     
    boolean
    Returns true if the call is due to an explicit static invoke statement.
    static boolean
    Returns true if the call is due to an explicit static invoke statement.
    boolean
     
    static boolean
     
    boolean
    Returns true if the call is due to an explicit virtual invoke statement.
    static boolean
    Returns true if the call is due to an explicit virtual invoke statement.
     
    boolean
     
    static boolean
     
    void
    setNumber(int num)
     
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • INVALID

      public static final Kind INVALID
    • STATIC

      public static final Kind STATIC
      Due to explicit invokestatic instruction.
    • VIRTUAL

      public static final Kind VIRTUAL
      Due to explicit invokevirtual instruction.
    • INTERFACE

      public static final Kind INTERFACE
      Due to explicit invokeinterface instruction.
    • SPECIAL

      public static final Kind SPECIAL
      Due to explicit invokespecial instruction.
    • CLINIT

      public static final Kind CLINIT
      Implicit call to static initializer.
    • GENERIC_FAKE

      public static final Kind GENERIC_FAKE
      Fake edges from our generic callback model.
    • THREAD

      public static final Kind THREAD
      Implicit call to Thread.run() due to Thread.start() call.
    • EXECUTOR

      public static final Kind EXECUTOR
      Implicit call to java.lang.Runnable.run() due to Executor.execute() call.
    • ASYNCTASK

      public static final Kind ASYNCTASK
      Implicit call to AsyncTask.doInBackground() due to AsyncTask.execute() call.
    • FINALIZE

      public static final Kind FINALIZE
      Implicit call to java.lang.ref.Finalizer.register from new bytecode.
    • HANDLER

      public static final Kind HANDLER
      Implicit call to Handler.handleMessage(android.os.Message) due to Handler.sendxxxxMessagexxxx() call.
    • INVOKE_FINALIZE

      public static final Kind INVOKE_FINALIZE
      Implicit call to finalize() from java.lang.ref.Finalizer.invokeFinalizeMethod().
    • PRIVILEGED

      public static final Kind PRIVILEGED
      Implicit call to run() through AccessController.doPrivileged().
    • NEWINSTANCE

      public static final Kind NEWINSTANCE
      Implicit call to constructor from java.lang.Class.newInstance().
    • INVOKE_DYNAMIC

      public static final Kind INVOKE_DYNAMIC
      Due to an invokedynamic instruction: its target (lambda body, method reference), with the captured values as the only arguments passed.
    • LAMBDA

      public static final Kind LAMBDA
      Call on a lambda / method reference object reaching its implementation, with the call's arguments, the captured values and the result bound as the functional object prescribes.
    • REFL_INVOKE

      public static final Kind REFL_INVOKE
      Due to call to Method.invoke(..).
    • REFL_CONSTR_NEWINSTANCE

      public static final Kind REFL_CONSTR_NEWINSTANCE
      Due to call to Constructor.newInstance(..).
    • REFL_CLASS_NEWINSTANCE

      public static final Kind REFL_CLASS_NEWINSTANCE
      Due to call to Class.newInstance(..) when reflection log is enabled.
  • Method Details

    • name

      public String name()
    • getNumber

      public int getNumber()
      Specified by:
      getNumber in interface Numberable
    • setNumber

      public void setNumber(int num)
      Specified by:
      setNumber in interface Numberable
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • passesParameters

      public boolean passesParameters()
    • isFake

      public boolean isFake()
    • isExplicit

      public boolean isExplicit()
      Returns true if the call is due to an explicit invoke statement.
    • isInstance

      public boolean isInstance()
      Returns true if the call is due to an explicit instance invoke statement.
    • isVirtual

      public boolean isVirtual()
      Returns true if the call is due to an explicit virtual invoke statement.
    • isSpecial

      public boolean isSpecial()
    • isClinit

      public boolean isClinit()
      Returns true if the call is to static initializer.
    • isStatic

      public boolean isStatic()
      Returns true if the call is due to an explicit static invoke statement.
    • isThread

      public boolean isThread()
    • isExecutor

      public boolean isExecutor()
    • isAsyncTask

      public boolean isAsyncTask()
    • isPrivileged

      public boolean isPrivileged()
    • isReflection

      public boolean isReflection()
    • isReflInvoke

      public boolean isReflInvoke()
    • isHandler

      public boolean isHandler()
    • passesParameters

      public static boolean passesParameters(Kind k)
    • isFake

      public static boolean isFake(Kind k)
    • isExplicit

      public static boolean isExplicit(Kind k)
      Returns true if the call is due to an explicit invoke statement.
    • isInstance

      public static boolean isInstance(Kind k)
      Returns true if the call is due to an explicit instance invoke statement.
    • isVirtual

      public static boolean isVirtual(Kind k)
      Returns true if the call is due to an explicit virtual invoke statement.
    • isSpecial

      public static boolean isSpecial(Kind k)
    • isClinit

      public static boolean isClinit(Kind k)
      Returns true if the call is to static initializer.
    • isStatic

      public static boolean isStatic(Kind k)
      Returns true if the call is due to an explicit static invoke statement.
    • isThread

      public static boolean isThread(Kind k)
    • isExecutor

      public static boolean isExecutor(Kind k)
    • isAsyncTask

      public static boolean isAsyncTask(Kind k)
    • isPrivileged

      public static boolean isPrivileged(Kind k)
    • isReflection

      public static boolean isReflection(Kind k)
    • isReflInvoke

      public static boolean isReflInvoke(Kind k)
    • isHandler

      public static boolean isHandler(Kind k)