001 /* 002 * SonarQube, open source software quality management tool. 003 * Copyright (C) 2008-2014 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * SonarQube 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 * SonarQube 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 */ 020 package org.sonar.api.batch.sensor.test; 021 022 import org.sonar.api.batch.fs.InputFile; 023 import org.sonar.api.batch.measure.Metric; 024 import org.sonar.api.measures.CoreMetrics; 025 026 /** 027 * @since 5.0 028 */ 029 public interface Coverage { 030 031 public enum CoverageType { 032 UNIT(CoreMetrics.LINES_TO_COVER, CoreMetrics.UNCOVERED_LINES, CoreMetrics.COVERAGE_LINE_HITS_DATA, CoreMetrics.CONDITIONS_TO_COVER, CoreMetrics.UNCOVERED_CONDITIONS, 033 CoreMetrics.CONDITIONS_BY_LINE, CoreMetrics.COVERED_CONDITIONS_BY_LINE), 034 INTEGRATION(CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.IT_COVERAGE_LINE_HITS_DATA, CoreMetrics.IT_CONDITIONS_TO_COVER, 035 CoreMetrics.IT_UNCOVERED_CONDITIONS, CoreMetrics.IT_CONDITIONS_BY_LINE, CoreMetrics.IT_COVERED_CONDITIONS_BY_LINE), 036 OVERALL(CoreMetrics.OVERALL_LINES_TO_COVER, CoreMetrics.OVERALL_UNCOVERED_LINES, CoreMetrics.OVERALL_COVERAGE_LINE_HITS_DATA, CoreMetrics.OVERALL_CONDITIONS_TO_COVER, 037 CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, CoreMetrics.OVERALL_CONDITIONS_BY_LINE, CoreMetrics.OVERALL_COVERED_CONDITIONS_BY_LINE); 038 039 private Metric<Integer> linesToCover; 040 private Metric<Integer> uncoveredLines; 041 private Metric<String> lineHitsData; 042 private Metric<Integer> conditionsToCover; 043 private Metric<Integer> uncoveredConditions; 044 private Metric<String> conditionsByLine; 045 private Metric<String> coveredConditionsByLine; 046 047 private CoverageType(Metric<Integer> linesToCover, Metric<Integer> uncoveredLines, Metric<String> lineHitsData, Metric<Integer> conditionsToCover, 048 Metric<Integer> uncoveredConditions, Metric<String> conditionsByLine, Metric<String> coveredConditionsByLine) { 049 this.linesToCover = linesToCover; 050 this.uncoveredLines = uncoveredLines; 051 this.lineHitsData = lineHitsData; 052 this.conditionsToCover = conditionsToCover; 053 this.uncoveredConditions = uncoveredConditions; 054 this.conditionsByLine = conditionsByLine; 055 this.coveredConditionsByLine = coveredConditionsByLine; 056 } 057 058 public Metric<Integer> linesToCover() { 059 return linesToCover; 060 } 061 062 public Metric<Integer> uncoveredLines() { 063 return uncoveredLines; 064 } 065 066 public Metric<String> lineHitsData() { 067 return lineHitsData; 068 } 069 070 public Metric<Integer> conditionsToCover() { 071 return conditionsToCover; 072 } 073 074 public Metric<Integer> uncoveredConditions() { 075 return uncoveredConditions; 076 } 077 078 public Metric<String> conditionsByLine() { 079 return conditionsByLine; 080 } 081 082 public Metric<String> coveredConditionsByLine() { 083 return coveredConditionsByLine; 084 } 085 } 086 087 /** 088 * The file you are storing coverage on. 089 */ 090 Coverage onFile(InputFile inputFile); 091 092 Coverage ofType(CoverageType type); 093 094 Coverage lineHits(int line, int hits); 095 096 Coverage conditions(int line, int conditions, int coveredConditions); 097 098 /** 099 * Call this method only once when your are done with defining the test case coverage. 100 */ 101 void save(); 102 103 }