package analyses
- Alphabetic
- Public
- Protected
Type Members
- trait DomainBasedFPCFAnalysisScheduler extends FPCFAnalysisScheduler
Scheduler that can be used by analyses which perform abstract interpretations and where the used properties are defined by the domain.
- class L0BaseAIResultAnalysis extends FPCFAnalysis
Performs an abstract interpretation of a method using a project's AIDomainFactoryKey.
- sealed trait L0BaseAIResultAnalysisScheduler extends DomainBasedFPCFAnalysisScheduler
- class LBFieldValuesAnalysis extends FPCFAnalysis
Computes for each private field an approximation of the type of values stored in the field.
Computes for each private field an approximation of the type of values stored in the field.
Basically, we perform an abstract interpretation of all methods that assign a value to the field to compute the type of the values stored in the field.
This analysis is deliberately optimized for performance and, given that we don't have precise call-graph information and also don't track the origin of values, we can't track the overall nullness property of the values stored in a field. E.g., even if we always see that a field is only written in the constructor we still don't know if that happens w.r.t.
this
or some other instance and whether the field was actually read before that!- Note
This is a very, very shallow analysis and improvements w.r.t. the precision are easily imaginable.
,ADDITIONALLY, WE HAVE TO IGNORE THOSE FIELDS WHICH SEEMS TO BE ALWAYS NULL BECAUSE 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 - RESERVED 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 }
- class LBMethodReturnValuesAnalysis extends FPCFAnalysis
Computes for each method that returns object typed values general information about the potentially returned values.
Value Members
- object EagerL0BaseAIAnalysis extends L0BaseAIResultAnalysisScheduler with BasicFPCFEagerAnalysisScheduler
- object EagerLBFieldValuesAnalysis extends BasicFPCFEagerAnalysisScheduler
- object EagerLBMethodReturnValuesAnalysis extends BasicFPCFEagerAnalysisScheduler
- object FieldValuesAnalysis
- object L0BaseAIResultAnalysis
- object LazyL0BaseAIAnalysis extends L0BaseAIResultAnalysisScheduler with BasicFPCFLazyAnalysisScheduler