SonarQube 5.5 API - componentKey约定

时间:2016-09-13 11:48:24

标签: sonarqube sonarqube-web

我正在尝试使用“api/measures/component”端点从SonarQube实例中提取coverage数据。这适用于多模块java项目。使用POSTMAN,我可以使用'componentKey'查询单个java文件,这是一个像这样的字符串构建

[maven-groupId]:[maven-artifactId]:[path to java file]

生成类似

的字符串
com.i.pc.e.components.o:om-wf-e:src/main/java/com/i/e/o/wf/actions/Xxxx.java

并返回此json响应

{
"component": {
  "id": "AVci_6G7elHqFlTqG_OC",
  "key": "com.i.pc.e.components.o:om-wfl-e:src/main/java/com/i/e/o/wf/actions/Xxxx.java",
  "name": "Xxxx.java",
  "qualifier": "FIL",
  "path": "src/main/java/com/i/e/om/wf/actions/Xxxxx.java",
  "language": "java",
  "measures": []
},
"metrics": [
  {
    "key": "coverage",
    "name": "Coverage",
    "description": "Coverage by unit tests",
    "domain": "Coverage",
    "type": "PERCENT",
    "higherValuesAreBetter": true,
    "qualitative": true,
    "hidden": false,
    "custom": false,
    "decimalScale": 1,
    "bestValue": "100.0",
    "worstValue": "0.0"
  }
]

}

这对于一次性请求很好,但是我需要对许多Java源文件执行此操作,并且我不会提供Maven详细信息。

是否有关于'componentKey'格式的约定或文档?

理想情况下,我想在'compomentKey'中定义完整的包和java源文件名,或者有没有办法通过其他REST API调用来查找'componentId'?

1 个答案:

答案 0 :(得分:2)

使用components服务从项目开始迭代树(或树中的子树),并将sonar.projectKey值提供给baseComponentKey参数。请特别注意strategy参数,该参数确定调用检索的子项子集。

一旦掌握了每个孩子的数据,就可以很容易地通过它们来完成他们的测量。