UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

45 lines (44 loc) 2.34 kB
import { SourceLocation } from '../../util/range'; import { type LintingResult, LintingResultCertainty } from '../linter-format'; import type { FlowrSearchElement, FlowrSearchElements } from '../../search/flowr-search'; import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate'; import type { MergeableRecord } from '../../util/objects'; import type { DataflowInformation } from '../../dataflow/info'; import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info'; import type { ReadonlyFlowrAnalysisProvider } from '../../project/flowr-analyzer'; import { Ternary } from '../../util/logic'; export interface FunctionsResult extends LintingResult { function: string; loc: SourceLocation; } export interface FunctionsMetadata extends MergeableRecord { totalCalls: number; totalFunctionDefinitions: number; } export interface FunctionsToDetectConfig extends MergeableRecord { /** * The list of function names that should be marked in the given context. */ fns: readonly string[]; } /** * This helper object collects utility functions used to create linting rules that search for specific functions. */ export declare const functionFinderUtil: { createSearch: (functions: readonly string[]) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter", "with", "filter"], ParentInformation, Promise<FlowrSearchElements<ParentInformation, [] | FlowrSearchElement<ParentInformation>[]>>>; processSearchResult: <T extends FlowrSearchElement<ParentInformation>[]>(elements: FlowrSearchElements<ParentInformation, T>, _config: unknown, _data: unknown, refineSearch?: (elements: T) => (T[number] & { certainty?: LintingResultCertainty; })[]) => { results: FunctionsResult[]; '.meta': FunctionsMetadata; }; prettyPrint: (functionType: string) => { query: (result: FunctionsResult) => string; full: (result: FunctionsResult) => string; }; requireArgumentValue(element: FlowrSearchElement<ParentInformation>, pool: readonly FunctionInfo[], data: { normalize: NormalizedAst; dataflow: DataflowInformation; analyzer: ReadonlyFlowrAnalysisProvider; }, requireValue: RegExp | string | undefined): Ternary; };