Package

org.opalj.ai

analyses

Permalink

package analyses

Source
package.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. analyses
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. class BaseFieldValuesAnalysisDomain extends Domain with TheProject with TheCode with DefaultDomainValueBinding with ThrowAllPotentialExceptionsConfiguration with DefaultTypeLevelIntegerValues with DefaultTypeLevelLongValues with DefaultTypeLevelFloatValues with DefaultTypeLevelDoubleValues with TypeLevelPrimitiveValuesConversions with TypeLevelLongValuesShiftOperators with TypeLevelFieldAccessInstructions with TypeLevelInvokeInstructions with DefaultReferenceValuesBinding with DefaultHandlingOfMethodResults with IgnoreSynchronization

    Permalink

    A very basic domain that we use for analyzing the real type of the values stored in a field.

    A very basic domain that we use for analyzing the real type of the values stored in a field.

    Usage

    One instance of this domain has to be used to analyze all methods of the respective class. Only after the analysis of all methods, the information returned by fieldsWithRefinedValues is guaranteed to be correct.

    Thread Safety

    This domain is not thread-safe. The methods of a class have to be analyzed sequentially. The order in which the methods are analyzed is not relevant. However, before the analysis of a org.opalj.br.Method, the method setMethodContext has to be called.

  2. class BaseMethodReturnValuesAnalysisDomain extends CorrelationalDomain with TheProject with TheMethod with DefaultDomainValueBinding with ThrowAllPotentialExceptionsConfiguration with DefaultTypeLevelIntegerValues with DefaultTypeLevelLongValues with TypeLevelLongValuesShiftOperators with TypeLevelPrimitiveValuesConversions with DefaultTypeLevelFloatValues with DefaultTypeLevelDoubleValues with DefaultReferenceValuesBinding with RefinedTypeLevelFieldAccessInstructions with TypeLevelInvokeInstructions with DefaultHandlingOfMethodResults with IgnoreSynchronization with RecordReturnedValueInfrastructure

    Permalink

    A shallow analysis that tries to refine the return types of methods.

    A shallow analysis that tries to refine the return types of methods.

    The analysis terminates itself when it realizes that the return type cannot be refined.

  3. class FPFieldValuesAnalysisDomain extends BaseFieldValuesAnalysisDomain with RefinedTypeLevelFieldAccessInstructions with RefinedTypeLevelInvokeInstructions

    Permalink
  4. class FPMethodReturnValuesAnalysisDomain extends BaseMethodReturnValuesAnalysisDomain with RefinedTypeLevelInvokeInstructions

    Permalink
  5. type FieldValueInformation = Map[Field, Domain.DomainValue]

    Permalink
  6. type MethodReturnValueInformation = Map[Method, Option[Domain.DomainValue]]

    Permalink

Value Members

  1. object FieldValuesAnalysis

    Permalink

    This analysis performs a simple abstract interpretation of all methods of a class to identify fields that are always assigned an object that is a subtype of the field's declared type.

    This analysis performs a simple abstract interpretation of all methods of a class to identify fields that are always assigned an object that is a subtype of the field's declared type.

    Note

    WE IGNORE THOSE FIELDS WHICH SEEMS TO BE ALWAYS NULL. THESE FIELDS ARE OFTEN INITIALZED - AT RUNTIME - BY SOME CODE OUTSIDE THE SCOPE OF "PURE" JAVA BASED ANALYSES. E.G., WE IGNORE THE FOLLOWING FIELDS FROM JAVA 8:

    • [BY NAME] java.util.concurrent.FutureTask{ runner:null // Originaltype: java.lang.Thread }
    • [BY NAME] java.nio.channels.SelectionKey{ attachment:null // Originaltype: java.lang.Object }
    • [BY SETTER] java.lang.System{ err:null // Originaltype: java.io.PrintStream }
    • [BY SETTER] java.lang.System{ in:null // Originaltype: java.io.InputStream }
    • [BY SETTER] java.lang.System{ out:null // Originaltype: java.io.PrintStream }
    • [BY CONSTRUCTOR] java.net.InterfaceAddress{ address:null // Originaltype: java.net.InetAddress } [UPDATE BY NATIVE CODE...] sun.nio.ch.sctp.ResultContainer{ value:null // Originaltype: java.lang.Object } THE FOLLOWING FIELDS ARE "REALLY" NULL in JAVA 8 (1.8.0 - 1.8.0_25):
    • [OK] java.util.TimeZone{ NO_TIMEZONE:null // Originaltype: java.util.TimeZone }
    • [OK - DEPRECATED] java.security.SecureRandom{ digest:null // Originaltype: java.security.MessageDigest } The reason/purpose is not 100% clear:
    • [OK] javax.swing.JList.AccessibleJList.AccessibleJListChild{ accessibleContext:null }
    • [OK] javax.swing.JList.AccessibleJList.AccessibleJListChild{ component:null }
    • [OK] com.sun.corba.se.impl.io.IIOPInputStream{ abortIOException:null }
    • [OK] com.sun.corba.se.impl.orb.ORBImpl{ codeBaseIOR:null }
    • [OK - ACCIDENTIALLY CREATED?] com.sun.org.apache.xpath.internal.jaxp.XPathImpl{ d:null }
    • [OK - LEGACY CODE?] javax.swing.JPopupMenu{ margin:null }
    • [OK - LEGACY CODE?] sun.audio.AudioDevice{ mixer:null }
    • [OK - RESERVED FOR FUTURE USAGE] com.sun.corba.se.impl.corba.ServerRequestImpl{ _ctx:null }
    • [OK - LEGACY CODE?] com.sun.java.swing.plaf.motif.MotifPopupMenuUI{ border:null }
    • [OK - LEGACY CODE?] com.sun.media.sound.SoftSynthesizer{ testline:null }
    • [OK - LEGACY CODE?] com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader{ fSymbolTable:null }
    • [OK - LEGACY CODE] com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl{ _piParams:null }
    • [OK - RSERVED FOR FUTURE USAGE?] com.sun.org.apache.xml.internal.dtm.ref.DTMDefaultBase{ m_namespaceLists:null }
    • [OK - LEGACY CODE?] sun.awt.motif.MFontConfiguration{ fontConfig:null }
    • [OK - LEGACY CODE?] sun.print.PSStreamPrintJob{ reader:null }
  2. object FieldValuesKey extends ProjectInformationKey[FieldValueInformation, Nothing]

    Permalink

    The key object to get information about the "more precise" field types.

  3. object MethodReturnValuesAnalysis

    Permalink

    A shallow analysis that tries to refine the return types of methods.

  4. object MethodReturnValuesKey extends ProjectInformationKey[MethodReturnValueInformation, Nothing]

    Permalink

    The key object to get information about the "more precise" return values.

  5. package cg

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped