@ui5/linter
Version:
A static code analysis tool for UI5
122 lines (121 loc) • 3.84 kB
TypeScript
import { AbstractAdapter, AbstractReader } from "@ui5/fs";
import { LintMessageSeverity, MESSAGE } from "./messages.js";
import { MessageArgs } from "./MessageArgs.js";
import ts from "typescript";
import { Ui5TypeInfo } from "./ui5Types/Ui5TypeInfo.js";
import Fix from "./ui5Types/fix/Fix.js";
export type FilePattern = string;
export type FilePath = string;
export type ResourcePath = string;
export interface LintResult {
filePath: FilePath;
messages: LintMessage[];
coverageInfo: CoverageInfo[];
errorCount: number;
fatalErrorCount: number;
warningCount: number;
}
export interface RawLintResult {
filePath: FilePath;
rawMessages: RawLintMessage[];
}
export interface RawLintMessage<M extends MESSAGE = MESSAGE> {
id: M;
args: MessageArgs[M];
position?: PositionInfo;
fix?: Fix;
ui5TypeInfo?: Ui5TypeInfo;
}
export interface LintMessage {
ruleId: string;
severity: LintMessageSeverity;
message: string;
messageDetails?: string;
ui5TypeInfo?: Ui5TypeInfo;
fatal?: boolean | undefined;
line?: number | undefined;
column?: number | undefined;
endLine?: number | undefined;
endColumn?: number | undefined;
}
export declare enum CoverageCategory {
CallExpressionUnknownType = 1,
UnknownControlAggregation = 2
}
export interface CoverageInfo {
category: CoverageCategory;
message: string;
messageDetails?: string;
line?: number | undefined;
column?: number | undefined;
endLine?: number | undefined;
endColumn?: number | undefined;
}
export interface TranspileResult {
source: string;
map: string;
}
export interface LinterOptions {
rootDir: string;
filePatterns?: FilePattern[];
ignorePatterns?: FilePattern[];
coverage?: boolean;
details?: boolean;
fix?: boolean;
configPath?: string;
noConfig?: boolean;
ui5Config?: string | object;
namespace?: string;
}
export interface LinterParameters {
workspace: AbstractAdapter;
filePathsWorkspace: AbstractAdapter;
context: LinterContext;
}
export interface PositionInfo {
line: number;
column: number;
}
export interface PositionRange {
start: PositionInfo;
end?: PositionInfo;
}
export type DirectiveAction = "enable" | "disable";
export type DirectiveScope = "line" | "next-line" | undefined;
export interface Directive {
action: DirectiveAction;
scope: DirectiveScope;
ruleNames: string[];
line: number;
column: number;
}
export interface LintMetadata {
directives: Set<Directive>;
transformedImports: Map<string, Set<string>>;
xmlCompiledResource: string;
jsToXmlPosMapping: {
pos: ts.LineAndCharacter;
originalPath: string;
};
}
export default class LinterContext {
#private;
constructor(options: LinterOptions);
getRootDir(): string;
setRootReader(rootReader: AbstractReader): void;
getRootReader(): AbstractReader;
getNamespace(): string | undefined;
getReportCoverage(): boolean;
getIncludeMessageDetails(): boolean;
getApplyAutofix(): boolean;
getMetadata(resourcePath: ResourcePath): LintMetadata;
getRawLintingMessages(resourcePath: ResourcePath): RawLintMessage[];
addLintingMessage<M extends MESSAGE>(resourcePath: ResourcePath, id: M, args: MessageArgs[M], position?: PositionInfo): void;
addLintingMessages<M extends MESSAGE>(resourcePath: ResourcePath, rawMessages: RawLintMessage<M>[]): void;
getCoverageInfo(resourcePath: ResourcePath): CoverageInfo[];
addCoverageInfo(resourcePath: ResourcePath, coverageInfo: CoverageInfo): void;
addDirective(resourcePath: ResourcePath, directive: Directive): void;
generateLintResult(resourcePath: ResourcePath): LintResult;
generateLintResults(): LintResult[];
generateRawLintResults(): RawLintResult[];
}