UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

59 lines (58 loc) 3.46 kB
import { type LintingResult, LintingRuleCertainty } from '../linter-format'; import type { MergeableRecord } from '../../util/objects'; import { SourceLocation } from '../../util/range'; import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info'; import { LintingRuleTag } from '../linter-tags'; export interface FilePathValidityResult extends LintingResult { filePath: string; loc: SourceLocation; } export interface FilePathValidityConfig extends MergeableRecord { /** * The set of functions that should additionally be considered as reading a file path. * Entries in this array use the {@link FunctionInfo} format from the dependencies query. */ additionalReadFunctions: FunctionInfo[]; /** * The set of functions that should additionally be considered as writing to a file path. * Entries in this array use the {@link FunctionInfo} format from the dependencies query. */ additionalWriteFunctions: FunctionInfo[]; /** * Whether unknown file paths should be included as linting results. */ includeUnknown: boolean; } export interface FilePathValidityMetadata extends MergeableRecord { totalReads: number; totalUnknown: number; totalWritesBeforeAlways: number; totalValid: number; } export declare const FILE_PATH_VALIDITY: { readonly createSearch: (config: FilePathValidityConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"from-query", ["with"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>; readonly processSearchResult: (elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, config: FilePathValidityConfig, data: { normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst; dataflow: import("../../dataflow/info").DataflowInformation; cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation; analyzer: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider; }) => { results: FilePathValidityResult[]; ".meta": FilePathValidityMetadata; }; readonly info: { readonly name: "File Path Validity"; readonly description: "Checks whether file paths used in read and write operations are valid and point to existing files."; readonly certainty: LintingRuleCertainty.BestEffort; readonly tags: readonly [LintingRuleTag.Robustness, LintingRuleTag.Reproducibility, LintingRuleTag.Bug]; readonly defaultConfig: { readonly additionalReadFunctions: readonly []; readonly additionalWriteFunctions: readonly []; readonly includeUnknown: false; }; }; readonly prettyPrint: { readonly query: (result: FilePathValidityResult) => string; readonly full: (result: FilePathValidityResult) => string; }; };