Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sonarqube 无法从Sonar WS-API获取集成测试结果_Sonarqube_Sonarqube 4.5 - Fatal编程技术网

Sonarqube 无法从Sonar WS-API获取集成测试结果

Sonarqube 无法从Sonar WS-API获取集成测试结果,sonarqube,sonarqube-4.5,Sonarqube,Sonarqube 4.5,我正在准备SonarQube仪表板上的度量的定制报告,主要是单元测试和集成测试执行和覆盖矩阵。我成功地将其用于单元测试,但似乎没有矩阵键可用于获取集成和总体覆盖率统计数据。我用的是SonarQube 4.5.6。如果有其他方法将Sonar Dashboard Stats导出为HTML,请指导我。代码如下: public class TestStatistics{ static String host = "http://my.server.com/Sonar"; static S

我正在准备SonarQube仪表板上的度量的定制报告,主要是单元测试和集成测试执行和覆盖矩阵。我成功地将其用于单元测试,但似乎没有矩阵键可用于获取集成和总体覆盖率统计数据。我用的是SonarQube 4.5.6。如果有其他方法将Sonar Dashboard Stats导出为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();
        }
    }
公共类TestStatistics{
静态字符串主机=”http://my.server.com/Sonar";
静态字符串login=“admin”;
静态字符串password=“admin”;
静态字符串resourceKey=“shift:shift”;
静态字符串[]度量_TO_GET=新字符串[]{“分支覆盖率”,
“新分支机构覆盖范围”,
“分支机构覆盖率点击数据”,
“逐行条件”,
“按行覆盖的条件”,
“覆盖范围”,
“新保险范围”,
“线路覆盖率”,
“新线路覆盖范围”,
“覆盖率\u行\u点击\u数据”,
“线到线覆盖”,
“新线到封面”,
“跳过了测试”,
“未覆盖的条件”,
“新的条件”,
“未覆盖的线”,
“新线”,
“测试”,
“测试执行时间”,
“测试错误”,
“测试失败”,
“测试成功密度”
};
公共静态void main(字符串[]args){
试试{
日期=新日期();
Sonar Sonar=新Sonar(新HttpClient4连接器(新主机(主机、登录、密码));
ResourceQuery=ResourceQuery.createForMetrics(resourceKey,MEASURES-TO-GET);
query.setIncludeTrends(true);
List resources=sonar.findAll(查询);
for(资源:资源){
List allMeasures=resource.getMeasures();
System.out.println(“所有度量值:+allMeasures.toString());
System.out.println(“单位分支覆盖率:”+resource.getMeasureValue(“分支覆盖率”);
System.out.println(“单元测试覆盖率:+resource.getMeasureValue(“覆盖率”);
System.out.println(“单位行覆盖率:+resource.getMeasureValue(“行覆盖率”);
System.out.println(“要覆盖的行:+resource.getMeasureValue(“要覆盖的行”);
System.out.println(“跳过的测试:+resource.getMeasureValue”(“跳过的_测试”);
System.out.println(“未覆盖的条件:+resource.getMeasureValue(“未覆盖的条件”);
System.out.println(“未覆盖的行:+resource.getMeasureValue(“未覆盖的行”);
System.out.println(“单元测试:+resource.getMeasureValue(“测试”);
System.out.println(“单元测试执行时间:+resource.getMeasureValue(“测试执行时间”));
System.out.println(“单元测试错误:+resource.getMeasureValue(“测试错误”));
System.out.println(“单元测试失败:+resource.getMeasureValue(“测试失败”);
System.out.println(“单元测试成功密度:+resource.getMeasureValue(“测试成功密度”));
}
系统输出打印项次(“完成”);
}捕获(例外e){
e、 printStackTrace();
}
}

}我终于找到了答案

所有度量的键都存储在sonarqube数据库下的一个名为matrics的表中

现在,我之前没有注意到的另一件愚蠢的事情是,如果我们将鼠标悬停在sonarqube仪表板中显示的特定统计数据上,它将显示度量的关键点

非常感谢

集成和总体测试执行统计的所有关键如下: 它包括, it_线_覆盖范围, 它覆盖了线, it分支机构覆盖范围, 它揭示了一些条件, 总覆盖率, 总体线覆盖率, 所有未覆盖线, 分支机构的总体覆盖范围,
总体条件

使用
api/metrics
webapi列出可用的指标(并获取键、名称、类型等详细信息)

  • 在SonarQube 4.5.6中:
  • 从5.2开始:()

在数据库中获取此信息是一种过分的做法(而且不可靠,因为数据库结构可能因版本而异),您应该改用Web服务(请参阅其他答案)。