@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
45 lines (44 loc) • 2.34 kB
TypeScript
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;
};