UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

73 lines (72 loc) 3.83 kB
import type { DataflowGraph } from '../../dataflow/graph/graph'; import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id'; import type { MergeableRecord } from '../../util/objects'; import type { SourceRange } from '../../util/range'; import type { LintingResult, LintQuickFixReplacement } from '../linter-format'; import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format'; import { LintingRuleTag } from '../linter-tags'; export declare enum CasingConvention { CamelCase = "camelCase", PascalCase = "PascalCase", SnakeCase = "snake_case", ConstantCase = "CONSTANT_CASE", CamelSnakeCase = "camel_Snake_Case", PascalSnakeCase = "Pascal_Snake_Case", Unknown = "unknown" } export interface NamingConventionResult extends LintingResult { name: string; detectedCasing: CasingConvention; range: SourceRange; } /** * It is planned to have a config like ESLint */ export interface NamingConventionConfig extends MergeableRecord { caseing: CasingConvention | 'auto'; } export interface NamingConventionMetadata extends MergeableRecord { /** number of symbols matching the casing convetion */ numMatches: number; /** number of symbols breaking the casing convetion */ numBreak: number; } export declare function detectCasing(identifier: string): CasingConvention; export declare function getMostUsedCasing(symbols: { detectedCasing: CasingConvention; }[]): CasingConvention; export declare function fixCasing(identifier: string, convention: CasingConvention): string; export declare function createNamingConventionQuickFixes(graph: DataflowGraph, nodeId: NodeId, replacement: string, conv: CasingConvention): LintQuickFixReplacement[] | undefined; export declare const NAMING_CONVENTION: { readonly createSearch: (_config: NamingConventionConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], 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: NamingConventionConfig, data: { normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst; dataflow: import("../../dataflow/info").DataflowInformation; config: import("../../config").FlowrConfigOptions; }) => { results: { quickFix: LintQuickFixReplacement[] | undefined; certainty: LintingResultCertainty; detectedCasing: CasingConvention; name: string; range: SourceRange; }[]; '.meta': { numMatches: number; numBreak: number; }; }; readonly prettyPrint: { readonly query: (result: NamingConventionResult) => string; readonly full: (result: NamingConventionResult) => string; }; readonly info: { readonly name: "Naming Convention"; readonly certainty: LintingRuleCertainty.OverApproximative; readonly description: "Checks wether the symbols conform to a certain naming convention"; readonly tags: readonly [LintingRuleTag.Style, LintingRuleTag.QuickFix]; readonly defaultConfig: { readonly caseing: "auto"; }; }; };