Sonar Web api(一)

數(shù)據(jù)庫(kù)定義,但 不建議直接查詢DB,使用Sonar提供的Web_Api,默認(rèn)在SonarQube服務(wù)的/web_api下可以查看到提供的所有API信息,如http://localhost:9000/web_api/api/project_analyses

查詢示例1
查詢示例2


對(duì)應(yīng)的屬性含義參考: https://docs.sonarqube.org/7.6/user-guide/metric-definitions/

數(shù)據(jù)來(lái)源方法:

  1. 獲取項(xiàng)目總數(shù):

http://example.sonar.com/api/components/search_projects?pageIndex=2&ps=500

  1. 獲取最近一次的分析結(jié)果時(shí)間:

API: /api/components/search_projects
Para:
ps? #大小,最大500
f? #
example:
http://example.sonar.com/api/components/search_projects?ps=50&f=analysisDate
result:

{
    "paging":{
        "pageIndex":1,
        "pageSize":50,
        "total":2337
    },
    "organizations":[

    ],
    "components":Array[50],
    "facets":[
    ]
}

# 其中components中包含項(xiàng)目name 和時(shí)間戳,如
{
    "organization":"default-organization",
    "id":"AW0j4CH4yaNpfFfxGPl2",
    "key":"projectGroup1:projectNameExample",
    "name":"projectGroup1:projectNameExample",
    "isFavorite":false,
    "analysisDate":"2019-11-27T20:37:05+0800",
    "tags":[],
    "visibility":"public"
}
  1. 根據(jù)component,查詢不同的metrics:
    API: /api/measures/search
    Para:
    projectKeys? # 逗號(hào)分隔多個(gè)項(xiàng)目
    metricKeys? # 查詢的各個(gè)標(biāo)準(zhǔn)
    example:
    http://example.sonar.com/api/measures/search?projectKeys=projectGroup1:projectNameExample&metricKeys=alert_status,bugs,reliability_rating,vulnerabilities,security_rating,code_smells,sqale_rating,duplicated_lines_density,coverage,ncloc,ncloc_language_distribution
    result:
{
    "measures":[
        {
            "metric":"alert_status",
            "value":"OK",
            "component":"projectGroup1:projectNameExample"
        },
        {
            "metric":"bugs",
            "value":"6",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        },
        {
            "metric":"code_smells",
            "value":"185",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        },
        {
            "metric":"coverage",
            "value":"0.0",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        },
        {
            "metric":"duplicated_lines_density",
            "value":"64.6",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        },
        {
            "metric":"ncloc",
            "value":"14566",
            "component":"projectGroup1:projectNameExample"
        },
        {
            "metric":"ncloc_language_distribution",
            "value":"java=4756;js=9582;web=228",
            "component":"projectGroup1:projectNameExample"
        },
        {
            "metric":"reliability_rating",
            "value":"3.0",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        },
        {
            "metric":"security_rating",
            "value":"2.0",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        },
        {
            "metric":"sqale_rating",
            "value":"1.0",
            "component":"projectGroup1:projectNameExample",
            "bestValue":true
        },
        {
            "metric":"vulnerabilities",
            "value":"27",
            "component":"projectGroup1:projectNameExample",
            "bestValue":false
        }
    ]
} 
  1. 查詢?cè)隽績(jī)?nèi)容——

項(xiàng)目新增的內(nèi)容:
http://example.sonar.com/api/measures/component?additionalFields=metrics%2Cperiods&component=projectGroup1%3AprojectNameExample&metricKeys=alert_status%2Cquality_gate_details%2Cbugs%2Cnew_bugs%2Creliability_rating%2Cnew_reliability_rating%2Cvulnerabilities%2Cnew_vulnerabilities%2Csecurity_rating%2Cnew_security_rating%2Ccode_smells%2Cnew_code_smells%2Csqale_rating%2Cnew_maintainability_rating%2Csqale_index%2Cnew_technical_debt%2Ccoverage%2Cnew_coverage%2Cnew_lines_to_cover%2Ctests%2Cduplicated_lines_density%2Cnew_duplicated_lines_density%2Cduplicated_blocks%2Cncloc%2Cncloc_language_distribution%2Cprojects%2Cnew_lines


接口調(diào)用可以使用Basic的認(rèn)證方式:參考

  • Use token
  • curl -u admin:SuPeRsEcReT "https://sonar.mydomain.com/api/resources?resource=com.mydomain.project:MY&metrics=ncloc&format=json"
  • curl -u THIS_IS_MY_TOKEN: https://sonarqube.com/api/user_tokens/search
  • note that the colon after the token is required in curl to set an empty password

URL 轉(zhuǎn)換

在線JSON解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容