datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-02-03-002-04-api.md

12 KiB
Raw Permalink Blame History

API 文档 - 代码覆盖率功能

元数据

  • 需求编号002-04
  • 需求名称:代码覆盖率
  • 创建时间2026-02-03
  • 创建人AI Assistant
  • 版本号v1.0.0
  • 状态:已完成

API 概述

代码覆盖率 API 提供 Salesforce Apex 代码覆盖率的查询和统计功能。通过本 API可以查询代码覆盖率列表、查看代码覆盖率详情、统计总体代码覆盖率、按类型统计代码覆盖率等。本 API 复用 002-03 测试执行功能的数据库表,通过独立的 Service 层提供代码覆盖率相关的查询和统计能力。

接口列表

接口 1查询代码覆盖率列表

功能描述:查询代码覆盖率列表,支持多条件筛选、分页查询、覆盖率范围筛选。

请求方式GET

请求路径/api/apex/coverage

请求参数

参数名 类型 必填 说明
testResultId Long 测试结果 ID筛选指定测试结果的代码覆盖率
name String 类/触发器名称,支持模糊查询
namespace String 命名空间,支持模糊查询
type String 类型可选值Class、Trigger
minCoverage Double 最小覆盖率0-100在内存中筛选
maxCoverage Double 最大覆盖率0-100在内存中筛选
pageNum Integer 页码,默认 1
pageSize Integer 每页大小,默认 10
orderByColumn String 排序字段可选值createTime、coveragePercent
isAsc String 是否升序可选值asc、desc默认 desc

响应参数

参数名 类型 说明
code Integer 状态码200 成功,其他失败)
msg String 提示信息
rows Array 代码覆盖率列表
rows[].id Long 覆盖率记录 ID
rows[].testResultId Long 测试结果 ID
rows[].name String 类/触发器名称
rows[].type String 类型Class/Trigger
rows[].namespace String 命名空间
rows[].numLocations Integer 总位置数
rows[].numLocationsNotCovered Integer 未覆盖的位置数
rows[].coveragePercent Double 覆盖率百分比0-100
rows[].createTime String 创建时间yyyy-MM-dd HH:mm:ss
total Long 总记录数

成功示例

{
  "code": 200,
  "msg": "查询成功",
  "rows": [
    {
      "id": 1,
      "testResultId": 100,
      "name": "AccountTrigger",
      "type": "Trigger",
      "namespace": "",
      "numLocations": 50,
      "numLocationsNotCovered": 10,
      "coveragePercent": 80.00,
      "createTime": "2026-02-03 10:30:00"
    },
    {
      "id": 2,
      "testResultId": 100,
      "name": "AccountService",
      "type": "Class",
      "namespace": "",
      "numLocations": 100,
      "numLocationsNotCovered": 20,
      "coveragePercent": 80.00,
      "createTime": "2026-02-03 10:30:00"
    }
  ],
  "total": 2
}

失败示例

{
  "code": 500,
  "msg": "查询代码覆盖率列表失败:数据库访问异常"
}

权限要求apex:coverage:query


接口 2查询代码覆盖率详情

功能描述:根据 ID 查询单条代码覆盖率记录的详细信息。

请求方式GET

请求路径/api/apex/coverage/{id}

路径参数

参数名 类型 必填 说明
id Long 覆盖率记录 ID

响应参数

参数名 类型 说明
code Integer 状态码200 成功,其他失败)
msg String 提示信息
data Object 代码覆盖率详情
data.id Long 覆盖率记录 ID
data.testResultId Long 测试结果 ID
data.name String 类/触发器名称
data.type String 类型Class/Trigger
data.namespace String 命名空间
data.numLocations Integer 总位置数
data.numLocationsNotCovered Integer 未覆盖的位置数
data.coveragePercent Double 覆盖率百分比0-100
data.createTime String 创建时间yyyy-MM-dd HH:mm:ss

成功示例

{
  "code": 200,
  "msg": "查询成功",
  "data": {
    "id": 1,
    "testResultId": 100,
    "name": "AccountTrigger",
    "type": "Trigger",
    "namespace": "",
    "numLocations": 50,
    "numLocationsNotCovered": 10,
    "coveragePercent": 80.00,
    "createTime": "2026-02-03 10:30:00"
  }
}

失败示例

{
  "code": 404,
  "msg": "代码覆盖率记录不存在"
}

权限要求apex:coverage:query


接口 3查询总体代码覆盖率

功能描述:查询总体代码覆盖率统计,包括总体覆盖率、类覆盖率、触发器覆盖率、总类数、总触发器数等。

请求方式GET

请求路径/api/apex/coverage/total

请求参数

参数名 类型 必填 说明
testResultId Long 测试结果 ID统计指定测试结果的代码覆盖率不传则统计所有数据

响应参数

参数名 类型 说明
code Integer 状态码200 成功,其他失败)
msg String 提示信息
data Object 总体覆盖率统计
data.testResultId Long 测试结果 ID
data.totalCoverage Double 总体覆盖率0-100
data.totalClasses Integer 总类数
data.totalTriggers Integer 总触发器数
data.totalLocations Integer 总位置数
data.totalNotCovered Integer 未覆盖位置数
data.coveredLocations Integer 已覆盖位置数
data.classCoverage Double 类覆盖率0-100
data.triggerCoverage Double 触发器覆盖率0-100
data.testTime String 测试时间yyyy-MM-dd HH:mm:ss

成功示例

