001/* 002 * SonarQube 003 * Copyright (C) 2009-2018 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}