aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-scanner-engine
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2017-01-31 13:28:26 +0100
committerdbmeneses <duarte.meneses@sonarsource.com>2017-01-31 17:14:13 +0100
commit664d1ea8246b368222ca545e8a26f0b8c7acfabd (patch)
treea4310e6a989539eba4d84f7a2aaa19d5608888b4 /sonar-scanner-engine
parent9df81b022ca8c249356289a7382d561e9a33b588 (diff)
downloadsonarqube-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.java23
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/phases/PhasesTimeProfiler.java27
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();
+ }
+ }
+
}