sonarqube7.2版本web api簡析
sonarqube7.2版本web api簡析
本文介紹sonarqube的部分實用Web API,並試圖聯絡實際進行分析,方便整合.以7.2版本為例,下載移步官網.
Web API文件路徑
安裝並部署7.2版本的sonar之後(推薦在linux上安裝),在瀏覽器上開啟sonar,預設是ip:9000埠.
http://{ip}:9000/web_api
即是sonar的api文件. 由於國內資源較少,當時在官網看了半天文件又查了一堆才發現這個預設的路徑.這也是為什麼寫這篇文章,我認為這樣的工具是值得推廣的.
認證api
部分的sonar api功能需要依靠許可權使用,sonar才用的是Basic Auth,就是最普通的認證.
web_api/api/authentication
下可以檢視對應的認證api.
例如:
POST api/authentication/login 引數是login和password
沒有特別說明的話,這裡的login和password都是admin,可以在sonar頁面的最上方Administration裡點進行密碼修改,也可以直接修改config檔案.
如果使用POSTMAN測試介面需要認證的sonar GET介面,可以在postman的認證裡,選basic auth,然後填login和password,再發GET請求就可以了.
重複度api
GET api/duplications/show
例子引數是key=my_project:/src/foo/Bar.php
,使用該介面可以拿某個程式碼檔案的重複度分析,似乎作用不大.後面會講另一個比較有用的.
issues api
頁面在web_api/api/issues
,issues意為問題,告警,github上常見這個單詞,還是建議多熟悉英文.
這裡的api很多是修改和添加註釋等內容,這類api適合自己在sonar之上再封裝一層.
如果只是客戶端讀取sonar的issues資訊,可以使用GET api/issues/search
,這個api的引數非常多,在我看來有幾個好用,然後講解一下.
componentKeys
這是可選引數,意思是元件key,查閱後發現這個key可以代表projectKey,模組的key,單個檔案的key,而且可以用逗號隔開傳入多個.
比如:my_project,my_project1,my_project2
這樣是查了三個工程的issue情況.
這裡講解一下projectKey 的概念:
點進自己的某一個掃描後的專案project,會在右下角發現一個projectKey.如果是maven工程,預設是
severities
問題的等級,如果只需要修改最重要等級的,直接用這個引數去獲取要改的部分吧.好用.
其他引數都寫挺清晰了.
issue 返回json
"paging": {"pageIndex": 1,"pageSize": 100,"total": 1},
這部分其實是第一頁,每頁100個,實際上可以用引數分頁查詢.
issues節點裡是個json陣列,內容比較多,講解幾個引數.
{ "key": "01fc972e-2a3c-433e-bcae-0bd7f88f5123",issue的唯一key "component":"com.github.kevinsawicki:http-request:com.github.kevinsawicki.http.HttpRequest",元件Key,這裡是具體到類的 "project": "com.github.kevinsawicki:http-request",projectKe "rule": "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck",規則 "status": "RESOLVED",解決狀態 "resolution": "FALSE-POSITIVE",是否誤報 "severity": "MINOR",告警等級 "message": "'3' is a magic number.",告警資訊 "line": 81, "hash": "a227e508d6646b55a086ee11d63b21e9", "author": "Developer 1", "effort": "2h1min",解決問題需要的時間 "creationDate": "2013-05-13T17:55:39+0200", "updateDate": "2013-05-13T17:55:39+0200", "tags": [ "bug" ],
之後有個flow節點,這個是和資料流規則相關的.
"flows": [ { "locations": [ { "textRange": { "startLine": 16, "endLine": 16, "startOffset": 0, "endOffset": 30 }, "msg": "Expected position: 5" } ] }, {
提供locations節點,指定具體的行數.照目前這例子看似乎還只是單檔案資料流.
metrics api
metrics,意為度量,在程式碼掃描中,常常對複雜度,cpd重複程式碼等進行分析,這也都算metrics,度量的範疇.
Get information on automatic metrics
獲得自動度量的結果
GET api/metrics/search
這個api可以查詢某個專案的所有度量,應該沒大用處...
measures api
GET api/measures/component
以component
元件key和metricKeys
度量key作為引數,查詢某個專案的度量情況,比如重複度,複雜度,行數統計,例如:
metricKeys=ncloc,complexity,violations
先這麼多,之後可能繼續更新.