@Override public List<Metric> apply(@Nonnull Metrics input) { return input.getMetrics(); } }
@VisibleForTesting List<Metric> getPluginMetrics() { List<Metric> metricsToRegister = newArrayList(); Map<String, Metrics> metricsByRepository = Maps.newHashMap(); for (Metrics metrics : metricsRepositories) { checkMetrics(metricsByRepository, metrics); metricsToRegister.addAll(metrics.getMetrics()); } return metricsToRegister; }
@Override public List<Metric> provide() { List<Metric> metrics = Lists.newArrayList(CoreMetrics.getMetrics()); for (Metrics factory : factories) { metrics.addAll(factory.getMetrics()); } return metrics; } }
private void checkMetrics(Map<String, Metrics> metricsByRepository, Metrics metrics) { for (Metric metric : metrics.getMetrics()) { String metricKey = metric.getKey(); if (CoreMetrics.getMetrics().contains(metric)) { throw new IllegalStateException(String.format("Metric [%s] is already defined by SonarQube", metricKey)); } Metrics anotherRepository = metricsByRepository.get(metricKey); if (anotherRepository != null) { throw new IllegalStateException(String.format("Metric [%s] is already defined by the repository [%s]", metricKey, anotherRepository)); } metricsByRepository.put(metricKey, metrics); } }
@Test public void should_not_crash_on_null_metrics_from_faulty_plugins() { Metrics faultyMetrics = () -> null; Metrics okMetrics = new FakeMetrics(); List<Metric> metrics = metrics(okMetrics, faultyMetrics); metrics.removeAll(SENSOR_METRICS_WITHOUT_METRIC_PLUGIN); assertThat(metrics).isEqualTo(okMetrics.getMetrics()); }
@Override public List<Metric> apply(@Nonnull Metrics input) { return input.getMetrics(); } }
@Override public List<Metric> provide() { List<Metric> metrics = Lists.newArrayList(CoreMetrics.getMetrics()); for (Metrics factory : factories) { metrics.addAll(factory.getMetrics()); } return metrics; } }
@Override public List<Metric> provide() { List<Metric> metrics = Lists.newArrayList(CoreMetrics.getMetrics()); for (Metrics factory : factories) { metrics.addAll(factory.getMetrics()); } return metrics; } }
@VisibleForTesting List<Metric> getPluginMetrics() { List<Metric> metricsToRegister = newArrayList(); Map<String, Metrics> metricsByRepository = Maps.newHashMap(); for (Metrics metrics : metricsRepositories) { checkMetrics(metricsByRepository, metrics); metricsToRegister.addAll(metrics.getMetrics()); } return metricsToRegister; }
@Override public List<Metric> provide() { List<Metric> metrics = Lists.newArrayList(CoreMetrics.getMetrics()); for (Metrics factory : factories) { metrics.addAll(factory.getMetrics()); } return metrics; } }
private void checkMetrics(Map<String, Metrics> metricsByRepository, Metrics metrics) { for (Metric metric : metrics.getMetrics()) { String metricKey = metric.getKey(); if (CoreMetrics.getMetrics().contains(metric)) { throw new IllegalStateException(String.format("Metric [%s] is already defined by SonarQube", metricKey)); } Metrics anotherRepository = metricsByRepository.get(metricKey); if (anotherRepository != null) { throw new IllegalStateException(String.format("Metric [%s] is already defined by the repository [%s]", metricKey, anotherRepository)); } metricsByRepository.put(metricKey, metrics); } }