diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-01-31 13:28:26 +0100 |
---|---|---|
committer | dbmeneses <duarte.meneses@sonarsource.com> | 2017-01-31 17:14:13 +0100 |
commit | 664d1ea8246b368222ca545e8a26f0b8c7acfabd (patch) | |
tree | a4310e6a989539eba4d84f7a2aaa19d5608888b4 /sonar-scanner-engine | |
parent | 9df81b022ca8c249356289a7382d561e9a33b588 (diff) | |
download | sonarqube-664d1ea8246b368222ca545e8a26f0b8c7acfabd.tar.gz sonarqube-664d1ea8246b368222ca545e8a26f0b8c7acfabd.zip |
SONAR-8564 Help identifying Sensors in verbose mode
Diffstat (limited to 'sonar-scanner-engine')
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginRepository.java | 23 | ||||
-rw-r--r-- | sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java | 27 |
2 files changed, 43 insertions, 7 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginRepository.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginRepository.java index f804a528107..4b729948629 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginRepository.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginRepository.java @@ -20,9 +20,12 @@ package org.sonar.scanner.bootstrap; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; import java.util.Collection; +import java.util.HashMap; import java.util.Map; + +import javax.annotation.CheckForNull; + import org.picocontainer.Startable; import org.sonar.api.Plugin; import org.sonar.api.utils.log.Logger; @@ -42,6 +45,7 @@ public class ScannerPluginRepository implements PluginRepository, Startable { private Map<String, Plugin> pluginInstancesByKeys; private Map<String, PluginInfo> infosByKeys; + private Map<ClassLoader, String> keysByClassLoader; public ScannerPluginRepository(PluginInstaller installer, PluginLoader loader) { this.installer = installer; @@ -50,19 +54,30 @@ public class ScannerPluginRepository implements PluginRepository, Startable { @Override public void start() { - infosByKeys = Maps.newHashMap(installer.installRemotes()); - pluginInstancesByKeys = Maps.newHashMap(loader.load(infosByKeys)); + infosByKeys = new HashMap<>(installer.installRemotes()); + pluginInstancesByKeys = new HashMap<>(loader.load(infosByKeys)); // this part is only used by tests for (Map.Entry<String, Plugin> entry : installer.installLocals().entrySet()) { String pluginKey = entry.getKey(); - infosByKeys.put(pluginKey, new PluginInfo(pluginKey)); + PluginInfo pluginInfo = new PluginInfo(pluginKey); + infosByKeys.put(pluginKey, pluginInfo); pluginInstancesByKeys.put(pluginKey, entry.getValue()); } + keysByClassLoader = new HashMap<>(); + for (Map.Entry<String, Plugin> e : pluginInstancesByKeys.entrySet()) { + keysByClassLoader.put(e.getValue().getClass().getClassLoader(), e.getKey()); + } + logPlugins(); } + @CheckForNull + public String getPluginKey(ClassLoader cl) { + return keysByClassLoader.get(cl); + } + private void logPlugins() { if (infosByKeys.isEmpty()) { LOG.debug("No plugins loaded"); diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java index db924b9f474..9d22f5409f9 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java @@ -19,20 +19,26 @@ */ package org.sonar.scanner.phases; - import org.apache.commons.lang.StringUtils; +import org.sonar.api.batch.Sensor; import org.sonar.api.batch.events.SensorExecutionHandler; import org.sonar.api.batch.events.SensorsPhaseHandler; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.api.utils.log.Profiler; +import org.sonar.scanner.bootstrap.ScannerPluginRepository; +import org.sonar.scanner.sensor.SensorWrapper; import org.sonar.scanner.util.ScannerUtils; public class PhasesTimeProfiler implements SensorExecutionHandler, SensorsPhaseHandler { private static final Logger LOG = Loggers.get(PhasesTimeProfiler.class); - private Profiler profiler = Profiler.create(LOG); + private final ScannerPluginRepository pluginRepo; + + public PhasesTimeProfiler(ScannerPluginRepository pluginRepo) { + this.pluginRepo = pluginRepo; + } @Override public void onSensorsPhase(SensorsPhaseEvent event) { @@ -44,10 +50,25 @@ public class PhasesTimeProfiler implements SensorExecutionHandler, SensorsPhaseH @Override public void onSensorExecution(SensorExecutionEvent event) { if (event.isStart()) { - profiler.startInfo("Sensor " + ScannerUtils.describe(event.getSensor())); + ClassLoader cl = getSensorClassLoader(event.getSensor()); + String pluginKey = pluginRepo.getPluginKey(cl); + String suffix = ""; + if (pluginKey != null) { + suffix = " [" + pluginKey + "]"; + } + profiler.startInfo("Sensor " + ScannerUtils.describe(event.getSensor()) + suffix); } else { profiler.stopInfo(); } } + private ClassLoader getSensorClassLoader(Sensor sensor) { + if (sensor instanceof SensorWrapper) { + SensorWrapper wrapper = (SensorWrapper) sensor; + return wrapper.wrappedSensor().getClass().getClassLoader(); + } else { + return sensor.getClass().getClassLoader(); + } + } + } |