UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

78 lines (77 loc) 2.94 kB
import type { SummarizedMeasurement } from '../../util/summarizer'; import type { CommonSlicerMeasurements, PerSliceMeasurements, SlicerStats, SlicerStatsDataflow, SlicerStatsInput } from '../stats/stats'; export interface SliceSizeCollection { lines: number[]; nonEmptyLines: number[]; characters: number[]; charactersNoComments: number[]; nonWhitespaceCharacters: number[]; nonWhitespaceCharactersNoComments: number[]; /** like library statements during reconstruction */ linesWithAutoSelected: number[]; dataflowNodes: number[]; tokens: number[]; tokensNoComments: number[]; normalizedTokens: number[]; normalizedTokensNoComments: number[]; } /** * @see SlicerStats * @see summarizeSlicerStats */ export type SummarizedSlicerStats = { perSliceMeasurements: SummarizedPerSliceStats; } & Omit<SlicerStats, 'perSliceMeasurements'>; export interface Reduction<T = number> { numberOfLines: T; numberOfLinesNoAutoSelection: T; numberOfCharacters: T; numberOfNonWhitespaceCharacters: T; numberOfRTokens: T; numberOfNormalizedTokens: T; numberOfDataflowNodes: T; } export interface TimePerToken<T = SummarizedMeasurement> { raw: T; normalized: T; } export interface SummarizedPerSliceStats { /** number of total slicing calls */ numberOfSlices: number; /** statistics on the used slicing criteria (number of ids within criteria etc.) */ sliceCriteriaSizes: SummarizedMeasurement; measurements: Map<PerSliceMeasurements, SummarizedMeasurement>; sliceTimePerToken: TimePerToken; reconstructTimePerToken: TimePerToken; totalPerSliceTimePerToken: TimePerToken; reduction: Reduction<SummarizedMeasurement>; /** reduction, but without taking into account comments and empty lines */ reductionNoFluff: Reduction<SummarizedMeasurement>; failedToRepParse: number; timesHitThreshold: number; sliceSize: { [K in keyof SliceSizeCollection]: SummarizedMeasurement; }; } export interface UltimateSlicerStats { totalRequests: number; totalSlices: number; commonMeasurements: Map<CommonSlicerMeasurements, SummarizedMeasurement>; perSliceMeasurements: Map<PerSliceMeasurements, SummarizedMeasurement>; retrieveTimePerToken: TimePerToken; normalizeTimePerToken: TimePerToken; dataflowTimePerToken: TimePerToken; totalCommonTimePerToken: TimePerToken; sliceTimePerToken: TimePerToken; reconstructTimePerToken: TimePerToken; totalPerSliceTimePerToken: TimePerToken; /** sum */ failedToRepParse: number; /** sum */ timesHitThreshold: number; reduction: Reduction<SummarizedMeasurement>; /** reduction, but without taking into account comments and empty lines */ reductionNoFluff: Reduction<SummarizedMeasurement>; input: SlicerStatsInput<SummarizedMeasurement>; dataflow: SlicerStatsDataflow<SummarizedMeasurement>; }