Я пытаюсь разработать плагин SonarQube. Я сконфигурировал и установил SonarQube 5.3, и я использую программу SonarQube Scanner 2.5 для анализа проекта с помощью SonarQube. Я сделал образец с классом RandomMeasureComputer внедрение MeasureComputer для агрегирования мер.МераКомпьютерные расширения, не вызываемые в плагине SonarQube
public class RandomMeasureComputer implements MeasureComputer {
@Override
public MeasureComputerDefinition define(MeasureComputerDefinitionContext defContext) {
return defContext.newDefinitionBuilder()
.setOutputMetrics(ExampleMetrics.RANDOMMETRIC.getKey())
.build();
}
@Override
public void compute(MeasureComputerContext context) {
// This method is executed on the whole tree of components.
// Bottom-up traversal : files -> directories -> modules -> project
double value;
if (context.getComponent().getType() == Component.Type.FILE) {
// set a random value on files
value = RandomUtils.nextDouble();
} else {
// directory, module or project: sum values of children
value = 0.0;
for (Measure childMeasure : context.getChildrenMeasures(ExampleMetrics.RANDOMMETRIC.getKey())) {
value += childMeasure.getDoubleValue();
}
}
context.addMeasure(ExampleMetrics.RANDOMMETRIC.getKey(), value);
}
@Override
public String toString() {
return getClass().getSimpleName();
}
}
Я также добавил этот класс в методе org.sonar.api.SonarPlugin # getExtensions().
public final class ExamplePlugin extends SonarPlugin {
@Override
public List getExtensions() {
List extensions = new ArrayList();
extensions.addAll(ExampleProperties.definitions());
extensions.add(ExampleMetrics.class);
extensions.addAll(asList(FooLintRulesDefinition.class, FooLintProfile.class, MyCustomJavaRulesDefinition.class));
extensions.addAll(asList(ExampleSensor.class, RandomMeasureComputer.class, IssueSensor.class, ListAllIssuesPostJob.class, FooLintIssuesLoaderSensor.class));
return extensions;
}
}
Но когда я пытаюсь проанализировать проект с моим SonarQube плагин я не получаю вызов внутри класса RandomMeasureComputer.
Я прошел через http://docs.sonarqube.org/display/DEV/Developing+Plugins, но Я не уверен, что я пропустил. Пожалуйста, помогите мне с этим.
Вы проверили логи на стороне сервера [Background Task] (HTTP: // документы. sonarqube.org/display/SONAR/Background+Tasks), соответствующий вашему анализу? Здесь используется * MeasureComputer *. –
Спасибо за комментарий, я не знал о журналах фоновых задач, теперь я проверил фоновые журналы и компьютеры с мерами. Я действительно смутился, так как не получал отладочный вызов в моем классе, пока я отлаживал плагин. Невозможно отладить класс реализации Computer Computer? – bhavanak
Да, можно отладить класс MeasureComputer. Для этого вам нужно поместить сервер в DEBUG: установите в файле sonar.properties следующий параметр: sonar.web.javaAdditionalOpts = -agentlib: jdwp = transport = dt_socket, server = y, suspend = n, address = 8001 –