@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
48 lines (47 loc) • 3.19 kB
TypeScript
import type { BaseQueryFormat, BaseQueryResult } from '../../base-query-format';
import type { PipelineOutput } from '../../../core/steps/pipeline/pipeline';
import type { DEFAULT_DATAFLOW_PIPELINE, DEFAULT_SLICE_WITHOUT_RECONSTRUCT_PIPELINE, DEFAULT_SLICING_PIPELINE } from '../../../core/steps/pipeline/default-pipelines';
import type { SlicingCriteria } from '../../../slicing/criterion/parse';
import type { ParsedQueryLine } from '../../query';
import Joi from 'joi';
import { executeStaticSliceQuery } from './static-slice-query-executor';
import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
import type { ReplOutput } from '../../../cli/repl/commands/repl-main';
import type { FlowrConfig } from '../../../config';
import { criteriaQueryCompleter } from '../../../cli/repl/parser/slice-query-parser';
import { type SliceQueryOptions } from '../slice-query-options';
import { SliceDirection } from '../../../util/slice-direction';
/** Calculates and returns the static backward or forward slice from the given criteria */
export interface StaticSliceQuery extends BaseQueryFormat, SliceQueryOptions {
readonly type: 'static-slice';
/** The slicing criteria to use */
readonly criteria: SlicingCriteria;
/** The direction to slice in. Defaults to backward slicing if unset. */
readonly direction?: SliceDirection;
}
export interface StaticSliceQueryResult extends BaseQueryResult {
/**
* only contains the results of the slice steps to not repeat ourselves, this does not contain the reconstruction
* if you set the {@link SliceQuery#noReconstruction|noReconstruction} flag.
*
* The keys are serialized versions of the used queries (i.e., the result of `JSON.stringify`).
* This implies that multiple slice queries with the same query configuration will _not_ be re-executed.
*/
results: Record<string, (Omit<PipelineOutput<typeof DEFAULT_SLICING_PIPELINE>, keyof PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>> | Omit<PipelineOutput<typeof DEFAULT_SLICE_WITHOUT_RECONSTRUCT_PIPELINE>, keyof PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>>)
/** the packages the slice calls into, only set with {@link SliceQueryOptions#reportPackages} */
& {
packages?: readonly string[];
}>;
}
declare function sliceQueryLineParser(output: ReplOutput, line: readonly string[], _config: FlowrConfig): ParsedQueryLine<'static-slice'>;
export declare const StaticSliceQueryDefinition: {
readonly title: "Static Slice Query";
readonly executor: typeof executeStaticSliceQuery;
readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, _analyzer: import("../../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../../r-bridge/parser").KnownParser>, queryResults: BaseQueryResult, result: string[]) => true;
readonly fromLine: typeof sliceQueryLineParser;
readonly completer: typeof criteriaQueryCompleter;
readonly syntax: "@static-slice (<crit>;...)[fiIcB] <code | file://path>";
readonly schema: Joi.ObjectSchema<any>;
readonly flattenInvolvedNodes: (queryResults: BaseQueryResult) => NodeId[];
};
export {};