{
  "code": 200,
  "msg": "查询成功",
  "data": {
    "testResultId": 100,
    "totalCoverage": 82.50,
    "totalClasses": 10,
    "totalTriggers": 5,
    "totalLocations": 800,
    "totalNotCovered": 140,
    "coveredLocations": 660,
    "classCoverage": 85.00,
    "triggerCoverage": 78.00,
    "testTime": "2026-02-03 10:30:00"
  }
}

失败示例

{
  "code": 500,
  "msg": "查询总体代码覆盖率失败:数据库访问异常"
}

权限要求apex:coverage:query


接口 4按类型统计代码覆盖率

功能描述:按 Class/Trigger 类型分别统计代码覆盖率,返回每种类型的覆盖率、总位置数、未覆盖位置数等。

请求方式GET

请求路径/api/apex/coverage/summary

请求参数

参数名 类型 必填 说明
testResultId Long 测试结果 ID统计指定测试结果的代码覆盖率不传则统计所有数据

响应参数

参数名 类型 说明
code Integer 状态码200 成功,其他失败)
msg String 提示信息
data Object 按类型统计结果
data.testResultId Long 测试结果 ID
data.classSummary Object 类统计信息
data.classSummary.type String 类型Class
data.classSummary.count Integer 类数量
data.classSummary.totalLocations Integer 总位置数
data.classSummary.notCovered Integer 未覆盖位置数
data.classSummary.coveragePercent Double 覆盖率0-100
data.triggerSummary Object 触发器统计信息
data.triggerSummary.type String 类型Trigger
data.triggerSummary.count Integer 触发器数量
data.triggerSummary.totalLocations Integer 总位置数
data.triggerSummary.notCovered Integer 未覆盖位置数
data.triggerSummary.coveragePercent Double 覆盖率0-100

成功示例

{
  "code": 200,
  "msg": "查询成功",
  "data": {
    "testResultId": 100,
    "classSummary": {
      "type": "Class",
      "count": 10,
      "totalLocations": 600,
      "notCovered": 90,
      "coveragePercent": 85.00
    },
    "triggerSummary": {
      "type": "Trigger",
      "count": 5,
      "totalLocations": 200,
      "notCovered": 50,
      "coveragePercent": 75.00
    }
  }
}

失败示例

{
  "code": 500,
  "msg": "按类型统计代码覆盖率失败:数据库访问异常"
}

权限要求apex:coverage:query


错误码

错误码 说明 解决方案
200 成功 -
401 未授权 检查用户是否已登录
403 禁止访问 检查用户是否具有 apex:coverage:query 权限
404 资源不存在 检查请求的资源 ID 是否正确
500 服务器内部错误 查看服务器日志,联系管理员
1001 参数错误 检查请求参数是否符合要求
1002 无效的测试结果 ID 检查测试结果 ID 是否正确
1003 无效的覆盖率 ID 检查覆盖率 ID 是否正确
1004 无效的覆盖率类型 覆盖率类型必须是 "Class" 或 "Trigger"
1005 无效的覆盖率值 覆盖率值必须在 0 到 100 之间
1006 查询失败 数据库查询失败,请联系管理员
1007 数据访问失败 数据库访问失败,请联系管理员

覆盖率计算说明

单个类/触发器覆盖率

coveragePercent = (1 - numLocationsNotCovered / numLocations) * 100

总体覆盖率

totalCoverage = (1 - totalNotCovered / totalLocations) * 100

类覆盖率

classCoverage = (1 - classNotCovered / classTotalLocations) * 100

触发器覆盖率

triggerCoverage = (1 - triggerNotCovered / triggerTotalLocations) * 100

计算规则

  • 保留两位小数(四舍五入)
  • 除零保护:当总位置数为 0 时,返回 0.0

使用示例

示例 1查询所有代码覆盖率

curl -X GET "http://localhost:8080/api/apex/coverage?pageNum=1&pageSize=10" \
  -H "Authorization: Bearer {token}"

示例 2查询指定测试结果的代码覆盖率

curl -X GET "http://localhost:8080/api/apex/coverage?testResultId=100&pageNum=1&pageSize=10" \
  -H "Authorization: Bearer {token}"

示例 3查询覆盖率在 70% 到 90% 之间的代码

curl -X GET "http://localhost:8080/api/apex/coverage?minCoverage=70&maxCoverage=90&pageNum=1&pageSize=10" \
  -H "Authorization: Bearer {token}"

示例 4查询代码覆盖率详情

curl -X GET "http://localhost:8080/api/apex/coverage/1" \
  -H "Authorization: Bearer {token}"

示例 5查询总体代码覆盖率

curl -X GET "http://localhost:8080/api/apex/coverage/total?testResultId=100" \
  -H "Authorization: Bearer {token}"

示例 6按类型统计代码覆盖率

curl -X GET "http://localhost:8080/api/apex/coverage/summary?testResultId=100" \
  -H "Authorization: Bearer {token}"

注意事项

  1. 数据依赖代码覆盖率数据由测试执行功能002-03生成本 API 只提供查询和统计功能。

  2. 权限控制:所有接口需要 apex:coverage:query 权限。

  3. 覆盖率范围筛选由于覆盖率是计算字段范围筛选minCoverage、maxCoverage在内存中进行对于大数据量可能影响性能。

  4. 数据一致性:本功能复用 002-03 的 datai_apex_code_coverage 表,数据格式和字段含义与 002-03 保持一致。

  5. 分页查询:使用 PageHelper 进行物理分页,默认每页 10 条记录。

  6. 排序支持按创建时间createTime和覆盖率coveragePercent排序。

相关文档