- AI 修复预生成:静态/custom/AI 条目审查时预生成修复片段(originalText/newText),展开问题即显示行级 diff,无预生成时展示占位提示,匹配失败回退实时 LLM 生成 - 修复前 diff 预览:侧边新建编辑器组打开内置 diff,确认后写入(两步确认),不覆盖当前文件 - fix: sqlfluff 在 jinja 标签位于注释内时 JJ01 JSON 缺失 end_line_no/end_line_pos,适配器 Range 构造产生 NaN 被 VSCode 交换 start/end 导致行号 LNaN;新增 resolveSqlFluffRange 兜底 + 面板/report 行号 Number.isFinite 防御 - fix: 从 PMD 内置 ruleset 移除 5 条实际不可触发规则(AvoidAssertAsIdentifier、AvoidEnumAsIdentifier、AccessorClassGeneration、AccessorMethodGeneration、LoosePackageCoupling),内置配置 274→269 条全部可触发,同步 static-rules.json 与翻译脚本 - docs: README/DESIGN 更新
49 lines
1009 B
TypeScript
49 lines
1009 B
TypeScript
import * as vscode from 'vscode';
|
|
|
|
export interface CustomRule {
|
|
id: string;
|
|
severity: Severity;
|
|
description: string;
|
|
message: string;
|
|
languages?: string[];
|
|
excludeLanguages?: string[];
|
|
}
|
|
|
|
export type Severity = 'error' | 'warning' | 'info';
|
|
|
|
export type AdapterStatus = 'ok' | 'tool-unavailable' | 'execution-failed';
|
|
|
|
export interface AiFixSnippet {
|
|
originalText: string;
|
|
newText: string;
|
|
}
|
|
|
|
export interface LinterFix {
|
|
range: [number, number];
|
|
text: string;
|
|
originalText?: string;
|
|
}
|
|
|
|
export interface LinterDiagnostic {
|
|
severity: Severity;
|
|
ruleId: string;
|
|
message: string;
|
|
range: vscode.Range;
|
|
suggestion?: string;
|
|
fix?: LinterFix;
|
|
aiFix?: AiFixSnippet;
|
|
}
|
|
|
|
export interface AdapterResult {
|
|
diagnostics: LinterDiagnostic[];
|
|
status: AdapterStatus;
|
|
errorMessage?: string;
|
|
}
|
|
|
|
export interface LinterAdapter {
|
|
id: string;
|
|
supportedLanguages: string[];
|
|
check(document: vscode.TextDocument, workingDir: string): Promise<AdapterResult>;
|
|
isAvailable(): boolean;
|
|
}
|