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