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工程,默認是 : ,這是普通情況.
如果項目有branch分支的話,projectKey默認是 : : .
branch如果集成maven插件,參數是-Dsonar.branch,不過現在是deprecated狀態.
projectKey可以通過傳參數來指定, -Dsonar.projectKey,官方文檔原文是:
The project key that is unique for each project. Allowed characters are: letters, numbers, '-', '_', '.' and ':', with at least one non-digit. When using Maven, it is automatically set to <groupId>:<artifactId>
大致就是說,命名規范和默認情況.
https://docs.sonarqube.org/display/SONAR/Analysis+Parameters <-- 查閱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/componentcomponent 組件key和metricKeys 度量key作為參數,查詢某個項目的度量情況,比如重復度,復雜度,行數統計,例如:
metricKeys=ncloc,complexity,violations

先這么多,之后可能繼續更新.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM