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; 021 022 /** 023 * Barriers are used to define the order of execution of Decorators. Decorators must be annotated with the following : 024 * <p/> 025 * <ul> 026 * <li>{@code @DependsUpon(BARRIER)} in order to be executed after BARRIER</li> 027 * <li>{@code @DependedUpon(BARRIER)} in order to be executed before BARRIER</li> 028 * </ul> 029 * 030 * @since 2.3 031 */ 032 public interface DecoratorBarriers { 033 034 /** 035 * This barrier is before {@link #ISSUES_TRACKED}. The decorators that register issues must be declared before this 036 * barrier : {@code @DependedUpon(value=DecoratorBarriers.ISSUES_ADDED)} 037 * 038 * @since 3.6 039 */ 040 String ISSUES_ADDED = "END_OF_VIOLATIONS_GENERATION"; 041 042 /** 043 * This barrier is after {@link #ISSUES_ADDED}. The decorators that need to list all issues must be declared 044 * after this barrier : {@code @DependsUpon(value=DecoratorBarriers.ISSUES_TRACKED)} 045 * 046 * @since 3.6 047 */ 048 String ISSUES_TRACKED = "END_OF_VIOLATION_TRACKING"; 049 050 051 /** 052 * @deprecated in 3.6. Not required anymore. 053 */ 054 @Deprecated 055 String START_VIOLATIONS_GENERATION = "START_VIOLATIONS_GENERATION"; 056 057 /** 058 * This barrier is used by a decorator in order to : 059 * <ul> 060 * <li>be executed after all the decorators which generate violations : 061 * {@code @DependsUpon(value=DecoratorBarriers.END_OF_VIOLATIONS_GENERATION}</li> 062 * <li>declare that it generates violations : {@code @DependedUpon(value=DecoratorBarriers.END_OF_VIOLATIONS_GENERATION}</li> 063 * </ul> 064 * 065 * @deprecated in 3.6. Replaced by {@link #ISSUES_ADDED} 066 */ 067 @Deprecated 068 String END_OF_VIOLATIONS_GENERATION = "END_OF_VIOLATIONS_GENERATION"; 069 070 /** 071 * Extensions which call the method {@code Violation#setSwitchedOff} must be executed before this barrier 072 * ({@code @DependedUpon(value=DecoratorBarriers.VIOLATION_TRACKING}) 073 * <p/> 074 * This barrier is after {@code END_OF_VIOLATIONS_GENERATION} 075 * 076 * @since 2.8 077 * @deprecated in 3.6. Not required anymore. 078 */ 079 @Deprecated 080 String START_VIOLATION_TRACKING = "START_VIOLATION_TRACKING"; 081 082 /** 083 * This barrier is after {@code END_OF_VIOLATIONS_GENERATION} and {@code START_VIOLATION_TRACKING}. 084 * Decorators executed after this barrier ({@code @DependsUpon(value=DecoratorBarriers.END_OF_VIOLATION_TRACKING}) 085 * can benefit from all the features of violation tracking : 086 * <ul> 087 * <li>{@code Violation#getCreatedAt()}</li> 088 * <li>{@code Violation#isSwitchedOff()}, usually to know if a violation has been flagged as false-positives in UI</li> 089 * </ul> 090 * 091 * @since 2.8 092 * @deprecated in 3.6. Replaced by {@link #ISSUES_TRACKED} 093 */ 094 @Deprecated 095 String END_OF_VIOLATION_TRACKING = "END_OF_VIOLATION_TRACKING"; 096 097 /** 098 * @since 2.13 099 * @deprecated in 3.6. Issues are persisted at the end of analysis. 100 */ 101 @Deprecated 102 String START_VIOLATION_PERSISTENCE = "START_VIOLATION_PERSISTENCE"; 103 104 /** 105 * @since 2.13 106 * @deprecated in 3.6. Issues are persisted at the end of analysis 107 */ 108 @Deprecated 109 String END_OF_VIOLATION_PERSISTENCE = "END_OF_VIOLATION_PERSISTENCE"; 110 111 /** 112 * Any kinds of time machine data are calculated before this barrier. Decorators executed after this barrier can use 113 * Measure#getVariationValue() and Measure#getTendency() methods. 114 * 115 * @since 2.5 116 */ 117 String END_OF_TIME_MACHINE = "END_OF_TIME_MACHINE"; 118 }