]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7612 Move new Sensor API out of @Beta
authorJulien HENRY <julien.henry@sonarsource.com>
Tue, 10 May 2016 16:12:35 +0000 (18:12 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 12 May 2016 06:49:09 +0000 (08:49 +0200)
49 files changed:
plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/extensions/XooPostJobTest.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCpdMapping.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/BuildBreaker.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/CheckProject.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/CpdMapping.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/DecoratorBarriers.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/DecoratorContext.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/Initializer.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/PostJob.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/Sensor.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/SensorContext.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/SonarIndex.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/PostJob.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/PostJobContext.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/PostJobDescriptor.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/internal/DefaultPostJobDescriptor.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/issue/Issue.java [deleted file]
sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/issue/PostJobIssue.java [new file with mode: 0644]
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/Sensor.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorContext.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/SensorDescriptor.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/coverage/CoverageType.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/coverage/NewCoverage.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/cpd/NewCpdTokens.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/highlighting/NewHighlighting.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/highlighting/TypeOfText.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/Issue.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/IssueLocation.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewIssue.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/issue/NewIssueLocation.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/measure/Measure.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/measure/NewMeasure.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/symbol/NewSymbol.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/sensor/symbol/NewSymbolTable.java
sonar-plugin-api/src/main/java/org/sonar/api/component/Module.java
sonar-plugin-api/src/main/java/org/sonar/api/component/ResourcePerspectives.java
sonar-plugin-api/src/main/java/org/sonar/api/component/RubyComponentService.java
sonar-plugin-api/src/main/java/org/sonar/api/component/SourceFile.java
sonar-plugin-api/src/main/java/org/sonar/api/component/mock/MockSourceFile.java
sonar-plugin-api/src/main/java/org/sonar/api/source/Highlightable.java
sonar-plugin-api/src/main/java/org/sonar/api/source/Symbol.java
sonar-plugin-api/src/main/java/org/sonar/api/source/Symbolizable.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/StaxParser.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/XmlParserException.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/XpathParser.java
sonar-scanner-engine/src/main/java/org/sonar/batch/postjob/DefaultPostJobContext.java
sonar-scanner-engine/src/main/java/org/sonar/batch/postjob/PostJobOptimizer.java
sonar-scanner-engine/src/test/java/org/sonar/batch/postjob/DefaultPostJobContextTest.java
sonar-scanner-engine/src/test/java/org/sonar/batch/postjob/PostJobOptimizerTest.java

index 82112ac2709586441e123c71aaea81a85dc986d3..66b9c5e227f50c79ee803a361ba5a57c173eb944 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.sonar.api.batch.postjob.PostJobContext;
 import org.sonar.api.batch.postjob.internal.DefaultPostJobDescriptor;
-import org.sonar.api.batch.postjob.issue.Issue;
+import org.sonar.api.batch.postjob.issue.PostJobIssue;
 import org.sonar.api.utils.log.LogTester;
 
 import java.util.Arrays;
@@ -41,8 +41,8 @@ public class XooPostJobTest {
   public void increaseCoverage() {
     new XooPostJob().describe(new DefaultPostJobDescriptor());
     PostJobContext context = mock(PostJobContext.class);
-    when(context.issues()).thenReturn(Arrays.<Issue>asList());
-    when(context.resolvedIssues()).thenReturn(Arrays.<Issue>asList());
+    when(context.issues()).thenReturn(Arrays.<PostJobIssue>asList());
+    when(context.resolvedIssues()).thenReturn(Arrays.<PostJobIssue>asList());
     new XooPostJob().execute(context);
     assertThat(logTester.logs()).contains("Resolved issues: 0", "Open issues: 0");
   }
index 248aeee547933b17d40bba282d82a064d9efd10d..d644d00d5e388ccf99468f40263baa2775f66514 100644 (file)
  */
 package org.sonar.api.batch;
 
-import org.sonar.api.resources.Resource;
-
 import java.util.List;
+import org.sonar.api.resources.Resource;
 
 /**
  * A pre-implementation of the CpdMapping extension point
  *
  * @since 1.10
+ * @deprecated since 5.6
  */
+@Deprecated
 public abstract class AbstractCpdMapping implements CpdMapping {
 
   /**
index bc989e83ce43216d419b3051963a0f0fbb77e6db..c8296c7f3b7299f1fa03a7b8bc774ef7cb10e2de 100644 (file)
@@ -23,7 +23,9 @@ import org.sonar.api.utils.SonarException;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6
  */
+@Deprecated
 @Phase(name = Phase.Name.POST)
 public abstract class BuildBreaker implements PostJob {
 
index 37e39a0555c52c99340df8054172cb7c109eabfe..b3d12907e47473db0a4d253c3a8cd91648bb5457 100644 (file)
@@ -23,7 +23,9 @@ import org.sonar.api.resources.Project;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6
  */
+@Deprecated
 public interface CheckProject {
 
   boolean shouldExecuteOnProject(Project project);
index 33fca518ee90a1f686fc58c305aa8a33c0a34c00..a39c405dcec27e91aa2cbff7c46eb5a8485d3ea5 100644 (file)
@@ -29,7 +29,7 @@ import org.sonar.api.resources.Resource;
 /**
  * Implement this extension to get Copy/Paste detection for your language.
  * @since 1.10
- * @deprecated since 5.5
+ * @deprecated since 5.5 use {@link SensorContext#newCpdTokens()}
  */
 @BatchSide
 @ExtensionPoint
index d6f3f10f26ecc48329e5473d530108cbe3c7f006..e05bbb2a9db626162d260a4a358cd5b59b1b4eab 100644 (file)
@@ -28,7 +28,9 @@ package org.sonar.api.batch;
  * </ul>
  *
  * @since 2.3
+ * @deprecated since 5.6 no more used since Decorators are deprecated
  */
+@Deprecated
 public interface DecoratorBarriers {
 
   /**
@@ -47,7 +49,6 @@ public interface DecoratorBarriers {
    */
   String ISSUES_TRACKED = "END_OF_VIOLATION_TRACKING";
 
-
   /**
    * @deprecated in 3.6. Not required anymore.
    */
index 351f217a329210b5a90ed5442fd8331d2f64fa89..2da3f35e3ba723a2eb3669a3a78a1aa4b640ecde 100644 (file)
@@ -30,7 +30,9 @@ import org.sonar.api.resources.Resource;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6 no more used since Decorator is deprecated
  */
+@Deprecated
 public interface DecoratorContext {
 
   /**
index a9bfa8283900debfe37caa696235469447dbea35..66e2f9f27db36f0d2fde0538fb16241c68993644 100644 (file)
@@ -26,12 +26,8 @@ import org.sonar.api.resources.Project;
  * <p>
  * Initializer can execute external tool (like a Maven plugin), change project configuration. For example CoberturaMavenInitializer invokes
  * the Codehaus Cobertura Mojo and sets path to Cobertura report according to Maven POM.
- * 
- * 
  * <p>
  * Initializers are executed first and once during project analysis.
- * 
- * 
  * @since 2.6
  */
 @BatchSide
index 6ba8298c70efd9143d8d848d90194c6ed30ce34c..5605a34c30512d0f02432377ad197c2e1171d820 100644 (file)
@@ -29,7 +29,9 @@ import org.sonar.api.resources.Project;
  * it is an asynchronous processing on server side.
  *
  * @since 1.10
+ * @deprecated since 5.6 use {@link org.sonar.api.batch.postjob.PostJob}
  */
+@Deprecated
 @BatchSide
 @ExtensionPoint
 public interface PostJob {
index 72cb369f3d306849250df5fa2645d1eaef373893..ebe26fdb6d9f635f3db9adc3b5bb48cd5cb35279 100644 (file)
@@ -40,7 +40,9 @@ import org.sonar.api.resources.Project;
  * 
  *
  * @since 1.10
+ * @deprecated since 5.6 use {@link org.sonar.api.batch.sensor.Sensor}
  */
+@Deprecated
 @BatchSide
 @ExtensionPoint
 public interface Sensor extends CheckProject {
index d9573c82deba59baa0c44a5418f2323ccc93618f..b9775f0fcd8d6a2a91f54032ed7745c92fd552c1 100644 (file)
@@ -32,7 +32,9 @@ import org.sonar.api.resources.Resource;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6 use {@link org.sonar.api.batch.sensor.Sensor}
  */
+@Deprecated
 public interface SensorContext extends org.sonar.api.batch.sensor.SensorContext {
 
   /**
index cd3a9947013b52f856f13334b61e771e31739786..404bc29ca1e0238356ebd38b7e930fce651c280c 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.api.batch;
 import java.util.Collection;
 import javax.annotation.CheckForNull;
 import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.sensor.SensorContext;
 import org.sonar.api.design.Dependency;
 import org.sonar.api.measures.Measure;
 import org.sonar.api.measures.MeasuresFilter;
index 25a060733b186ed7f4e38c1efdfb144fc61e2e66..58510ad3ea1b763f3c033a7801e3c95193a95d94 100644 (file)
  */
 package org.sonar.api.batch.postjob;
 
-import com.google.common.annotations.Beta;
-import org.sonar.api.batch.BatchSide;
 import org.sonar.api.ExtensionPoint;
+import org.sonar.api.batch.BatchSide;
 
 /**
- * PostJobs are executed at the very end of batch analysis. A PostJob can't do any modification
+ * PostJobs are executed at the very end of scanner analysis. A PostJob can't do any modification
  * since everything is already computed (issues, measures,...). <br>
- * WANRING: Do not rely on the fact that analysis results are available on server side using WS since this is an
+ * WARNING: Do not rely on the fact that analysis results are available on server side when using WS since this is an
  * asynchronous process to compute data on server side in 5.x series.
  *
  * @since 5.2
  */
-@Beta
 @BatchSide
 @ExtensionPoint
 public interface PostJob {
@@ -42,7 +40,7 @@ public interface PostJob {
   void describe(PostJobDescriptor descriptor);
 
   /**
-   * The actual sensor code.
+   * Called at the end of the analysis.
    */
   void execute(PostJobContext context);
 
index 43d0c7c97139fc141445e0bfe260c370f469ac92..ed9706309bb6f329928bb45bffc2260cc5dacfc8 100644 (file)
  */
 package org.sonar.api.batch.postjob;
 
-import com.google.common.annotations.Beta;
-import org.sonar.api.batch.AnalysisMode;
-import org.sonar.api.batch.postjob.issue.Issue;
+import org.sonar.api.batch.postjob.issue.PostJobIssue;
 import org.sonar.api.config.Settings;
 
 /**
  * See {@link PostJob#execute(PostJobContext)}
  * @since 5.2
  */
-@Beta
 public interface PostJobContext {
 
   /**
@@ -36,21 +33,16 @@ public interface PostJobContext {
    */
   Settings settings();
 
-  /**
-   * Get analysis mode.
-   */
-  AnalysisMode analysisMode();
-
-  // ----------- ISSUES --------------
+  // ----------- Only available in preview mode --------------
 
   /**
    * All the unresolved issues of the project, including the issues reported by end-users.
    */
-  Iterable<Issue> issues();
+  Iterable<PostJobIssue> issues();
 
   /**
    * All the issues of this project that have been marked as resolved during this scan
    */
-  Iterable<Issue> resolvedIssues();
+  Iterable<PostJobIssue> resolvedIssues();
 
 }
index 081b0d2779f9268e9eb5c8ac9c1e6e25541ba9ad..7e7a1693da532adf7d78df4657e42281ae020244 100644 (file)
  */
 package org.sonar.api.batch.postjob;
 
-import com.google.common.annotations.Beta;
-
 /**
  * Describe what a {@link PostJob} is doing. Information may be used by the platform
  * to log interesting information or perform some optimization.
  * See {@link PostJob#describe(PostJobDescriptor)}
  * @since 5.2
  */
-@Beta
 public interface PostJobDescriptor {
 
   /**
@@ -47,9 +44,4 @@ public interface PostJobDescriptor {
    */
   PostJobDescriptor requireProperties(String... propertyKeys);
 
-  /**
-   * Should this PostJob be disabled in issues mode. Default is to run all PostJobs in preview mode.
-   */
-  PostJobDescriptor disabledInIssues();
-
 }
index 8cf5a578deba5837fe9740fb317f41148e84659f..ce277761e999d4e27b08ef75c29502603d1aec8c 100644 (file)
  */
 package org.sonar.api.batch.postjob.internal;
 
-import org.sonar.api.batch.postjob.PostJobDescriptor;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.sonar.api.batch.postjob.PostJobDescriptor;
 
 public class DefaultPostJobDescriptor implements PostJobDescriptor {
 
   private String name;
   private String[] properties = new String[0];
-  private boolean disabledInIssues = false;
 
   public String name() {
     return name;
@@ -38,10 +36,6 @@ public class DefaultPostJobDescriptor implements PostJobDescriptor {
     return Arrays.asList(properties);
   }
 
-  public boolean isDisabledInIssues() {
-    return disabledInIssues;
-  }
-
   @Override
   public DefaultPostJobDescriptor name(String name) {
     this.name = name;
@@ -59,10 +53,4 @@ public class DefaultPostJobDescriptor implements PostJobDescriptor {
     return this;
   }
 
-  @Override
-  public DefaultPostJobDescriptor disabledInIssues() {
-    this.disabledInIssues = true;
-    return this;
-  }
-
 }
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/issue/Issue.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/issue/Issue.java
deleted file mode 100644 (file)
index ec514a5..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2016 SonarSource SA
- * mailto:contact AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.api.batch.postjob.issue;
-
-import com.google.common.annotations.Beta;
-import javax.annotation.CheckForNull;
-import org.sonar.api.batch.fs.InputComponent;
-import org.sonar.api.batch.rule.Severity;
-import org.sonar.api.rule.RuleKey;
-
-/**
- * Represents an issue state at the end of the batch analysis. Only available after local issue tracking in preview mode.
- *
- * @since 5.2
- */
-@Beta
-public interface Issue {
-
-  /**
-   * Key of the issue.
-   */
-  String key();
-
-  /**
-   * The {@link RuleKey} of this issue.
-   */
-  RuleKey ruleKey();
-
-  /**
-   * Component key like foo:src/Foo.php
-   */
-  String componentKey();
-
-  /**
-   * The {@link InputComponent} this issue belongs to. Returns null if component was deleted (for resolved issues).
-   */
-  @CheckForNull
-  InputComponent inputComponent();
-
-  /**
-   * Line of the issue. Null for global issues and issues on directories. Can also be null
-   * for files (issue global to the file).
-   */
-  @CheckForNull
-  Integer line();
-
-  /**
-   * Effort to fix the issue. Used by technical debt model.
-   */
-  @CheckForNull
-  Double effortToFix();
-
-  /**
-   * Message of the issue.
-   */
-  @CheckForNull
-  String message();
-
-  /**
-   * Severity.
-   */
-  Severity severity();
-
-  /**
-   * If the issue a new one.
-   */
-  boolean isNew();
-
-}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/issue/PostJobIssue.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/postjob/issue/PostJobIssue.java
new file mode 100644 (file)
index 0000000..553e128
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.api.batch.postjob.issue;
+
+import javax.annotation.CheckForNull;
+import org.sonar.api.batch.fs.InputComponent;
+import org.sonar.api.batch.rule.Severity;
+import org.sonar.api.rule.RuleKey;
+
+/**
+ * Represents an issue state at the end of the batch analysis. Some attributes are only available in preview/issues mode.
+ *
+ * @since 5.2
+ */
+public interface PostJobIssue {
+
+  /**
+   * Key of the issue.
+   */
+  String key();
+
+  /**
+   * The {@link RuleKey} of this issue.
+   */
+  RuleKey ruleKey();
+
+  /**
+   * Component key like foo:src/Foo.php
+   */
+  String componentKey();
+
+  /**
+   * The {@link InputComponent} this issue belongs to. Returns null if component was deleted (for resolved issues).
+   */
+  @CheckForNull
+  InputComponent inputComponent();
+
+  /**
+   * Line of the issue. Null for global issues and issues on directories. Can also be null
+   * for files (issue global to the file).
+   */
+  @CheckForNull
+  Integer line();
+
+  /**
+   * Message of the issue.
+   */
+  @CheckForNull
+  String message();
+
+  /**
+   * Severity.  Only accurate in preview/issues mode.
+   */
+  Severity severity();
+
+  /**
+   * If the issue a new one. Only available in preview/issues mode.
+   */
+  boolean isNew();
+
+}
index 1509e58fc5cfbdb8287498d20f22deca42309582..e4cc8e617447a3a91268678b1bfa50cd663838bf 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.ExtensionPoint;
 import org.sonar.api.batch.BatchSide;
 
@@ -27,15 +26,10 @@ import org.sonar.api.batch.BatchSide;
  * <p>
  * A sensor is invoked once for each module of a project, starting from leaf modules. The sensor can parse a flat file, connect to a web server... Sensors are
  * used to add measure and issues at file level.
- * 
- *
  * <p>
  * For example the Cobertura Sensor parses Cobertura report and saves the first-level of measures on files.
- * 
- *
  * @since 5.1
  */
-@Beta
 @BatchSide
 @ExtensionPoint
 public interface Sensor {
index 044f5f36c160ae97a895d66679639c75935947d4..bb1aa0fd92217c3095935ac87e88c7aa6eaf406d 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor;
 
-import com.google.common.annotations.Beta;
 import java.io.Serializable;
 import org.sonar.api.batch.fs.FileSystem;
 import org.sonar.api.batch.fs.InputModule;
@@ -41,7 +40,6 @@ import org.sonar.api.utils.Version;
  * In order to write unit tests you can use {@link SensorContextTester}
  * @since 5.1
  */
-@Beta
 public interface SensorContext {
 
   /**
index 9000a81432bfe2d4d9b0a3335ada1b2f41ea7e6b..4f36c763964e794539d110df7add17e0056895d6 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
 
 /**
@@ -28,7 +27,6 @@ import org.sonar.api.batch.fs.InputFile;
  * See {@link Sensor#describe(SensorDescriptor)}
  * @since 5.1
  */
-@Beta
 public interface SensorDescriptor {
 
   /**
index cdab75f44c43a2c7042803e9a3f2c6f869cc7643..cdde991667d01195a4bddcb1a08ad26e73fba0a0 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.coverage;
 
-import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableSet;
 import java.util.Set;
 import org.sonar.api.measures.Metric;
@@ -50,7 +49,6 @@ import static org.sonar.api.measures.CoreMetrics.UNCOVERED_LINES;
  * Different coverage categories.
  * @since 5.2
  */
-@Beta
 public enum CoverageType {
 
   UNIT(LINES_TO_COVER, UNCOVERED_LINES, COVERAGE_LINE_HITS_DATA, CONDITIONS_TO_COVER, UNCOVERED_CONDITIONS, COVERED_CONDITIONS_BY_LINE, CONDITIONS_BY_LINE),
index 2ef1be16a2aa4ded16f7a6cba870bdea7732edc9..c9e9024072ab158f530150f0574857ecacb3ef0e 100644 (file)
  */
 package org.sonar.api.batch.sensor.coverage;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
 
 /**
  * This builder is used to define code coverage by tests of a given type (UT/IT/Overall) on files.
  * @since 5.2
  */
-@Beta
 public interface NewCoverage {
 
   /**
index e2a48d1a7241c2afda53331e2c2331d8898d27a7..1a2785ac8fb0a121818a7b2ca63bd7e2f3185e23 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.cpd;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.TextRange;
 
@@ -27,7 +26,6 @@ import org.sonar.api.batch.fs.TextRange;
  * This builder is used to define tokens used by CPD algorithm on files.
  * @since 5.5
  */
-@Beta
 public interface NewCpdTokens {
 
   /**
index 6f59fad4bad8387aaa6885f4b566b43bcf10613b..577aefd911e130bb8398a5acb8093797f425ccd7 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.highlighting;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.TextRange;
 
@@ -27,7 +26,6 @@ import org.sonar.api.batch.fs.TextRange;
  * This builder is used to define syntax highlighting (aka code coloration) on files.
  * @since 5.1
  */
-@Beta
 public interface NewHighlighting {
 
   /**
index 4065eff5789befa3c3356b5f3ca5fefb20af3e02..559e44e61a6edeb44af6f7f443595f0d34a017d8 100644 (file)
  */
 package org.sonar.api.batch.sensor.highlighting;
 
-import com.google.common.annotations.Beta;
-
 /**
  * Experimental, do not use.
  * <br>
  * Possible types for highlighting code. See sonar-colorizer.css
  * @since 5.1
  */
-@Beta
 public enum TypeOfText {
   ANNOTATION("a"),
   CONSTANT("c"),
index 1f2753907880792b9f703bbb71191d87f0cb5d96..fb7cfc87b4033426d13bd0c1be79eda10f33c8c4 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.issue;
 
-import com.google.common.annotations.Beta;
 import java.util.List;
 import javax.annotation.CheckForNull;
 import org.sonar.api.batch.rule.Severity;
@@ -31,7 +30,6 @@ import org.sonar.api.rule.RuleKey;
  *
  * @since 5.1
  */
-@Beta
 public interface Issue {
 
   interface Flow {
index 37d32cbebf8e6781d0b4eabe6b9dc845e3bffcc0..2dade89c6582ca87cc3a882f981a8724315909da 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.issue;
 
-import com.google.common.annotations.Beta;
 import javax.annotation.CheckForNull;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.fs.TextRange;
@@ -29,7 +28,6 @@ import org.sonar.api.batch.fs.TextRange;
  *
  * @since 5.2
  */
-@Beta
 public interface IssueLocation {
 
   /**
index 2dbf02b31d104ef1794f75b002144d21e190bcbf..f428d8c6aa1990168c9c07c449c7424aa0ce2a28 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.issue;
 
-import com.google.common.annotations.Beta;
 import javax.annotation.Nullable;
 import org.sonar.api.batch.rule.Severity;
 import org.sonar.api.batch.sensor.Sensor;
@@ -30,7 +29,6 @@ import org.sonar.api.rule.RuleKey;
  *
  * @since 5.1
  */
-@Beta
 public interface NewIssue {
 
   /**
index f4fe17f13acb49ad064d1e6ef46df6c3c14c399e..ea62885fbc0fa062963aff543eef2ccb476cdf85 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.issue;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.TextRange;
@@ -29,7 +28,6 @@ import org.sonar.api.batch.fs.TextRange;
  *
  * @since 5.2
  */
-@Beta
 public interface NewIssueLocation {
 
   /**
index 40b479f44851d9f89dee8db37267468215367186..87b37b15e0890f96b16e75b97744fa60cc65545a 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.measure;
 
-import com.google.common.annotations.Beta;
 import java.io.Serializable;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.measure.Metric;
@@ -29,7 +28,6 @@ import org.sonar.api.batch.measure.Metric;
  * Should not be implemented by client.
  * @since 5.1
  */
-@Beta
 public interface Measure<G extends Serializable> {
 
   /**
index fc3dc68201eee37a764e0e39465da9a02fed6962..00b3a17a1bed900a2933c2f4a7f262042fad0e4e 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.measure;
 
-import com.google.common.annotations.Beta;
 import java.io.Serializable;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.measure.Metric;
@@ -29,7 +28,6 @@ import org.sonar.api.batch.measure.Metric;
  * Should not be implemented by client.
  * @since 5.2
  */
-@Beta
 public interface NewMeasure<G extends Serializable> {
 
   /**
index 46368ed5ee1f2aa6008a6afd334189bf831e9ce8..06c2ba8529d3aca272313e4b149b96c736697f9f 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.symbol;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.TextRange;
 
@@ -27,7 +26,6 @@ import org.sonar.api.batch.fs.TextRange;
  * This builder is used to define symbol references on files.
  * @since 5.6
  */
-@Beta
 public interface NewSymbol {
 
   /**
index 1e8487c557dd8a2ad63d5ecf7d2f0d180e75017b..874261a6c6f754669e6120c10012bc4f2453e8b3 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch.sensor.symbol;
 
-import com.google.common.annotations.Beta;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.TextRange;
 
@@ -27,7 +26,6 @@ import org.sonar.api.batch.fs.TextRange;
  * This builder is used to define symbol references on files.
  * @since 5.6
  */
-@Beta
 public interface NewSymbolTable {
 
   /**
index c2aeab148b13d29a4fce23c8f32fcdc1f08c1dc7..3ab3f6d177667853ca1c7f5bec46a0b7c0ecb34f 100644 (file)
  */
 package org.sonar.api.component;
 
+/**
+ * @deprecated since 5.6
+ */
+@Deprecated
 public interface Module extends Component {
   String getDescription();
 
index 76cb7cd3d048545ae7b433c640922b09779d2d18..858f5b9e7fd32f15a4dc3a7a00f14206abc859a3 100644 (file)
@@ -22,41 +22,14 @@ package org.sonar.api.component;
 import javax.annotation.CheckForNull;
 import org.sonar.api.batch.fs.InputFile;
 import org.sonar.api.batch.fs.InputPath;
-import org.sonar.api.issue.Issuable;
+import org.sonar.api.batch.sensor.SensorContext;
 import org.sonar.api.resources.Resource;
-import org.sonar.api.source.Highlightable;
-import org.sonar.api.source.Symbolizable;
-import org.sonar.api.test.TestPlan;
-import org.sonar.api.test.Testable;
 
 /**
- * Use this component to create perspective from resources or {@link InputPath}
- * Only on batch-side.
- * 
- * <pre>
- * public class MySensor implements Sensor {
- *   private final ResourcePerspectives perspectives;
- *
- *   public MySensor(ResourcePerspectives perspectives) {
- *     this.perspectives = perspectives;
- *   }
- *   
- *   public void analyse(Project module, SensorContext context) {
- *      // Get some Resource or InputFile/InputPath
- *      Highlightable highlightable = perspectives.as(Highlightable.class, inputPath);
- *      if (highlightable != null) {
- *        ...
- *      }
- *   }
- * }
- * </pre>
- * @see Issuable
- * @see Highlightable
- * @see Symbolizable
- * @see Testable
- * @see TestPlan
  * @since 3.5
+ * @deprecated since 5.6 all features are available on {@link SensorContext}
  */
+@Deprecated
 public interface ResourcePerspectives {
 
   @CheckForNull
index 901290d57b47805d9afa0199734ce7f6220da192..0f4f3e2ca5b698ef7b9a4ea67fb405d2b3c021c3 100644 (file)
  */
 package org.sonar.api.component;
 
-import org.sonar.api.server.ServerSide;
-
 import javax.annotation.CheckForNull;
+import org.sonar.api.server.ServerSide;
 
 /**
  * @since 3.6
+ * @deprecated since 5.6
  */
+@Deprecated
 @ServerSide
 public interface RubyComponentService {
 
index bfc25f1d78656c789885b60a52c3f70ccf9b996a..76cb7f0883ac8a4f5797f2baf56a6c7de19e53ae 100644 (file)
@@ -19,5 +19,9 @@
  */
 package org.sonar.api.component;
 
+/**
+ * @deprecated since 5.6
+ */
+@Deprecated
 public interface SourceFile extends Component {
 }
index 8ee9b16a5d90ff1b77d138d8cb3db58e2926373f..e169ddc6524e3173c39b5d8620b661e1f47fc5a4 100644 (file)
@@ -21,6 +21,10 @@ package org.sonar.api.component.mock;
 
 import org.sonar.api.component.SourceFile;
 
+/**
+ * @deprecated since 5.6
+ */
+@Deprecated
 public class MockSourceFile implements SourceFile {
   private String key;
   private String path;
index 267fd082a8b7e02cf78e0ce3430df35da5ef41fb..4230b2ccdeeed3fe6a24378c8e7ccc4bebe6e65c 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.api.source;
 
+import org.sonar.api.batch.sensor.SensorContext;
 import org.sonar.api.component.Perspective;
 import org.sonar.api.component.ResourcePerspectives;
 
@@ -26,7 +27,9 @@ import org.sonar.api.component.ResourcePerspectives;
  * Use this perspective to save syntax highlighting on files.
  * See {@link ResourcePerspectives}.
  * @since 3.6
+ * @deprecated since 5.6 use {@link SensorContext#newHighlighting()}
  */
+@Deprecated
 public interface Highlightable extends Perspective {
 
   interface HighlightingBuilder {
index c639e022e0ef0faa71850a12d871039f0ca53713..fac2b3e76f9e92ac3d60fa2ff506831a2b497be2 100644 (file)
  */
 package org.sonar.api.source;
 
+import org.sonar.api.batch.sensor.SensorContext;
+
+/**
+ * @deprecated since 5.6 use {@link SensorContext#newSymbolTable()}
+ */
+@Deprecated
 public interface Symbol {
 
   /**
index 1e40f26a23ce022c3b073d27dd5b5840754ad4ba..98177598ef1a9c366c007fa07592fed23bb320f2 100644 (file)
@@ -20,6 +20,7 @@
 package org.sonar.api.source;
 
 import java.util.List;
+import org.sonar.api.batch.sensor.SensorContext;
 import org.sonar.api.component.Perspective;
 import org.sonar.api.component.ResourcePerspectives;
 
@@ -27,7 +28,9 @@ import org.sonar.api.component.ResourcePerspectives;
  * Use this perspective to save symbol references on files.
  * See {@link ResourcePerspectives}.
  * @since 3.6
+ * @deprecated since 5.6 use {@link SensorContext#newSymbolTable()}
  */
+@Deprecated
 public interface Symbolizable extends Perspective {
 
   interface SymbolTableBuilder {
index 2a75d72bb4c6316e44a3b3fc213e19f7cf99f8e3..0b7eb907b85b553601257a76123aa45de27ec03b 100644 (file)
@@ -37,7 +37,9 @@ import org.codehaus.staxmate.in.SMHierarchicCursor;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6 plugins should use their own dependencies
  */
+@Deprecated
 public class StaxParser {
 
   private SMInputFactory inf;
@@ -77,7 +79,7 @@ public class StaxParser {
   }
 
   public void parse(File xmlFile) throws XMLStreamException {
-    FileInputStream input=null;
+    FileInputStream input = null;
     try {
       input = new FileInputStream(xmlFile);
       parse(input);
@@ -123,7 +125,7 @@ public class StaxParser {
       if (StringUtils.startsWithIgnoreCase(undeclaredEntity, "u") && undeclaredEntity.length() == 5) {
         int unicodeCharHexValue = Integer.parseInt(undeclaredEntity.substring(1), 16);
         if (Character.isDefined(unicodeCharHexValue)) {
-          undeclaredEntity = new String(new char[]{(char) unicodeCharHexValue});
+          undeclaredEntity = new String(new char[] {(char) unicodeCharHexValue});
         }
       }
       return undeclaredEntity;
index 4737039a0df9d6d740ce008ce94c54200e366140..cd88d5bf6de8bde861140cec61aecafe732e46ca 100644 (file)
@@ -21,7 +21,9 @@ package org.sonar.api.utils;
 
 /**
  * @since 1.10
+ * @deprecated since 5.6
  */
+@Deprecated
 public class XmlParserException extends SonarException {
   public XmlParserException() {
   }
index df350a4893bdf45aafcc801353d68b407e599396..e21fcefaf389a432c0bb93a3c8d8b83c90dd2736 100644 (file)
@@ -56,7 +56,9 @@ import org.xml.sax.SAXException;
  * XML Parsing tool using XPATH. It's recommended to use StaxParser when parsing big XML files.
  *
  * @since 1.10
+ * @deprecated since 5.6 plugins should use their own dependencies
  */
+@Deprecated
 public class XpathParser {
 
   private static final String CAN_NOT_PARSE_XML = "can not parse xml : ";
index 02b1582b99980fdd2c13efff8cf71a5c2af7f706..341bc7991a8dcb4f20158b6824de421a96beb914 100644 (file)
  */
 package org.sonar.batch.postjob;
 
-import org.sonar.batch.issue.tracking.TrackedIssue;
-
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
-
 import javax.annotation.Nullable;
-
-import org.sonar.api.batch.AnalysisMode;
 import org.sonar.api.batch.fs.InputComponent;
 import org.sonar.api.batch.postjob.PostJobContext;
-import org.sonar.api.batch.postjob.issue.Issue;
+import org.sonar.api.batch.postjob.issue.PostJobIssue;
 import org.sonar.api.batch.rule.Severity;
 import org.sonar.api.config.Settings;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.batch.index.BatchComponent;
 import org.sonar.batch.index.BatchComponentCache;
 import org.sonar.batch.issue.IssueCache;
+import org.sonar.batch.issue.tracking.TrackedIssue;
 
 public class DefaultPostJobContext implements PostJobContext {
 
   private final Settings settings;
-  private final AnalysisMode analysisMode;
   private final IssueCache cache;
   private final BatchComponentCache resourceCache;
 
-  public DefaultPostJobContext(Settings settings, AnalysisMode analysisMode, IssueCache cache, BatchComponentCache resourceCache) {
+  public DefaultPostJobContext(Settings settings, IssueCache cache, BatchComponentCache resourceCache) {
     this.settings = settings;
-    this.analysisMode = analysisMode;
     this.cache = cache;
     this.resourceCache = resourceCache;
   }
@@ -58,21 +52,16 @@ public class DefaultPostJobContext implements PostJobContext {
   }
 
   @Override
-  public AnalysisMode analysisMode() {
-    return analysisMode;
-  }
-
-  @Override
-  public Iterable<Issue> issues() {
+  public Iterable<PostJobIssue> issues() {
     return Iterables.transform(Iterables.filter(cache.all(), new ResolvedPredicate(false)), new IssueTransformer());
   }
 
   @Override
-  public Iterable<Issue> resolvedIssues() {
+  public Iterable<PostJobIssue> resolvedIssues() {
     return Iterables.transform(Iterables.filter(cache.all(), new ResolvedPredicate(true)), new IssueTransformer());
   }
 
-  private class DefaultIssueWrapper implements Issue {
+  private class DefaultIssueWrapper implements PostJobIssue {
 
     private final TrackedIssue wrapped;
 
@@ -106,11 +95,6 @@ public class DefaultPostJobContext implements PostJobContext {
       return wrapped.startLine();
     }
 
-    @Override
-    public Double effortToFix() {
-      return wrapped.gap();
-    }
-
     @Override
     public String message() {
       return wrapped.getMessage();
@@ -128,9 +112,9 @@ public class DefaultPostJobContext implements PostJobContext {
     }
   }
 
-  private class IssueTransformer implements Function<TrackedIssue, Issue> {
+  private class IssueTransformer implements Function<TrackedIssue, PostJobIssue> {
     @Override
-    public Issue apply(TrackedIssue input) {
+    public PostJobIssue apply(TrackedIssue input) {
       return new DefaultIssueWrapper(input);
     }
   }
index b27e89e87f8498d90f47d30fb1f06d749c42a9c8..e1b0cca1c1ee19a637f14ba7e91c6f9625d8e6dc 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.batch.postjob;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.batch.BatchSide;
-import org.sonar.api.batch.AnalysisMode;
 import org.sonar.api.batch.postjob.internal.DefaultPostJobDescriptor;
 import org.sonar.api.config.Settings;
 
@@ -32,11 +31,9 @@ public class PostJobOptimizer {
   private static final Logger LOG = LoggerFactory.getLogger(PostJobOptimizer.class);
 
   private final Settings settings;
-  private final AnalysisMode analysisMode;
 
-  public PostJobOptimizer(Settings settings, AnalysisMode analysisMode) {
+  public PostJobOptimizer(Settings settings) {
     this.settings = settings;
-    this.analysisMode = analysisMode;
   }
 
   /**
@@ -47,10 +44,6 @@ public class PostJobOptimizer {
       LOG.debug("'{}' skipped because one of the required properties is missing", descriptor.name());
       return false;
     }
-    if (descriptor.isDisabledInIssues() && analysisMode.isIssues()) {
-      LOG.debug("'{}' skipped in issues mode", descriptor.name());
-      return false;
-    }
     return true;
   }
 
index 12f00a55d9053a725b1beb2d265d3ded0d8afad7..5f9916919ec04227215c5e039fdd64ddb8fa9903 100644 (file)
  */
 package org.sonar.batch.postjob;
 
-import org.sonar.batch.issue.tracking.TrackedIssue;
-
 import java.util.Arrays;
-
 import org.junit.Before;
 import org.junit.Test;
-import org.sonar.api.batch.AnalysisMode;
 import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.postjob.issue.Issue;
+import org.sonar.api.batch.postjob.issue.PostJobIssue;
 import org.sonar.api.batch.rule.Severity;
 import org.sonar.api.config.Settings;
 import org.sonar.api.resources.File;
 import org.sonar.batch.index.BatchComponentCache;
 import org.sonar.batch.issue.IssueCache;
+import org.sonar.batch.issue.tracking.TrackedIssue;
+
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -41,7 +39,6 @@ public class DefaultPostJobContextTest {
 
   private IssueCache issueCache;
   private BatchComponentCache resourceCache;
-  private AnalysisMode analysisMode;
   private DefaultPostJobContext context;
   private Settings settings;
 
@@ -49,15 +46,13 @@ public class DefaultPostJobContextTest {
   public void prepare() {
     issueCache = mock(IssueCache.class);
     resourceCache = new BatchComponentCache();
-    analysisMode = mock(AnalysisMode.class);
     settings = new Settings();
-    context = new DefaultPostJobContext(settings, analysisMode, issueCache, resourceCache);
+    context = new DefaultPostJobContext(settings, issueCache, resourceCache);
   }
 
   @Test
   public void test() {
     assertThat(context.settings()).isSameAs(settings);
-    assertThat(context.analysisMode()).isSameAs(analysisMode);
 
     TrackedIssue defaultIssue = new TrackedIssue();
     defaultIssue.setComponentKey("foo:src/Foo.php");
@@ -69,9 +64,8 @@ public class DefaultPostJobContextTest {
     defaultIssue.setSeverity("BLOCKER");
     when(issueCache.all()).thenReturn(Arrays.asList(defaultIssue));
 
-    Issue issue = context.issues().iterator().next();
+    PostJobIssue issue = context.issues().iterator().next();
     assertThat(issue.componentKey()).isEqualTo("foo:src/Foo.php");
-    assertThat(issue.effortToFix()).isEqualTo(2.0);
     assertThat(issue.isNew()).isTrue();
     assertThat(issue.key()).isEqualTo("xyz");
     assertThat(issue.line()).isEqualTo(1);
index e5d30f1dfa3948d22c9b8f6a88cd126753d7bab2..3420e45f209ae72f68fde6d8f3448111ed2095e4 100644 (file)
@@ -23,13 +23,10 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.sonar.api.batch.AnalysisMode;
 import org.sonar.api.batch.postjob.internal.DefaultPostJobDescriptor;
 import org.sonar.api.config.Settings;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 public class PostJobOptimizerTest {
 
@@ -38,13 +35,11 @@ public class PostJobOptimizerTest {
 
   private PostJobOptimizer optimizer;
   private Settings settings;
-  private AnalysisMode analysisMode;
 
   @Before
   public void prepare() {
     settings = new Settings();
-    analysisMode = mock(AnalysisMode.class);
-    optimizer = new PostJobOptimizer(settings, analysisMode);
+    optimizer = new PostJobOptimizer(settings);
   }
 
   @Test
@@ -63,15 +58,4 @@ public class PostJobOptimizerTest {
     settings.setProperty("sonar.foo.reportPath", "foo");
     assertThat(optimizer.shouldExecute(descriptor)).isTrue();
   }
-
-  @Test
-  public void should_disabled_in_issues_mode() {
-    DefaultPostJobDescriptor descriptor = new DefaultPostJobDescriptor()
-      .disabledInIssues();
-    assertThat(optimizer.shouldExecute(descriptor)).isTrue();
-
-    when(analysisMode.isIssues()).thenReturn(true);
-
-    assertThat(optimizer.shouldExecute(descriptor)).isFalse();
-  }
 }