@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
44 lines (43 loc) • 2.55 kB
TypeScript
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;
};
};
};