对于使用该指标与其他工具,如何获得项目中按认知复杂度排序的前500个文件(使用REST API)?
在当前的SonarQube上(8.2,但根据文档,这也可以在早期版本中使用),并且假设你的实例是在以下情况下使用的。localhost:9000
而项目的名称是 project1
,这个bash脚本 curl
的SonarQube为前500名的文件及其认知复杂度值,按认知复杂度排序,然后漂亮的打印出来,用 jq
,并将其显示在 less
:
#!/bin/bash
curl \
"localhost:9000"\
"/api/measures/component_tree?"\
"component=project1&"\
"strategy=leaves&"\
"metricKeys=cognitive_complexity&"\
"s=metric&"\
"metricSort=cognitive_complexity&"\
"asc=false&"\
"ps=500" \
| jq "[.components[] | {path: .path, cognitive_complexity: .measures[0].value}]" \
| less
上面的脚本产生这样的输出。
[
{
"path": "desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java",
"cognitive_complexity": "319"
}
{
"path": "desktop/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java",
"cognitive_complexity": "304"
}
{
"path": "p2p/src/main/java/bisq/network/p2p/network/Connection.java",
"cognitive_complexity": "228"
}
{
"path": "desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java",
"cognitive_complexity": "225"
}
{
"path": "desktop/src/main/java/bisq/desktop/util/GUIUtil.java",
"cognitive_complexity": "192"
}
...