diff options
13 files changed, 43 insertions, 49 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileEventsSensor.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileEventsSensor.java index 3fd3d0a9ed7..5771b1a9327 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileEventsSensor.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileEventsSensor.java @@ -53,7 +53,7 @@ public class ProfileEventsSensor implements Sensor { public void analyse(Project project, SensorContext context) { RulesProfileWrapper profileWrapper = (RulesProfileWrapper) profile; - for (String languageKey : moduleLanguages.getModuleLanguageKeys()) { + for (String languageKey : moduleLanguages.keys()) { RulesProfile realProfile = profileWrapper.getProfileByLanguage(languageKey); Measure pastProfileMeasure = getPreviousMeasure(project, CoreMetrics.PROFILE); if (pastProfileMeasure == null) { diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileSensor.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileSensor.java index e507f27ec9a..ffff3ae321d 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileSensor.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/ProfileSensor.java @@ -48,7 +48,7 @@ public class ProfileSensor implements Sensor { public void analyse(Project project, SensorContext context) { RulesProfileWrapper wrapper = (RulesProfileWrapper) profile; - for (String languageKey : languages.getModuleLanguageKeys()) { + for (String languageKey : languages.keys()) { RulesProfile realProfile = wrapper.getProfileByLanguage(languageKey); Measure measure = new Measure(CoreMetrics.PROFILE, profile.getName()); Measure measureVersion = new Measure(CoreMetrics.PROFILE_VERSION, Integer.valueOf(profile.getVersion()).doubleValue()); diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdEngine.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdEngine.java index 0c336491884..3e221e1978c 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdEngine.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdEngine.java @@ -27,7 +27,7 @@ import org.sonar.api.resources.Project; public abstract class CpdEngine implements BatchExtension { - abstract boolean isLanguageSupported(Language language); + abstract boolean isLanguageSupported(String language); abstract void analyse(Project project, SensorContext context); diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdSensor.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdSensor.java index f9346aaffc3..f55f1215fef 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdSensor.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdSensor.java @@ -27,7 +27,6 @@ import org.sonar.api.batch.ModuleLanguages; import org.sonar.api.batch.Sensor; import org.sonar.api.batch.SensorContext; import org.sonar.api.config.Settings; -import org.sonar.api.resources.Language; import org.sonar.api.resources.Project; public class CpdSensor implements Sensor { @@ -51,17 +50,16 @@ public class CpdSensor implements Sensor { } @VisibleForTesting - CpdEngine getEngine(Language language) { + CpdEngine getEngine(String language) { if (sonarEngine.isLanguageSupported(language)) { return sonarEngine; - } else { - return sonarBridgeEngine; } + return sonarBridgeEngine; } @VisibleForTesting - boolean isSkipped(Language language) { - String key = "sonar.cpd." + language.getKey() + ".skip"; + boolean isSkipped(String language) { + String key = "sonar.cpd." + language + ".skip"; if (settings.hasKey(key)) { return settings.getBoolean(key); } @@ -69,15 +67,15 @@ public class CpdSensor implements Sensor { } public void analyse(Project project, SensorContext context) { - for (Language language : moduleLanguages.getModuleLanguages()) { + for (String language : moduleLanguages.keys()) { if (isSkipped(language)) { - LOG.info("Detection of duplicated code is skipped for {}.", language); + LOG.info("Detection of duplicated code is skipped for {}", language); continue; } CpdEngine engine = getEngine(language); if (!engine.isLanguageSupported(language)) { - LOG.debug("Detection of duplicated code is not supported for {}.", language); + LOG.debug("Detection of duplicated code is not supported for {}", language); continue; } LOG.info("{} is used for {}", engine, language); diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java index aa4bf2b4da6..9750b2fa206 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java @@ -42,6 +42,7 @@ import org.sonar.duplications.internal.pmd.TokenizerBridge; import org.sonar.plugins.cpd.index.IndexFactory; import org.sonar.plugins.cpd.index.SonarDuplicationsIndex; +import javax.annotation.CheckForNull; import java.util.Collection; import java.util.List; import java.util.concurrent.ExecutionException; @@ -76,7 +77,7 @@ public class SonarBridgeEngine extends CpdEngine { } @Override - public boolean isLanguageSupported(Language language) { + public boolean isLanguageSupported(String language) { return getMapping(language) != null; } @@ -90,7 +91,7 @@ public class SonarBridgeEngine extends CpdEngine { return; } - CpdMapping mapping = getMapping(project.getLanguage()); + CpdMapping mapping = getMapping(project.getLanguage().getKey()); // Create index SonarDuplicationsIndex index = indexFactory.create(project); @@ -167,10 +168,11 @@ public class SonarBridgeEngine extends CpdEngine { return minimumTokens; } - private CpdMapping getMapping(Language language) { + @CheckForNull + private CpdMapping getMapping(String language) { if (mappings != null) { for (CpdMapping cpdMapping : mappings) { - if (cpdMapping.getLanguage().equals(language)) { + if (cpdMapping.getLanguage().getKey().equals(language)) { return cpdMapping; } } diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java index d82132e8d15..832b4e7ab82 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java @@ -92,8 +92,8 @@ public class SonarEngine extends CpdEngine { } @Override - public boolean isLanguageSupported(Language language) { - return Java.KEY.equals(language.getKey()); + public boolean isLanguageSupported(String language) { + return Java.KEY.equals(language); } @Override diff --git a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdSensorTest.java b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdSensorTest.java index 185bb6d6013..5fb30de0227 100644 --- a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdSensorTest.java +++ b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdSensorTest.java @@ -39,7 +39,6 @@ public class CpdSensorTest { SonarBridgeEngine sonarBridgeEngine; CpdSensor sensor; Settings settings; - private Language phpLanguage; @Before public void setUp() { @@ -47,25 +46,18 @@ public class CpdSensorTest { sonarEngine = new SonarEngine(indexFactory, null, null); sonarBridgeEngine = new SonarBridgeEngine(indexFactory, null, null); settings = new Settings(new PropertyDefinitions(CpdPlugin.class)); - phpLanguage = new AbstractLanguage("php", "PHP") { - - @Override - public String[] getFileSuffixes() { - return null; - } - }; sensor = new CpdSensor(sonarEngine, sonarBridgeEngine, settings, new DefaultModuleLanguages(settings, new Languages())); } @Test public void test_global_skip() { settings.setProperty("sonar.cpd.skip", true); - assertThat(sensor.isSkipped(Java.INSTANCE)).isTrue(); + assertThat(sensor.isSkipped(Java.KEY)).isTrue(); } @Test public void should_not_skip_by_default() { - assertThat(sensor.isSkipped(Java.INSTANCE)).isFalse(); + assertThat(sensor.isSkipped(Java.KEY)).isFalse(); } @Test @@ -73,14 +65,14 @@ public class CpdSensorTest { settings.setProperty("sonar.cpd.skip", false); settings.setProperty("sonar.cpd.php.skip", true); - assertThat(sensor.isSkipped(phpLanguage)).isTrue(); - assertThat(sensor.isSkipped(Java.INSTANCE)).isFalse(); + assertThat(sensor.isSkipped("php")).isTrue(); + assertThat(sensor.isSkipped(Java.KEY)).isFalse(); } @Test public void test_engine() { - assertThat(sensor.getEngine(Java.INSTANCE)).isSameAs(sonarEngine); - assertThat(sensor.getEngine(phpLanguage)).isSameAs(sonarBridgeEngine); + assertThat(sensor.getEngine(Java.KEY)).isSameAs(sonarEngine); + assertThat(sensor.getEngine("PHP")).isSameAs(sonarBridgeEngine); } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java b/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java index d9a59f93e54..78d625983c8 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java +++ b/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java @@ -51,7 +51,7 @@ public class DefaultProfileLoader implements ProfileLoader { public RulesProfile load(Project module, Settings settings) { - if (!moduleLanguages.getModuleLanguageKeys().isEmpty()) { + if (!moduleLanguages.keys().isEmpty()) { return loadSingleProfile(settings); } @@ -89,7 +89,7 @@ public class DefaultProfileLoader implements ProfileLoader { Map<String, RulesProfile> profilesPerLanguageKey = new HashMap<String, RulesProfile>(); // Single language is forced, load a single quality profile - String languageKey = moduleLanguages.getModuleLanguageKeys().iterator().next(); + String languageKey = moduleLanguages.keys().iterator().next(); String profileName = StringUtils.defaultIfBlank( settings.getString("sonar.profile"), diff --git a/sonar-batch/src/main/java/org/sonar/batch/RulesProfileWrapper.java b/sonar-batch/src/main/java/org/sonar/batch/RulesProfileWrapper.java index 7f7c97714f0..416d2af87f5 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/RulesProfileWrapper.java +++ b/sonar-batch/src/main/java/org/sonar/batch/RulesProfileWrapper.java @@ -33,7 +33,8 @@ import java.util.List; import java.util.Map; /** - * This wrapper is used to try to preserver backward compatibility for plugins that used to depends on {@link RulesProfile} + * This wrapper is used to try to preserve backward compatibility for plugins that used to + * depends on {@link RulesProfile} * @since 4.2 */ public class RulesProfileWrapper extends RulesProfile { @@ -54,10 +55,10 @@ public class RulesProfileWrapper extends RulesProfile { } private RulesProfile getSingleProfileOrFail() { - if (moduleLanguages.getModuleLanguageKeys().size() != 1) { + if (moduleLanguages.keys().size() != 1) { throw new SonarException("Please update your plugin to support multi-language analysis"); } - return ruleProfilesPerLanguages.get(moduleLanguages.getModuleLanguageKeys().iterator().next()); + return ruleProfilesPerLanguages.get(moduleLanguages.keys().iterator().next()); } public RulesProfile getProfileByLanguage(String languageKey) { @@ -71,12 +72,12 @@ public class RulesProfileWrapper extends RulesProfile { @Override public String getLanguage() { - if (moduleLanguages.getModuleLanguageKeys().size() != 1) { + if (moduleLanguages.keys().size() != 1) { // FIXME This is a hack for CommonChecksDecorator that call this method in its constructor LOG.debug("Please update your plugin to support multi-language analysis", new SonarException("Please update your plugin to support multi-language analysis")); return ""; } - return ruleProfilesPerLanguages.get(moduleLanguages.getModuleLanguageKeys().iterator().next()).getLanguage(); + return ruleProfilesPerLanguages.get(moduleLanguages.keys().iterator().next()).getLanguage(); } @Override diff --git a/sonar-batch/src/main/java/org/sonar/batch/phases/SensorsExecutor.java b/sonar-batch/src/main/java/org/sonar/batch/phases/SensorsExecutor.java index 839777e110e..987a63f5146 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/phases/SensorsExecutor.java +++ b/sonar-batch/src/main/java/org/sonar/batch/phases/SensorsExecutor.java @@ -78,7 +78,7 @@ public class SensorsExecutor implements BatchComponent { // For backward compatibility try to execute Sensor for each language until it is executed once (or never) String oldLanguageKey = module.getLanguageKey(); Language oldLanguage = module.getLanguage(); - for (Language language : moduleLanguages.getModuleLanguages()) { + for (Language language : moduleLanguages.languages()) { module.setLanguage(language); module.getConfiguration().setProperty(CoreProperties.PROJECT_LANGUAGE_PROPERTY, language.getKey()); if (sensor.shouldExecuteOnProject(module)) { diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/ComponentIndexer.java b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/ComponentIndexer.java index 5751636f8dd..c1e97a05f56 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/ComponentIndexer.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/ComponentIndexer.java @@ -107,10 +107,10 @@ public class ComponentIndexer implements BatchComponent { private void updateModuleLanguage() { if (module.getId() != null) { ResourceDto dto = resourceDao.getResource(module.getId()); - if (moduleLanguages.getModuleLanguageKeys().size() == 1) { - dto.setLanguage(moduleLanguages.getModuleLanguageKeys().iterator().next()); - } else if (moduleLanguages.getModuleLanguageKeys().size() > 1) { - dto.setLanguage(StringUtils.join(moduleLanguages.getModuleLanguageKeys(), ",")); + if (moduleLanguages.keys().size() == 1) { + dto.setLanguage(moduleLanguages.keys().iterator().next()); + } else if (moduleLanguages.keys().size() > 1) { + dto.setLanguage(StringUtils.join(moduleLanguages.keys(), ",")); } else { dto.setLanguage("none"); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/language/DefaultModuleLanguages.java b/sonar-batch/src/main/java/org/sonar/batch/scan/language/DefaultModuleLanguages.java index 638d1f4e63d..fecede739bb 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/language/DefaultModuleLanguages.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/language/DefaultModuleLanguages.java @@ -26,6 +26,7 @@ import org.sonar.api.batch.ModuleLanguages; import org.sonar.api.config.Settings; import org.sonar.api.resources.Language; import org.sonar.api.resources.Languages; +import org.sonar.api.utils.MessageException; import org.sonar.api.utils.SonarException; import java.util.Collection; @@ -51,7 +52,7 @@ public class DefaultModuleLanguages implements ModuleLanguages { LOG.info("Language is forced to {}", languageKey); Language language = languages.get(languageKey); if (language == null) { - throw new SonarException("You must install a plugin that supports the language key '" + languageKey + "'"); + throw MessageException.of("You must install a plugin that supports the language key '" + languageKey + "'"); } addLanguage(languageKey); } @@ -65,11 +66,11 @@ public class DefaultModuleLanguages implements ModuleLanguages { moduleLanguages.put(languageKey, language); } - public Collection<String> getModuleLanguageKeys() { + public Collection<String> keys() { return moduleLanguages.keySet(); } - public Collection<Language> getModuleLanguages() { + public Collection<Language> languages() { return moduleLanguages.values(); } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/ModuleLanguages.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/ModuleLanguages.java index 740eadfe83e..739e59a2e92 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/ModuleLanguages.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/ModuleLanguages.java @@ -31,8 +31,8 @@ import java.util.Collection; */ public interface ModuleLanguages extends BatchExtension { - Collection<String> getModuleLanguageKeys(); + Collection<String> keys(); - Collection<Language> getModuleLanguages(); + Collection<Language> languages(); } |