001/*
002 * SonarQube
003 * Copyright (C) 2009-2017 SonarSource SA
004 * mailto:info AT sonarsource DOT com
005 *
006 * This program is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019 */
020package org.sonar.api.batch.sensor.coverage;
021
022import java.util.Collections;
023import java.util.LinkedHashSet;
024import java.util.Set;
025import org.sonar.api.measures.Metric;
026
027import static java.util.Arrays.asList;
028import static org.sonar.api.measures.CoreMetrics.CONDITIONS_BY_LINE;
029import static org.sonar.api.measures.CoreMetrics.CONDITIONS_TO_COVER;
030import static org.sonar.api.measures.CoreMetrics.COVERAGE_LINE_HITS_DATA;
031import static org.sonar.api.measures.CoreMetrics.COVERED_CONDITIONS_BY_LINE;
032import static org.sonar.api.measures.CoreMetrics.IT_CONDITIONS_BY_LINE;
033import static org.sonar.api.measures.CoreMetrics.IT_CONDITIONS_TO_COVER;
034import static org.sonar.api.measures.CoreMetrics.IT_COVERAGE_LINE_HITS_DATA;
035import static org.sonar.api.measures.CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE;
036import static org.sonar.api.measures.CoreMetrics.IT_LINES_TO_COVER;
037import static org.sonar.api.measures.CoreMetrics.IT_UNCOVERED_CONDITIONS;
038import static org.sonar.api.measures.CoreMetrics.IT_UNCOVERED_LINES;
039import static org.sonar.api.measures.CoreMetrics.LINES_TO_COVER;
040import static org.sonar.api.measures.CoreMetrics.OVERALL_CONDITIONS_BY_LINE;
041import static org.sonar.api.measures.CoreMetrics.OVERALL_CONDITIONS_TO_COVER;
042import static org.sonar.api.measures.CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA;
043import static org.sonar.api.measures.CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE;
044import static org.sonar.api.measures.CoreMetrics.OVERALL_LINES_TO_COVER;
045import static org.sonar.api.measures.CoreMetrics.OVERALL_UNCOVERED_CONDITIONS;
046import static org.sonar.api.measures.CoreMetrics.OVERALL_UNCOVERED_LINES;
047import static org.sonar.api.measures.CoreMetrics.UNCOVERED_CONDITIONS;
048import static org.sonar.api.measures.CoreMetrics.UNCOVERED_LINES;
049
050/**
051 * Different coverage categories.
052 * @since 5.2
053 *
054 * @deprecated since 6.2 SonarQube merge all coverage reports and don't keep track of different test category
055 */
056@Deprecated
057public enum CoverageType {
058
059  UNIT(LINES_TO_COVER, UNCOVERED_LINES, COVERAGE_LINE_HITS_DATA, CONDITIONS_TO_COVER, UNCOVERED_CONDITIONS, COVERED_CONDITIONS_BY_LINE, CONDITIONS_BY_LINE),
060  IT(IT_LINES_TO_COVER, IT_UNCOVERED_LINES, IT_COVERAGE_LINE_HITS_DATA, IT_CONDITIONS_TO_COVER, IT_UNCOVERED_CONDITIONS, IT_COVERED_CONDITIONS_BY_LINE, IT_CONDITIONS_BY_LINE),
061  OVERALL(OVERALL_LINES_TO_COVER, OVERALL_UNCOVERED_LINES, OVERALL_COVERAGE_LINE_HITS_DATA, OVERALL_CONDITIONS_TO_COVER, OVERALL_UNCOVERED_CONDITIONS,
062    OVERALL_COVERED_CONDITIONS_BY_LINE, OVERALL_CONDITIONS_BY_LINE);
063
064  private final Metric linesToCover;
065  private final Metric uncoveredLines;
066  private final Metric lineHitsData;
067  private final Metric conditionsToCover;
068  private final Metric uncoveredConditions;
069  private final Metric coveredConditionsByLine;
070  private final Metric conditionsByLine;
071  private final Set<Metric> all;
072
073  CoverageType(Metric linesToCover, Metric uncoveredLines, Metric lineHitsData, Metric conditionsToCover, Metric uncoveredConditions, Metric coveredConditionsByLine,
074    Metric conditionsByLine) {
075    this.linesToCover = linesToCover;
076    this.uncoveredLines = uncoveredLines;
077    this.lineHitsData = lineHitsData;
078    this.conditionsToCover = conditionsToCover;
079    this.uncoveredConditions = uncoveredConditions;
080    this.coveredConditionsByLine = coveredConditionsByLine;
081    this.conditionsByLine = conditionsByLine;
082    this.all = Collections.unmodifiableSet(new LinkedHashSet<>(
083      asList(linesToCover, uncoveredLines, lineHitsData, conditionsToCover, uncoveredConditions, coveredConditionsByLine, conditionsByLine)));
084  }
085
086  public Set<Metric> allMetrics() {
087    return all;
088  }
089
090  public Metric linesToCover() {
091    return linesToCover;
092  }
093
094  public Metric uncoveredLines() {
095    return uncoveredLines;
096  }
097
098  public Metric lineHitsData() {
099    return lineHitsData;
100  }
101
102  public Metric conditionsToCover() {
103    return conditionsToCover;
104  }
105
106  public Metric uncoveredConditions() {
107    return uncoveredConditions;
108  }
109
110  public Metric coveredConditionsByLine() {
111    return coveredConditionsByLine;
112  }
113
114  public Metric conditionsByLine() {
115    return conditionsByLine;
116  }
117
118}