Не удалось получить результаты интеграционных тестов из Sonar WS API.

Я готовлю индивидуальный отчет о метриках, представленных на панели инструментов SonarQube, в основном, матрице выполнения модульного и интеграционного тестирования и покрытия. Мне удалось получить его для модульных тестов, но, похоже, нет доступных матричных ключей для получения статистики интеграции и общего покрытия. Я использую SonarQube 4.5.6. Также подскажите, есть ли другой способ экспортировать статистику Sonar Dashboard в формате HTML. Код выглядит следующим образом:

public class TestStatistics{
    static String host = "http://my.server.com/Sonar";
    static String login = "admin";
    static String password = "admin";       
    static String resourceKey = "shift:shift";
    static String[] MEASURES_TO_GET =  new String[]{"branch_coverage",
         "new_branch_coverage",
         "branch_coverage_hits_data",
         "conditions_by_line",
         "covered_conditions_by_line",
         "coverage",
         "new_coverage",
         "line_coverage",
         "new_line_coverage",
         "coverage_line_hits_data",
         "lines_to_cover",
         "new_lines_to_cover",
         "skipped_tests",
         "uncovered_conditions",
         "new_uncovered_conditions",
         "uncovered_lines",
         "new_uncovered_lines",
         "tests",
         "test_execution_time",
         "test_errors",
         "test_failures",
         "test_success_density"
         };

    public static void main(String[] args) {                
        try {       
            Date date = new Date();

            Sonar sonar = new Sonar(new HttpClient4Connector(new Host(host, login, password)));
            ResourceQuery query = ResourceQuery.createForMetrics(resourceKey, MEASURES_TO_GET);
            query.setIncludeTrends(true);
            List<Resource> resources = sonar.findAll(query);
            for(Resource resource:resources){
                List<Measure> allMeasures = resource.getMeasures();
                System.out.println("All Measures : "+allMeasures.toString());
                System.out.println("Unit Branch Coverage : "+resource.getMeasureValue("branch_coverage"));
                System.out.println("Unit Test Coverage : "+resource.getMeasureValue("coverage"));
                System.out.println("Unit Line Coverage : "+resource.getMeasureValue("line_coverage"));
                System.out.println("Lines To Cover : "+resource.getMeasureValue("lines_to_cover"));
                System.out.println("Skipped Tests : "+resource.getMeasureValue("skipped_tests"));
                System.out.println("Uncovered Conditions : "+resource.getMeasureValue("uncovered_conditions"));
                System.out.println("Uncovered Lines : "+resource.getMeasureValue("uncovered_lines"));
                System.out.println("Unit Tests : "+resource.getMeasureValue("tests"));
                System.out.println("Unit Test Execution Time : "+resource.getMeasureValue("test_execution_time"));
                System.out.println("Unit Tests Errors : "+resource.getMeasureValue("test_errors"));
                System.out.println("Unit Tests Failures : "+resource.getMeasureValue("test_failures"));
                System.out.println("Unit Tests Success Density : "+resource.getMeasureValue("test_success_density"));
            }
               System.out.println("DONE");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}


person Manoj Patel    schedule 14.04.2016    source источник


Ответы (2)


Используйте api/metrics Web API для получения списка доступных показателей (и получения таких сведений, как ключ, имя, тип и т. д.).

person Nicolas B. - SonarSource Team    schedule 15.04.2016

Я наконец нашел ответ.

Все ключи метрик хранятся в таблице, называемой матрицами, в базе данных sonarqube.

Теперь еще одна глупая вещь, которую я не заметил ранее, заключается в том, что если мы наведем указатель мыши на определенную статистику, отображаемую на панели инструментов sonarqube, она покажет ключ метрики.

Большое спасибо StackOverFlow.

Все ключи для интеграции и общей статистики выполнения тестов следующие:

person Manoj Patel    schedule 14.04.2016
comment
Получение этой информации в базе данных является излишним (и ненадежным, поскольку структура БД может меняться в зависимости от версии), вместо этого вам следует использовать веб-службы (см. Другой ответ). - person Nicolas B. - SonarSource Team; 15.04.2016