UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

40 lines (39 loc) 2.72 kB
import { type LintingResult, LintingRuleCertainty } from '../linter-format'; import type { MergeableRecord } from '../../util/objects'; import { LintingRuleTag } from '../linter-tags'; import type { InputClassifierConfig, InputSources } from '../../queries/catalog/input-sources-query/simple-input-classifier'; export interface PipeCommandFunctionSpec { pattern: string; argIdx: number; argName: string; } export interface ProblematicInputsResult extends LintingResult { name: string; sources: InputSources; pipeCommand?: string; } export interface ProblematicInputsConfig extends MergeableRecord { consider?: string | string[]; inputFns?: InputClassifierConfig; pipeCommandFunctions?: PipeCommandFunctionSpec | PipeCommandFunctionSpec[]; } export declare const PROBLEMATIC_INPUTS: { readonly createSearch: (config: ProblematicInputsConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"from-query", [], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, 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: ProblematicInputsConfig, data: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>) => Promise<{ results: ProblematicInputsResult[]; }>; readonly prettyPrint: { readonly query: (result: ProblematicInputsResult) => string; readonly full: (result: ProblematicInputsResult) => string; }; readonly info: { readonly name: "Problematic inputs"; readonly description: "Detects uses of dynamic calls (e.g. eval, system) with non-constant inputs, and graphics-device calls (pdf, postscript) where a filename starts with '|' indicating a pipe command injection."; readonly tags: readonly [LintingRuleTag.Security, LintingRuleTag.Smell, LintingRuleTag.Readability, LintingRuleTag.Performance]; readonly certainty: LintingRuleCertainty.BestEffort; readonly defaultConfig: { readonly consider: readonly string[]; readonly pipeCommandFunctions: readonly PipeCommandFunctionSpec[]; }; }; };