UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

44 lines (43 loc) 2.55 kB
import { type LintingResult, LintingRuleCertainty } from '../linter-format'; import type { MergeableRecord } from '../../util/objects'; import { LintingRuleTag } from '../linter-tags'; import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate'; import type { ReadonlyFlowrAnalysisProvider } from '../../project/flowr-analyzer'; export interface UnusedDefinitionResult extends LintingResult { variableName?: string; } export interface UnusedDefinitionConfig extends MergeableRecord { /** * Whether to include (potentially anonymous) function definitions in the search (e.g., should we report uncalled anonymous functions?). */ includeFunctionDefinitions: boolean; /** * Whether to suppress definitions that the analyzed project exports via its `NAMESPACE` (the package's public API). * flowR cannot observe external callers, so exported names would otherwise be reported as (uncertain) false positives. */ excludeExportedDefinitions: boolean; } export interface UnusedDefinitionMetadata extends MergeableRecord { totalConsidered: number; } export declare const UNUSED_DEFINITION: { readonly createSearch: (config: UnusedDefinitionConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>>>; readonly processSearchResult: (elements: import("../../search/flowr-search").FlowrSearchElements<ParentInformation, import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>, config: UnusedDefinitionConfig, data: ReadonlyFlowrAnalysisProvider<import("../../r-bridge/parser").KnownParser>) => Promise<{ results: UnusedDefinitionResult[]; ".meta": UnusedDefinitionMetadata; }>; readonly prettyPrint: { readonly query: (result: UnusedDefinitionResult) => string; readonly full: (result: UnusedDefinitionResult) => string; }; readonly info: { readonly name: "Unused Definitions"; readonly description: "Checks for unused definitions."; readonly tags: readonly [LintingRuleTag.Readability, LintingRuleTag.Smell, LintingRuleTag.QuickFix]; readonly certainty: LintingRuleCertainty.BestEffort; readonly defaultConfig: { readonly includeFunctionDefinitions: true; readonly excludeExportedDefinitions: true; }; }; };