@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
59 lines (58 loc) • 3.48 kB
TypeScript
import { type LintingResult, LintingRuleCertainty } from '../linter-format';
import type { MergeableRecord } from '../../util/objects';
import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
import { LintingRuleTag } from '../linter-tags';
export interface FilePathValidityResult extends LintingResult {
filePath: string;
}
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;
/**
* Whether URLs should be validated by checking the endpoint exists.
* When `false` (default), URLs are silently ignored.
* When `true`, an HTTP HEAD request is made and the URL is reported if unreachable.
*/
checkUrls: 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: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>) => Promise<{
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, LintingRuleTag.QuickFix];
readonly defaultConfig: {
readonly additionalReadFunctions: readonly [];
readonly additionalWriteFunctions: readonly [];
readonly includeUnknown: false;
readonly checkUrls: false;
};
};
readonly prettyPrint: {
readonly query: (result: FilePathValidityResult) => string;
readonly full: (result: FilePathValidityResult) => string;
};
};