public void execute() {
    new PathAwareCrawler<>(
      FormulaExecutorComponentVisitor.newBuilder(metricRepository, measureRepository).buildFor(formulas))
      .visit(treeRootHolder.getReportTreeRoot());
  }
@Test
  public void compute_and_aggregate_duplicated_lines_density_using_lines() {
    addDuplicatedBlock(FILE_1_REF, 2);
    addDuplicatedBlock(FILE_2_REF, 3);

    when(FILE_1_ATTRS.getLines()).thenReturn(10);
    when(FILE_2_ATTRS.getLines()).thenReturn(40);

    // this should have no effect as it's a test file
    when(FILE_5_ATTRS.getLines()).thenReturn(1_000_000);

    underTest.execute();

    assertRawMeasureValue(FILE_1_REF, DUPLICATED_LINES_DENSITY_KEY, 20d);
    assertRawMeasureValue(FILE_2_REF, DUPLICATED_LINES_DENSITY_KEY, 7.5d);
    assertNoRawMeasure(FILE_3_REF, DUPLICATED_LINES_DENSITY_KEY);
    assertNoRawMeasure(FILE_4_REF, DUPLICATED_LINES_DENSITY_KEY);
    assertRawMeasureValue(DIRECTORY_REF, DUPLICATED_LINES_DENSITY_KEY, 10d);
    assertRawMeasureValue(ROOT_REF, DUPLICATED_LINES_DENSITY_KEY, 10d);
  }