accrue.analysis.callgraph

## Class PreciseCallGraphFactory

- java.lang.Object
- - accrue.analysis.interprocanalysis.AnalysisFactory<PCGAbsVal>
  - - accrue.analysis.callgraph.PreciseCallGraphFactory

-     public class PreciseCallGraphFactory
      extends AnalysisFactory<PCGAbsVal>

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `ANALYSIS_NAME`
    `static java.lang.String` | `CALL_SOURCES` EdgeIdentifiers from code decls to call sites.
    `static java.lang.String` | `CALL_TARGETS` EdgeIdentifiers from call sites to code decls.
    `static java.lang.String` | `CATCH_SOURCES` EdgeIdentifiers from catch sites to throw sites.
    `static java.lang.String` | `CATCH_TARGETS` EdgeIdentifiers from throw sites to catch sites.
    `static java.lang.String` | `INIT_SOURCES` Backward edges between initializers.
    `static java.lang.String` | `INIT_TARGETS` EdgeIdentifiers between initializers.
    `static java.lang.String` | `RETURN_SOURCES` EdgeIdentifiers from call sites to return sites, including code blocks that return implicitly.
    `static java.lang.String` | `RETURN_TARGETS` EdgeIdentifiers from return sites (including code blocks that return implicitly) to call sites.

    - ### Fields inherited from class accrue.analysis.interprocanalysis.AnalysisFactory

      `extInfo`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PreciseCallGraphFactory(AccrueExtensionInfo extInfo)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `analysisName()` Get the name of the analysis
    `java.lang.String` | `analysisReportName()` Get the name of the analysis report
    `AnalysisUtil<PCGAbsVal>` | `analysisUtil(WorkQueue<PCGAbsVal> wq, AnalysisUnit aunit)` Get the object sensitive analysis utility class.
    `PCGAbsVal` | `startItem(AnalysisUtil<PCGAbsVal> autil, polyglot.ast.ProcedureDecl startProc)` Get the start item for the analysis

    - ### Methods inherited from class accrue.analysis.interprocanalysis.AnalysisFactory

      `createAnalysisContext, emptyExitMap, reportTopics, startProcAnalysisContext`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### ANALYSIS_NAME

          public static final java.lang.String ANALYSIS_NAME

      See Also:
        Constant Field Values

    - #### CALL_TARGETS

          public static final java.lang.String CALL_TARGETS

      EdgeIdentifiers from call sites to code decls.
      See Also:
        Constant Field Values

    - #### CALL_SOURCES

          public static final java.lang.String CALL_SOURCES

      EdgeIdentifiers from code decls to call sites.
      See Also:
        Constant Field Values

    - #### RETURN_TARGETS

          public static final java.lang.String RETURN_TARGETS

      EdgeIdentifiers from return sites (including code blocks that return implicitly) to call sites.
      See Also:
        Constant Field Values

    - #### RETURN_SOURCES

          public static final java.lang.String RETURN_SOURCES

      EdgeIdentifiers from call sites to return sites, including code blocks that return implicitly.
      See Also:
        Constant Field Values

    - #### CATCH_TARGETS

          public static final java.lang.String CATCH_TARGETS

      EdgeIdentifiers from throw sites to catch sites.
      See Also:
        Constant Field Values

    - #### CATCH_SOURCES

          public static final java.lang.String CATCH_SOURCES

      EdgeIdentifiers from catch sites to throw sites.
      See Also:
        Constant Field Values

    - #### INIT_TARGETS

          public static final java.lang.String INIT_TARGETS

      EdgeIdentifiers between initializers. There is an EDGE_INIT edge from the constructor call to the first initializer, an edge linking the initializers in order, and an EDGE_INIT edge from the last initializer back to the constructor call.
      See Also:
        Constant Field Values

    - #### INIT_SOURCES

          public static final java.lang.String INIT_SOURCES

      Backward edges between initializers.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### PreciseCallGraphFactory

          public PreciseCallGraphFactory(AccrueExtensionInfo extInfo)

  - ### Method Detail

    - #### analysisName

          public java.lang.String analysisName()

      Description copied from class: `AnalysisFactory`
      Get the name of the analysis
      Specified by:
        `analysisName` in class `AnalysisFactory<PCGAbsVal>`

    - #### analysisReportName

          public java.lang.String analysisReportName()

      Description copied from class: `AnalysisFactory`
      Get the name of the analysis report
      Specified by:
        `analysisReportName` in class `AnalysisFactory<PCGAbsVal>`

    - #### startItem

          public PCGAbsVal startItem(AnalysisUtil<PCGAbsVal> autil,
                            polyglot.ast.ProcedureDecl startProc)
                              throws polyglot.types.SemanticException

      Description copied from class: `AnalysisFactory`
      Get the start item for the analysis
      Specified by:
        `startItem` in class `AnalysisFactory<PCGAbsVal>`
      Parameters:
        `autil` - Object sensitive analysis utility
        `startProc` - Entry procedure for the analysis
      Returns:
        The start analysis result item
      Throws:
        `polyglot.types.SemanticException` - thrown if the start item cannot be computed due to a semantic error

    - #### analysisUtil

          public AnalysisUtil<PCGAbsVal> analysisUtil(WorkQueue<PCGAbsVal> wq,
                                             AnalysisUnit aunit)

      Description copied from class: `AnalysisFactory`
      Get the object sensitive analysis utility class.
      Specified by:
        `analysisUtil` in class `AnalysisFactory<PCGAbsVal>`
      Parameters:
        `wq` - Analysis work queue of `CodeInstance`
        `aunit` - Analysis unit that we are constructing the AnalysisUtil for.