UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

42 lines (41 loc) 2.61 kB
import type { MergeableRecord } from '../../util/objects'; import { type LintingResult, LintingResultCertainty, LintingRuleCertainty } from '../linter-format'; import { LintingRuleTag } from '../linter-tags'; import type { BuiltInProcName } from '../../dataflow/environments/built-in-proc-name'; export interface UselessLoopResult extends LintingResult { name: string; } export interface UselessLoopConfig extends MergeableRecord { /** Function origins that are considered loops */ loopyFunctions: Set<BuiltInProcName>; } export interface UselessLoopMetadata extends MergeableRecord { numOfUselessLoops: number; } export declare const USELESS_LOOP: { readonly createSearch: () => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], 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>[]>, useLessLoopConfig: UselessLoopConfig, data: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>) => Promise<{ results: { certainty: LintingResultCertainty.Certain; name: string; loc: [startLine: number, startColumn: number, endLine: number, endColumn: number, f?: string | undefined]; involvedId: import("../../r-bridge/lang-4.x/ast/model/processing/node-id").NodeId; }[]; '.meta': { numOfUselessLoops: number; }; }>; readonly prettyPrint: { readonly query: (result: UselessLoopResult) => string; readonly full: (result: UselessLoopResult) => string; }; readonly info: { readonly name: "Useless Loops"; readonly description: "Detect loops which only iterate once"; readonly certainty: LintingRuleCertainty.BestEffort; readonly tags: readonly [LintingRuleTag.Smell, LintingRuleTag.Readability]; readonly defaultConfig: { readonly loopyFunctions: Set<BuiltInProcName>; }; }; };