diff options
author | Evgeny Mandrikov <mandrikov@gmail.com> | 2011-02-04 12:46:52 +0300 |
---|---|---|
committer | Evgeny Mandrikov <mandrikov@gmail.com> | 2011-02-04 16:01:42 +0300 |
commit | 4483cea3a0a84beb648b946cfd658ae256b5a1ab (patch) | |
tree | ce92a9aabdc93afd67c7df1da949a10321afcef3 | |
parent | 9b57d0b379935e053ef050b0379c65fc32810bc1 (diff) | |
download | sonarqube-4483cea3a0a84beb648b946cfd658ae256b5a1ab.tar.gz sonarqube-4483cea3a0a84beb648b946cfd658ae256b5a1ab.zip |
SONAR-2169: Add CoverageExtension to API
4 files changed, 54 insertions, 14 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java index 166211ae755..af4d177edb3 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java @@ -19,6 +19,11 @@ */ 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; } } diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java index 5ee91abceaf..f134ad425c6 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/BatchPluginRepositoryTest.java @@ -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 { diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java index 8eef4cc57a7..2567b0c79ca 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/AbstractCoverageExtension.java @@ -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 index 00000000000..a7e9f65618c --- /dev/null +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/CoverageExtension.java @@ -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 { + +} |