]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2169: Add CoverageExtension to API
authorEvgeny Mandrikov <mandrikov@gmail.com>
Fri, 4 Feb 2011 09:46:52 +0000 (12:46 +0300)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Fri, 4 Feb 2011 13:01:42 +0000 (16:01 +0300)
sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java
sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java [new file with mode: 0644]

index 166211ae75535a5eb4f89559b1af4d0aed3c779d..af4d177edb37bccf8c0dacf57bc1df2178f3a23b 100644 (file)
  */
 package org.sonar.batch.bootstrap;
 
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
 import com.google.common.collect.Lists;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.lang.ArrayUtils;
@@ -30,6 +35,7 @@ import org.slf4j.LoggerFactory;
 import org.sonar.api.BatchExtension;
 import org.sonar.api.Plugin;
 import org.sonar.api.batch.AbstractCoverageExtension;
+import org.sonar.api.batch.CoverageExtension;
 import org.sonar.api.batch.SupportedEnvironment;
 import org.sonar.api.platform.Environment;
 import org.sonar.api.resources.Java;
@@ -42,11 +48,6 @@ import org.sonar.core.plugin.JpaPlugin;
 import org.sonar.core.plugin.JpaPluginDao;
 import org.sonar.core.plugin.JpaPluginFile;
 
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-
 public class BatchPluginRepository extends AbstractPluginRepository {
 
   private static final Logger LOG = LoggerFactory.getLogger(BatchPluginRepository.class);
@@ -116,7 +117,7 @@ public class BatchPluginRepository extends AbstractPluginRepository {
       ok = false;
       LOG.debug("The following extension is ignored: " + extension + " due to execution environment.");
     }
-    if (ok && isType(extension, AbstractCoverageExtension.class)) {
+    if (ok && isType(extension, CoverageExtension.class)) {
       ok = shouldRegisterCoverageExtension(pluginKey, container.getComponent(Project.class), container.getComponent(Configuration.class));
       if (!ok) {
         LOG.debug("The following extension is ignored: " + extension + ". See the parameter " + AbstractCoverageExtension.PARAM_PLUGIN);
@@ -140,14 +141,17 @@ public class BatchPluginRepository extends AbstractPluginRepository {
   }
 
   boolean shouldRegisterCoverageExtension(String pluginKey, Project project, Configuration conf) {
-    boolean ok = true;
+    if (!project.getAnalysisType().isDynamic(true)) {
+      // not dynamic and not reuse reports
+      return false;
+    }
     if (StringUtils.equals(project.getLanguageKey(), Java.KEY)) {
       String[] selectedPluginKeys = conf.getStringArray(AbstractCoverageExtension.PARAM_PLUGIN);
       if (ArrayUtils.isEmpty(selectedPluginKeys)) {
         selectedPluginKeys = new String[] { AbstractCoverageExtension.DEFAULT_PLUGIN };
       }
-      ok = ArrayUtils.contains(selectedPluginKeys, pluginKey);
+      return ArrayUtils.contains(selectedPluginKeys, pluginKey);
     }
-    return ok;
+    return true;
   }
 }
index 5ee91abceaf2a5ec7262828c03778d054621a731..f134ad425c66c944d5b36de49ed1664481a49a10 100644 (file)
@@ -31,8 +31,8 @@ import org.sonar.api.ServerExtension;
 import org.sonar.api.batch.AbstractCoverageExtension;
 import org.sonar.api.resources.Java;
 import org.sonar.api.resources.Project;
+import org.sonar.api.resources.Project.AnalysisType;
 import org.sonar.api.utils.IocContainer;
-import org.sonar.batch.bootstrap.BatchPluginRepository;
 
 public class BatchPluginRepositoryTest {
 
@@ -83,11 +83,11 @@ public class BatchPluginRepositoryTest {
   }
 
   private static Project newJavaProject() {
-    return new Project("foo").setLanguageKey(Java.KEY);
+    return new Project("foo").setLanguageKey(Java.KEY).setAnalysisType(AnalysisType.DYNAMIC);
   }
 
   private static Project newGroovyProject() {
-    return new Project("foo").setLanguageKey("grvy");
+    return new Project("foo").setLanguageKey("grvy").setAnalysisType(AnalysisType.DYNAMIC);
   }
 
   public static class FakeBatchExtension implements BatchExtension {
index 8eef4cc57a709325cac31551f17bea62a7017438..2567b0c79cac21166fed1f6e1d9fa210789842a4 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.api.batch;
 
-import org.sonar.api.BatchExtension;
 import org.sonar.api.Plugins;
 import org.sonar.api.resources.Project;
 
@@ -28,8 +27,9 @@ import org.sonar.api.resources.Project;
  * It is a pre-implementation for Sensors and Decorators
  * 
  * @since 1.10
+ * @deprecated since 2.6 was superseded by interface {@link CoverageExtension}
  */
-public abstract class AbstractCoverageExtension implements BatchExtension {
+public abstract class AbstractCoverageExtension implements CoverageExtension {
 
   /**
    * The plugin key to retrieve the coverage engine to be used
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java
new file mode 100644 (file)
index 0000000..a7e9f65
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar 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.
+ *
+ * Sonar 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 Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.api.batch;
+
+import org.sonar.api.BatchExtension;
+
+/**
+ * Marker for extension. Extension which implements this interface would be active, when:
+ * <ul>
+ * <li>corresponding coverage engine activated (see {@link AbstractCoverageExtension#PARAM_PLUGIN}) and language is Java</li>
+ * <li>type of analysis is dynamic or reuse reports</li>
+ * </ul>
+ * 
+ * @since 2.6
+ * @TODO Ability to configure coverage engine per language - http://jira.codehaus.org/browse/SONAR-1803
+ */
+public interface CoverageExtension extends BatchExtension {
+
+}