可以通过接口:
http://my.sonar.com/drilldown/measures/My-Project-Name?metric=line_coverage
官方说这个接口也是可以获取的,但是尝试返回404
http://my.sonar.com/api/resources?resource=com.suning.plppss:plppss-pom:1.1.1&metrics=ncloc,conditions_to_cover,uncovered_conditions,lines_to_cover,uncovered_lines,coverage,new_coverage,line_coverage,new_line_coverage,branch_coverage,it_conditions_to_cover,it_uncovered_conditions,it_lines_to_cover,it_uncovered_lines,it_coverage,it_line_coverage,it_branch_coverage,overall_conditions_to_cover,overall_uncovered_conditions,overall_lines_to_cover,overall_uncovered_lines,overall_coverage,overall_line_coverage,overall_branch_coverage
返回:
<resources> <resource> <id>8393640</id> <key>com.suning.plppss:plppss-pom:1.1.1</key> <name>plppss-pom 1.1.1</name> <lname>plppss-pom 1.1.1</lname> <branch>1.1.1</branch> <scope>PRJ</scope> <qualifier>TRK</qualifier> <version>4.5.1</version> <date>2018-05-02T15:16:41+0800</date> <creationDate>2018-04-09T09:49:28+0800</creationDate> <msr> <key>coverage</key> <val>15.5</val> <frmt_val>15.5%</frmt_val> </msr> <msr> <key>uncovered_lines</key> <val>31866.0</val> <frmt_val>31,866</frmt_val> </msr> <msr> <key>conditions_to_cover</key> <val>11293.0</val> <frmt_val>11,293</frmt_val> </msr> <msr> <key>uncovered_conditions</key> <val>10064.0</val> <frmt_val>10,064</frmt_val> </msr> <msr> <key>lines_to_cover</key> <val>38301.0</val> <frmt_val>38,301</frmt_val> </msr> <msr> <key>ncloc</key> <val>105198.0</val> <frmt_val>105,198</frmt_val> </msr> <msr> <key>line_coverage</key> <val>16.8</val> <frmt_val>16.8%</frmt_val> </msr> <msr> <key>branch_coverage</key> <val>10.9</val> <frmt_val>10.9%</frmt_val> </msr> </resource> </resources>
但是这个接口没有返回 new_coverage信息
---------------------------------------------------------------------------------------------------------------------------
通过接口
http://my.sonar.com/api/measures/component?componentKey=com.suning.o2oms:o2oms-pom:1.0.0&metricKeys=new_uncovered_conditions,new_uncovered_lines,new_duplicated_blocks,new_lines_to_cover,bugs,files,new_bugs,new_vulnerabilities,new_code_smells,new_duplicated_lines,new_violations,uncovered_conditions,new_branch_coverage,new_coverage,new_lines,new_sqale_debt_ratio,new_maintainability_rating&additionalFields=metrics,periods
返回:
{"component":{"id":"AWMCo0vcw6x9hRrwyONR","key":"com.suning.o2oms:o2oms-pom:1.0.0","name":"o2oms-pom 1.0.0","qualifier":"TRK","measures":[{"metric":"new_uncovered_conditions","periods":[{"index":1,"value":"198"},{"index":2,"value":"0"},{"index":3,"value":"198"}]},{"metric":"new_lines","periods":[{"index":1,"value":"22097"},{"index":2,"value":"39"},{"index":3,"value":"22097"}]},{"metric":"new_uncovered_lines","periods":[{"index":1,"value":"577"},{"index":2,"value":"3"},{"index":3,"value":"577"}]},{"metric":"new_maintainability_rating","periods":[{"index":1,"value":"1.0"},{"index":2,"value":"1.0"},{"index":3,"value":"1.0"}]},{"metric":"new_lines_to_cover","periods":[{"index":1,"value":"1704"},{"index":2,"value":"19"},{"index":3,"value":"1704"}]},{"metric":"files","value":"456","periods":[{"index":1,"value":"1"},{"index":2,"value":"0"},{"index":3,"value":"1"}]},{"metric":"new_violations","periods":[{"index":1,"value":"90"},{"index":2,"value":"3"},{"index":3,"value":"90"}]},{"metric":"bugs","value":"125","periods":[{"index":1,"value":"-49"},{"index":2,"value":"-3"},{"index":3,"value":"-49"}]},{"metric":"new_vulnerabilities","periods":[{"index":1,"value":"0"},{"index":2,"value":"0"},{"index":3,"value":"0"}]},{"metric":"new_bugs","periods":[{"index":1,"value":"14"},{"index":2,"value":"0"},{"index":3,"value":"14"}]},{"metric":"new_duplicated_blocks","periods":[{"index":1,"value":"49"},{"index":2,"value":"0"},{"index":3,"value":"49"}]},{"metric":"new_coverage","periods":[{"index":1,"value":"62.70452358036574"},{"index":2,"value":"85.71428571428571"},{"index":3,"value":"62.70452358036574"}]},{"metric":"new_duplicated_lines","periods":[{"index":1,"value":"150"},{"index":2,"value":"0"},{"index":3,"value":"150"}]},{"metric":"new_code_smells","periods":[{"index":1,"value":"76"},{"index":2,"value":"3"},{"index":3,"value":"76"}]},{"metric":"new_sqale_debt_ratio","periods":[{"index":1,"value":"0.6193306224585549"},{"index":2,"value":"1.3888888888888888"},{"index":3,"value":"0.6193306224585549"}]},{"metric":"new_branch_coverage","periods":[{"index":1,"value":"47.05882352941177"},{"index":2,"value":"100.0"},{"index":3,"value":"47.05882352941177"}]},{"metric":"uncovered_conditions","value":"1762","periods":[{"index":1,"value":"1474"},{"index":2,"value":"-2"},{"index":3,"value":"1474"}]}]},"metrics":[{"key":"new_lines","name":"Lines on New Code","description":"Non commenting lines on new code","domain":"Size","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false},{"key":"files","name":"Files","description":"Number of files","domain":"Size","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false},{"key":"new_coverage","name":"Coverage on New Code","description":"Coverage of new/changed code","domain":"Coverage","type":"PERCENT","higherValuesAreBetter":true,"qualitative":true,"hidden":false,"custom":false,"decimalScale":1,"bestValue":"100.0","worstValue":"0.0"},{"key":"new_lines_to_cover","name":"Lines to Cover on New Code","description":"Lines to cover on new code","domain":"Coverage","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false},{"key":"new_uncovered_lines","name":"Uncovered Lines on New Code","description":"Uncovered lines on new code","domain":"Coverage","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false,"bestValue":"0"},{"key":"uncovered_conditions","name":"Uncovered Conditions","description":"Uncovered conditions","domain":"Coverage","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_uncovered_conditions","name":"Uncovered Conditions on New Code","description":"Uncovered conditions on new code","domain":"Coverage","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_branch_coverage","name":"Condition Coverage on New Code","description":"Condition coverage of new/changed code","domain":"Coverage","type":"PERCENT","higherValuesAreBetter":true,"qualitative":true,"hidden":false,"custom":false,"decimalScale":1,"bestValue":"100.0","worstValue":"0.0"},{"key":"new_duplicated_lines","name":"Duplicated Lines on New Code","description":"Duplicated Lines on New Code","domain":"Duplications","type":"INT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_duplicated_blocks","name":"Duplicated Blocks on New Code","description":"Duplicated blocks on new code","domain":"Duplications","type":"INT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_violations","name":"New Issues","description":"New issues","domain":"Issues","type":"INT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_code_smells","name":"New Code Smells","description":"New Code Smells","domain":"Maintainability","type":"INT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"0"},{"key":"bugs","name":"Bugs","description":"Bugs","domain":"Reliability","type":"INT","higherValuesAreBetter":false,"qualitative":false,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_bugs","name":"New Bugs","description":"New Bugs","domain":"Reliability","type":"INT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_vulnerabilities","name":"New Vulnerabilities","description":"New Vulnerabilities","domain":"Security","type":"INT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"0"},{"key":"new_maintainability_rating","name":"Maintainability Rating on New Code","description":"Maintainability rating on new code","domain":"Maintainability","type":"RATING","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"bestValue":"1.0","worstValue":"5.0"},{"key":"new_sqale_debt_ratio","name":"Technical Debt Ratio on New Code","description":"Technical Debt Ratio of new/changed code.","domain":"Maintainability","type":"PERCENT","higherValuesAreBetter":false,"qualitative":true,"hidden":false,"custom":false,"decimalScale":1,"bestValue":"0.0","worstValue":"100.0"}],"periods":[{"index":1,"mode":"previous_version","date":"2018-04-26T23:48:42+0800"},{"index":2,"mode":"previous_analysis","date":"2018-05-02T15:35:53+0800","parameter":"2018-05-02"},{"index":3,"mode":"days","date":"2018-04-26T23:48:42+0800","parameter":"30"}]}
转化为json:
{ "component": { "id": "AWMCo0vcw6x9hRrwyONR", "key": "com.suning.o2oms:o2oms-pom:1.0.0", "name": "o2oms-pom 1.0.0", "qualifier": "TRK", "measures": [ { "metric": "new_uncovered_conditions", "periods": [ { "index": 1, "value": "198" }, { "index": 2, "value": "0" }, { "index": 3, "value": "198" } ] }, { "metric": "new_lines", "periods": [ { "index": 1, "value": "22097" }, { "index": 2, "value": "39" }, { "index": 3, "value": "22097" } ] }, { "metric": "new_uncovered_lines", "periods": [ { "index": 1, "value": "577" }, { "index": 2, "value": "3" }, { "index": 3, "value": "577" } ] }, { "metric": "new_maintainability_rating", "periods": [ { "index": 1, "value": "1.0" }, { "index": 2, "value": "1.0" }, { "index": 3, "value": "1.0" } ] }, { "metric": "new_lines_to_cover", "periods": [ { "index": 1, "value": "1704" }, { "index": 2, "value": "19" }, { "index": 3, "value": "1704" } ] }, { "metric": "files", "value": "456", "periods": [ { "index": 1, "value": "1" }, { "index": 2, "value": "0" }, { "index": 3, "value": "1" } ] }, { "metric": "new_violations", "periods": [ { "index": 1, "value": "90" }, { "index": 2, "value": "3" }, { "index": 3, "value": "90" } ] }, { "metric": "bugs", "value": "125", "periods": [ { "index": 1, "value": "-49" }, { "index": 2, "value": "-3" }, { "index": 3, "value": "-49" } ] }, { "metric": "new_vulnerabilities", "periods": [ { "index": 1, "value": "0" }, { "index": 2, "value": "0" }, { "index": 3, "value": "0" } ] }, { "metric": "new_bugs", "periods": [ { "index": 1, "value": "14" }, { "index": 2, "value": "0" }, { "index": 3, "value": "14" } ] }, { "metric": "new_duplicated_blocks", "periods": [ { "index": 1, "value": "49" }, { "index": 2, "value": "0" }, { "index": 3, "value": "49" } ] }, { "metric": "new_coverage", "periods": [ { "index": 1, "value": "62.70452358036574" }, { "index": 2, "value": "85.71428571428571" }, { "index": 3, "value": "62.70452358036574" } ] }, { "metric": "new_duplicated_lines", "periods": [ { "index": 1, "value": "150" }, { "index": 2, "value": "0" }, { "index": 3, "value": "150" } ] }, { "metric": "new_code_smells", "periods": [ { "index": 1, "value": "76" }, { "index": 2, "value": "3" }, { "index": 3, "value": "76" } ] }, { "metric": "new_sqale_debt_ratio", "periods": [ { "index": 1, "value": "0.6193306224585549" }, { "index": 2, "value": "1.3888888888888888" }, { "index": 3, "value": "0.6193306224585549" } ] }, { "metric": "new_branch_coverage", "periods": [ { "index": 1, "value": "47.05882352941177" }, { "index": 2, "value": "100.0" }, { "index": 3, "value": "47.05882352941177" } ] }, { "metric": "uncovered_conditions", "value": "1762", "periods": [ { "index": 1, "value": "1474" }, { "index": 2, "value": "-2" }, { "index": 3, "value": "1474" } ] } ] }, "metrics": [ { "key": "new_lines", "name": "Lines on New Code", "description": "Non commenting lines on new code", "domain": "Size", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false }, { "key": "files", "name": "Files", "description": "Number of files", "domain": "Size", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false }, { "key": "new_coverage", "name": "Coverage on New Code", "description": "Coverage of new/changed code", "domain": "Coverage", "type": "PERCENT", "higherValuesAreBetter": true, "qualitative": true, "hidden": false, "custom": false, "decimalScale": 1, "bestValue": "100.0", "worstValue": "0.0" }, { "key": "new_lines_to_cover", "name": "Lines to Cover on New Code", "description": "Lines to cover on new code", "domain": "Coverage", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false }, { "key": "new_uncovered_lines", "name": "Uncovered Lines on New Code", "description": "Uncovered lines on new code", "domain": "Coverage", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "uncovered_conditions", "name": "Uncovered Conditions", "description": "Uncovered conditions", "domain": "Coverage", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_uncovered_conditions", "name": "Uncovered Conditions on New Code", "description": "Uncovered conditions on new code", "domain": "Coverage", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_branch_coverage", "name": "Condition Coverage on New Code", "description": "Condition coverage of new/changed code", "domain": "Coverage", "type": "PERCENT", "higherValuesAreBetter": true, "qualitative": true, "hidden": false, "custom": false, "decimalScale": 1, "bestValue": "100.0", "worstValue": "0.0" }, { "key": "new_duplicated_lines", "name": "Duplicated Lines on New Code", "description": "Duplicated Lines on New Code", "domain": "Duplications", "type": "INT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_duplicated_blocks", "name": "Duplicated Blocks on New Code", "description": "Duplicated blocks on new code", "domain": "Duplications", "type": "INT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_violations", "name": "New Issues", "description": "New issues", "domain": "Issues", "type": "INT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_code_smells", "name": "New Code Smells", "description": "New Code Smells", "domain": "Maintainability", "type": "INT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "bugs", "name": "Bugs", "description": "Bugs", "domain": "Reliability", "type": "INT", "higherValuesAreBetter": false, "qualitative": false, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_bugs", "name": "New Bugs", "description": "New Bugs", "domain": "Reliability", "type": "INT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_vulnerabilities", "name": "New Vulnerabilities", "description": "New Vulnerabilities", "domain": "Security", "type": "INT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "0" }, { "key": "new_maintainability_rating", "name": "Maintainability Rating on New Code", "description": "Maintainability rating on new code", "domain": "Maintainability", "type": "RATING", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "bestValue": "1.0", "worstValue": "5.0" }, { "key": "new_sqale_debt_ratio", "name": "Technical Debt Ratio on New Code", "description": "Technical Debt Ratio of new/changed code.", "domain": "Maintainability", "type": "PERCENT", "higherValuesAreBetter": false, "qualitative": true, "hidden": false, "custom": false, "decimalScale": 1, "bestValue": "0.0", "worstValue": "100.0" } ], "periods": [ { "index": 1, "mode": "previous_version", "date": "2018-04-26T23:48:42+0800" }, { "index": 2, "mode": "previous_analysis", "date": "2018-05-02T15:35:53+0800", "parameter": "2018-05-02" }, { "index": 3, "mode": "days", "date": "2018-04-26T23:48:42+0800", "parameter": "30" } ] }
这个接口返回new_coverage信息,这个接口最后面添加additionalFields=metrics,periods,会返回metric字段信息,和对应的index构建的时间。