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

6.1 KiB
Raw Permalink Blame History

变更日志 - 代码覆盖率功能

元数据

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

变更概述

实现 Salesforce Apex 代码覆盖率查询和统计功能,包括代码覆盖率结果查询、总体覆盖率统计、按类型统计等功能。本功能复用 002-03 测试执行功能的数据库表,通过独立的 Service 层提供代码覆盖率相关的查询和统计能力。

变更内容

新增功能

  • 实现代码覆盖率列表查询功能,包括:
    • 支持按测试结果 ID、类/触发器名称、命名空间、类型筛选
    • 支持按覆盖率范围筛选(最小覆盖率、最大覆盖率)
    • 支持分页查询
    • 支持按创建时间排序
  • 实现代码覆盖率详情查询功能,包括:
    • 根据 ID 查询单条覆盖率记录
    • 返回完整的覆盖率信息(名称、类型、命名空间、位置数、覆盖率等)
  • 实现总体代码覆盖率统计功能,包括:
    • 统计总体代码覆盖率
    • 统计类覆盖率
    • 统计触发器覆盖率
    • 统计总类数、总触发器数
    • 统计总位置数、未覆盖位置数、已覆盖位置数
  • 实现按类型统计代码覆盖率功能,包括:
    • 按 Class/Trigger 类型分别统计
    • 返回每种类型的覆盖率、总位置数、未覆盖位置数
    • 支持按测试结果 ID 筛选

新增文档

新增代码文件

  • datai-salesforce-apex/src/main/java/com/datai/apex/controller/ApexCodeCoverageController.java
    • 代码覆盖率控制器
    • 提供 4 个 REST API 接口
    • 接口路径:/api/apex/coverage
  • datai-salesforce-apex/src/main/java/com/datai/apex/service/IApexCodeCoverageService.java
    • 代码覆盖率服务接口
    • 定义 4 个服务方法
  • datai-salesforce-apex/src/main/java/com/datai/apex/service/impl/ApexCodeCoverageServiceImpl.java
    • 代码覆盖率服务实现
    • 实现覆盖率查询和统计逻辑
    • 实现覆盖率计算算法
  • datai-salesforce-apex/src/main/java/com/datai/apex/model/dto/QueryCoverageSummaryDto.java
    • 查询覆盖率统计请求 DTO
  • datai-salesforce-apex/src/main/java/com/datai/apex/model/vo/CodeCoverageSummaryVo.java
    • 代码覆盖率统计 VO
  • datai-salesforce-apex/src/main/java/com/datai/apex/model/vo/CoverageTypeSummaryVo.java
    • 按类型统计 VO
  • datai-salesforce-apex/src/main/java/com/datai/apex/model/vo/CoverageSummaryResponseVo.java
    • 覆盖率统计响应 VO

复用的代码文件

  • datai-salesforce-apex/src/main/java/com/datai/apex/model/dto/QueryCodeCoverageDto.java
    • 查询代码覆盖率请求 DTO来自 002-03
  • datai-salesforce-apex/src/main/java/com/datai/apex/model/vo/CodeCoverageResultVo.java
    • 代码覆盖率结果 VO来自 002-03
  • datai-salesforce-apex/src/main/java/com/datai/apex/mapper/DataiApexCodeCoverageMapper.java
    • 代码覆盖率数据访问层(来自 002-03
  • datai-salesforce-apex/src/main/java/com/datai/apex/domain/DataiApexCodeCoverage.java
    • 代码覆盖率实体类(来自 002-03

影响范围

模块级别

  • datai-salesforce-apex - Apex API 模块

功能级别

  • 代码覆盖率查询功能
  • 代码覆盖率统计功能
  • 测试执行功能(关联,复用其数据)

文件级别

  • 新增 7 个代码文件
  • 复用 4 个现有代码文件
  • 新增 5 个文档文件

数据库表

  • 复用 datai_apex_code_coverage 表(来自 002-03
  • 不涉及新的数据库变更

API 接口

  • 新增 4 个 REST API 接口:
    • GET /api/apex/coverage - 查询代码覆盖率列表
    • GET /api/apex/coverage/{id} - 查询代码覆盖率详情
    • GET /api/apex/coverage/total - 查询总体代码覆盖率
    • GET /api/apex/coverage/summary - 按类型统计代码覆盖率

权限控制

  • 新增权限标识:apex:coverage:query
  • 所有接口需要 apex:coverage:query 权限

覆盖率计算算法

单个类/触发器覆盖率

coveragePercent = (1 - numLocationsNotCovered / numLocations) * 100

总体覆盖率

totalCoverage = (1 - totalNotCovered / totalLocations) * 100

类覆盖率

classCoverage = (1 - classNotCovered / classTotalLocations) * 100

触发器覆盖率

triggerCoverage = (1 - triggerNotCovered / triggerTotalLocations) * 100

计算规则

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

相关文档

需求与方案

开发过程

关联需求

注意事项

  1. 数据库表复用:本功能复用 002-03 的 datai_apex_code_coverage 表,不创建新表
  2. 数据依赖:代码覆盖率数据由测试执行功能生成,本功能只提供查询和统计
  3. 权限分离:代码覆盖率权限与测试执行权限分离,使用独立的 apex:coverage:query 权限标识
  4. 覆盖率范围筛选:由于覆盖率是计算字段,范围筛选在内存中进行
  5. 性能优化:使用数据库索引和 PageHelper 分页查询优化性能