我正在尝试使用“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'?
答案 0 :(得分:2)
使用components服务从项目开始迭代树(或树中的子树),并将sonar.projectKey
值提供给baseComponentKey
参数。请特别注意strategy
参数,该参数确定调用检索的子项子集。
一旦掌握了每个孩子的数据,就可以很容易地通过它们来完成他们的测量。