ExDNA.Detection.Grouper (ExDNA v1.5.2)

Copy Markdown View Source

Groups clones by the directories they span so reporters can produce higher-level summaries.

Summary

Functions

Group clones by the set of parent directories involved in each clone.

Types

group()

@type group() :: %{
  key: tuple(),
  directories: [String.t()],
  clones: [grouped_clone()],
  total_mass: non_neg_integer()
}

grouped_clone()

@type grouped_clone() :: %{clone: ExDNA.Detection.Clone.t(), index: pos_integer()}

ordered_item()

@type ordered_item() :: {:group, group()} | {:clone, grouped_clone()}

result()

@type result() :: %{
  groups: [group()],
  ungrouped: [grouped_clone()],
  ordered: [ordered_item()]
}

Functions

group(clones)

@spec group([ExDNA.Detection.Clone.t()]) :: result()

Group clones by the set of parent directories involved in each clone.

Only directory sets shared by 2 or more clones form a group. Clones with unique directory sets stay ungrouped.