sbt.inc

Analysis

trait Analysis extends AnyRef

The merge/groupBy functionality requires understanding of the concepts of internalizing/externalizing dependencies:

Say we have source files X, Y. And say we have some analysis A_X containing X as a source, and likewise for A_Y and Y. If X depends on Y then A_X contains an external dependency X -> Y.

However if we merge A_X and A_Y into a combined analysis A_XY, then A_XY contains X and Y as sources, and therefore X -> Y must be converted to an internal dependency in A_XY. We refer to this as "internalizing" the dependency.

The reverse transformation must occur if we group an analysis A_XY into A_X and A_Y, so that the dependency X->Y crosses the boundary. We refer to this as "externalizing" the dependency.

These transformations are complicated by the fact that internal dependencies are expressed as source file -> source file, but external dependencies are expressed as source file -> fully-qualified class name.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Analysis
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def ++(other: Analysis): Analysis

    Concatenates Analysis objects naively, i.

    Concatenates Analysis objects naively, i.e., doesn't internalize external deps on added files. See Analysis.merge.

  2. abstract def --(sources: Iterable[File]): Analysis

    Drops all analysis information for sources naively, i.

    Drops all analysis information for sources naively, i.e., doesn't externalize internal deps on removed files.

  3. abstract def addSource(src: File, api: Source, stamp: Stamp, info: SourceInfo, products: Iterable[(File, String, Stamp)], internalDeps: Iterable[InternalDependency], externalDeps: Iterable[ExternalDependency], binaryDeps: Iterable[(File, String, Stamp)]): Analysis

  4. abstract val apis: APIs

  5. abstract val compilations: Compilations

    Information about compiler runs accumulated since clean command has been run.

    Information about compiler runs accumulated since clean command has been run.

    The main use-case for using compilations field is to determine how many iterations it took to compilen give code. The Compilation object are also stored in Source objects so there's an indirect way to recover information about files being recompiled in every iteration.

    The incremental compilation algorithm doesn't use information stored in compilations. It's safe to prune contents of that field without breaking internal consistency of the entire Analysis object.

  6. abstract def copy(stamps: Stamps = stamps, apis: APIs = apis, relations: Relations = relations, infos: SourceInfos = infos, compilations: Compilations = compilations): Analysis

  7. abstract def groupBy[K](discriminator: (File) ⇒ K): Map[K, Analysis]

    Partitions this Analysis using the discriminator function.

    Partitions this Analysis using the discriminator function. Externalizes internal deps that cross partitions.

  8. abstract val infos: SourceInfos

  9. abstract val relations: Relations

    Mappings between sources, classes, and binaries.

  10. abstract val stamps: Stamps

  11. abstract def addBinaryDep(src: File, dep: File, className: String, stamp: Stamp): Analysis

    Annotations
    @deprecated
    Deprecated

    (Since version 0.13.8) Register all products and dependencies in addSource.

  12. abstract def addExternalDep(src: File, dep: String, api: Source, inherited: Boolean): Analysis

    Annotations
    @deprecated
    Deprecated

    (Since version 0.13.8) Register all products and dependencies in addSource.

  13. abstract def addProduct(src: File, product: File, stamp: Stamp, name: String): Analysis

    Annotations
    @deprecated
    Deprecated

    (Since version 0.13.8) Register all products and dependencies in addSource.

  14. abstract def addSource(src: File, api: Source, stamp: Stamp, directInternal: Iterable[File], inheritedInternal: Iterable[File], info: SourceInfo): Analysis

    Annotations
    @deprecated
    Deprecated

    (Since version 0.13.8) Register all products and dependencies in addSource.

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  15. final def notify(): Unit

    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  17. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  18. lazy val toString: String

    Definition Classes
    Analysis → AnyRef → Any
  19. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped