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
TypeScript
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;
}