UNPKG

apex-code-coverage-transformer

Version:

Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.

52 lines (51 loc) 2.27 kB
import { CoverageHandler, SonarCoverageObject, CoberturaCoverageObject, CloverCoverageObject, LcovCoverageObject, JaCoCoCoverageObject, IstanbulCoverageObject, JsonSummaryCoverageObject, SimpleCovCoverageObject, OpenCoverCoverageObject } from '../utils/types.js'; /** * Abstract base class for coverage handlers providing common utilities. * Reduces code duplication across different format handlers. */ export declare abstract class BaseHandler implements CoverageHandler { /** * Calculate line coverage metrics from a lines record. * * @param lines - Record of line numbers to hit counts * @returns Coverage metrics including totals and rates */ protected calculateCoverage(lines: Record<string, number>): { totalLines: number; coveredLines: number; uncoveredLines: number; lineRate: number; }; /** * Extract line numbers by coverage status. * * @param lines - Record of line numbers to hit counts * @param covered - True to get covered lines, false for uncovered * @returns Sorted array of line numbers */ protected extractLinesByStatus(lines: Record<string, number>, covered: boolean): number[]; /** * Get covered and uncovered line numbers from a lines record. * * @param lines - Record of line numbers to hit counts * @returns Object with covered and uncovered line arrays */ protected getCoveredAndUncovered(lines: Record<string, number>): { covered: number[]; uncovered: number[]; }; /** * Sort array of objects by their path property. * Handles various path property names (@path, @filename, @name). * * @param items - Array of objects to sort * @returns Sorted array */ protected sortByPath<T extends { '@path'?: string; '@filename'?: string; '@name'?: string; }>(items: T[]): T[]; abstract processFile(filePath: string, fileName: string, lines: Record<string, number>): void; abstract finalize(): SonarCoverageObject | CoberturaCoverageObject | CloverCoverageObject | LcovCoverageObject | JaCoCoCoverageObject | IstanbulCoverageObject | JsonSummaryCoverageObject | SimpleCovCoverageObject | OpenCoverCoverageObject; }