首先sonar分析的质量数据维度明细在metric表中:
图中很关键的数据:覆盖率,新增覆盖率;代码行覆盖率,代码行新增覆盖率
覆盖率是字节码的比值,代码覆盖率是代码行层面的统计,所以一般代码行覆盖率一般>=覆盖率,因为一行可能涉及很多字节码,走到其中一个字节码则即覆盖
其他存储的质量数据维度字段:
一共是143个质量数据维度
所有的project 分析的质量数据在project_measures这个表
去获取某个peoject质量数据根据analysis_uuid,因为project_measures这个表中有analysis_uuid作为一个关键属性
那么关键问题来了,如何获取analysis_uuid?这个是关键数据,根据一个sonar api get请求
http://10.37.124.178:9000/api/ce/task?id=AWMF_byVw6x9hRrwyOth
这个请求获取的结果:
{"task":{"id":"AWMF_byVw6x9hRrwyOth","type":"REPORT","componentId":"AWKoGAC77Uto1y5a2U8f","componentKey":"com.suning.plppss:plppss-pom:1.1.1","componentName":"plppss-pom 1.1.1","componentQualifier":"TRK","analysisId":"AWMF_cKp1R9XW-B8x9JM","status":"SUCCESS","submittedAt":"2018-04-27T15:25:05+0800","submitterLogin":"admin","startedAt":"2018-04-27T15:25:05+0800","executedAt":"2018-04-27T15:25:41+0800","executionTimeMs":35857,"logs":false,"hasScannerContext":true}}
id=AWMF_byVw6x9hRrwyOth 这个参数是ce后台分析的key
搜素如下展示
---------------------------------------------------------------------------------------------------------------
发现一个问题:
就是
就是图中的新覆盖率和新代码覆盖率是metic数据表中的 16 和 92
并不是36,43
这个问题是sonar在取数据的时候,取错了数值,16,92 是注释率
如果将接口
http://10.37.124.178:9000/api/ce/task?id=AWMF_byVw6x9hRrwyOth
返回的analysis_uuid和component_uuid 带入project_measures查询
select value, metric_id from project_measures where analysis_uuid='AWMF0uFl1R9XW-B8wrv-' and component_uuid='AWH6vkHd7Uto1y5a1861'
没有返回新增覆盖率,都是空,只有16 数值是18.7
所以从这证明sonar取值有问题。