Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 6x 6x 6x 6x 6x 15x 6x 15x 6x 6x 6x 6x 6x 6x 1x | /**
* Builder for IGrammarCoverageReport
* Shared between GrammarCoverageListener and scripts/grammar-coverage.ts
*/
import IGrammarCoverageReport from "./IGrammarCoverageReport";
interface IBuildReportInput {
parserRuleNames: string[];
lexerRuleNames: string[];
parserRuleVisits: Map<string, number>;
lexerRuleVisits: Map<string, number>;
}
/**
* Build a grammar coverage report from raw visit data
*/
function buildGrammarCoverageReport(
input: IBuildReportInput,
): IGrammarCoverageReport {
const totalParserRules = input.parserRuleNames.length;
const totalLexerRules = input.lexerRuleNames.length;
const visitedParserRules = input.parserRuleVisits.size;
const visitedLexerRules = input.lexerRuleVisits.size;
const neverVisitedParserRules = input.parserRuleNames.filter(
(name) => !input.parserRuleVisits.has(name),
);
const neverVisitedLexerRules = input.lexerRuleNames.filter(
(name) => !input.lexerRuleVisits.has(name),
);
const parserCoveragePercentage =
totalParserRules > 0 ? (visitedParserRules / totalParserRules) * 100 : 0;
const lexerCoveragePercentage =
totalLexerRules > 0 ? (visitedLexerRules / totalLexerRules) * 100 : 0;
const combinedTotal = totalParserRules + totalLexerRules;
const combinedVisited = visitedParserRules + visitedLexerRules;
const combinedCoveragePercentage =
combinedTotal > 0 ? (combinedVisited / combinedTotal) * 100 : 0;
return {
totalParserRules,
totalLexerRules,
visitedParserRules,
visitedLexerRules,
neverVisitedParserRules,
neverVisitedLexerRules,
parserRuleVisits: new Map(input.parserRuleVisits),
lexerRuleVisits: new Map(input.lexerRuleVisits),
parserCoveragePercentage,
lexerCoveragePercentage,
combinedCoveragePercentage,
};
}
class GrammarCoverageReportBuilder {
static readonly build = buildGrammarCoverageReport;
}
export default GrammarCoverageReportBuilder;
|