3 * Copyright (C) 2009-2017 SonarSource SA
4 * mailto:info AT sonarsource DOT com
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 3 of the License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 package org.sonar.server.computation.task.projectanalysis.step;
22 import javax.annotation.Nullable;
24 import org.sonar.api.measures.CoreMetrics;
25 import org.sonar.server.computation.task.projectanalysis.analysis.AnalysisMetadataHolder;
26 import org.sonar.server.computation.task.projectanalysis.duplication.DuplicationMeasures;
27 import org.sonar.server.computation.task.projectanalysis.duplication.IncrementalDuplicationMeasures;
28 import org.sonar.server.computation.task.step.ComputationStep;
31 * Computes duplication measures on files and then aggregates them on higher components.
33 * This step must be executed after {@link CommentMeasuresStep} as it depends on {@link CoreMetrics#COMMENT_LINES}
35 public class DuplicationMeasuresStep implements ComputationStep {
36 private final AnalysisMetadataHolder analysisMetadataHolder;
37 private final DuplicationMeasures defaultDuplicationMeasures;
38 private final IncrementalDuplicationMeasures incrementalDuplicationsMeasures;
40 public DuplicationMeasuresStep(AnalysisMetadataHolder analysisMetadataHolder, DuplicationMeasures defaultDuplicationMeasures,
41 @Nullable IncrementalDuplicationMeasures incrementalDuplicationMeasures) {
42 this.analysisMetadataHolder = analysisMetadataHolder;
43 this.defaultDuplicationMeasures = defaultDuplicationMeasures;
44 this.incrementalDuplicationsMeasures = incrementalDuplicationMeasures;
48 * Constructor used by Pico in Views where no IncrementalDuplicationMeasures is available.
50 public DuplicationMeasuresStep(AnalysisMetadataHolder analysisMetadataHolder, DuplicationMeasures defaultDuplicationMeasures) {
51 this(analysisMetadataHolder, defaultDuplicationMeasures, null);
55 public String getDescription() {
56 return "Compute duplication measures";
60 public void execute() {
61 if (analysisMetadataHolder.isIncrementalAnalysis()) {
62 incrementalDuplicationsMeasures.execute();
64 defaultDuplicationMeasures.execute();