]> source.dussan.org Git - sonarqube.git/blob
f4a79065c100c9640216437b23c4d6185b24fb42
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2023 SonarSource SA
4  * mailto:info AT sonarsource DOT com
5  *
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.
10  *
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.
15  *
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.
19  */
20 package org.sonar.ce.task.projectanalysis.step;
21
22 import org.sonar.api.measures.CoreMetrics;
23 import org.sonar.ce.task.projectanalysis.analysis.AnalysisMetadataHolder;
24 import org.sonar.ce.task.projectanalysis.component.TreeRootHolder;
25 import org.sonar.ce.task.projectanalysis.issue.fixedissues.PullRequestFixedIssueRepository;
26 import org.sonar.ce.task.projectanalysis.measure.Measure;
27 import org.sonar.ce.task.projectanalysis.measure.MeasureRepository;
28 import org.sonar.ce.task.projectanalysis.metric.MetricRepository;
29 import org.sonar.ce.task.step.ComputationStep;
30
31 /**
32  * Compute the measure for the metric {@link CoreMetrics#PULL_REQUEST_FIXED_ISSUES_KEY} that contains the number of issues that would be
33  * fixed by the pull request on the target branch.
34  */
35 public class PullRequestFixedIssuesMeasureStep implements ComputationStep {
36
37   private final TreeRootHolder treeRootHolder;
38   private final MetricRepository metricRepository;
39   private final MeasureRepository measureRepository;
40   private final PullRequestFixedIssueRepository pullRequestFixedIssueRepository;
41   private final AnalysisMetadataHolder analysisMetadataHolder;
42
43   public PullRequestFixedIssuesMeasureStep(TreeRootHolder treeRootHolder, MetricRepository metricRepository,
44                                            MeasureRepository measureRepository,
45                                            PullRequestFixedIssueRepository pullRequestFixedIssueRepository,
46                                            AnalysisMetadataHolder analysisMetadataHolder) {
47     this.treeRootHolder = treeRootHolder;
48     this.metricRepository = metricRepository;
49     this.measureRepository = measureRepository;
50     this.pullRequestFixedIssueRepository = pullRequestFixedIssueRepository;
51     this.analysisMetadataHolder = analysisMetadataHolder;
52   }
53
54   @Override
55   public void execute(Context context) {
56     if (analysisMetadataHolder.isPullRequest()) {
57       int fixedIssuesCount = pullRequestFixedIssueRepository.getFixedIssues().size();
58       measureRepository.add(treeRootHolder.getRoot(), metricRepository.getByKey(CoreMetrics.PULL_REQUEST_FIXED_ISSUES_KEY),
59         Measure.newMeasureBuilder().create(fixedIssuesCount));
60     }
61   }
62
63   @Override
64   public String getDescription() {
65     return "Compute pull request fixed issues measure";
66   }
67 }