fix: JS 审查解析错误不静默丢弃 + flat config 守卫 + 面板 Stylelint 配置识别补齐

- eslint: ruleId===null 的致命解析错误产出 eslint:parse-error 诊断,不再静默丢弃(修复 no-octal / no-nonoctal-decimal-escape 不出结果)
- ts.configs.recommended 逐项补 files 守卫,避免 TS parser 误报到 JS;新增 JS_FILES 独立 config 启用 JSX
- setupView: stylelint 清单补齐 stylelint.config.mjs / stylelint.config.cjs,与适配器对齐
- 新增 3 个 adapter 测试,npm test 84 passing
This commit is contained in:
范智鹏
2026-08-13 20:32:36 +08:00
parent 3d15737d6e
commit 3cf5c7165e
3 changed files with 27 additions and 4 deletions
+23 -2
View File
@@ -11,6 +11,8 @@ import { eslintExtraRules, eslintExtraTsRules } from '../rules/builtin-rules';
const TS_FILES = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];
const JS_FILES = ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'];
const PROJECT_CONFIG_FILES = [
'eslint.config.js',
'eslint.config.mjs',
@@ -73,9 +75,14 @@ export class ESLintAdapter implements LinterAdapter {
public static getDefaultConfig(): any[] {
if (!ESLintAdapter.defaultConfig) {
const tsConfigs = ts.configs.recommended.map(cfg => ({
...cfg,
files: (cfg as { files?: string[] }).files ?? TS_FILES,
}));
ESLintAdapter.defaultConfig = [
js.configs.recommended,
...ts.configs.recommended,
{ files: JS_FILES, languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } } },
...tsConfigs,
{ rules: eslintExtraRules },
{ files: TS_FILES, rules: eslintExtraTsRules },
];
@@ -111,7 +118,21 @@ export class ESLintAdapter implements LinterAdapter {
const diagnostics: LinterDiagnostic[] = [];
for (const result of results) {
for (const msg of result.messages) {
if (msg.ruleId === null) { continue; }
if (msg.ruleId === null) {
if (!msg.fatal) { continue; }
diagnostics.push({
severity: 'error',
ruleId: 'eslint:parse-error',
message: msg.message,
range: new vscode.Range(
msg.line - 1,
msg.column - 1,
(msg.endLine ?? msg.line) - 1,
(msg.endColumn ?? msg.column) - 1
),
});
continue;
}
diagnostics.push({
severity: msg.severity === 2 ? 'error' : 'warning',
+1 -1
View File
@@ -90,7 +90,7 @@ const ADAPTER_METADATA: Record<string, {
const PROJECT_CONFIG_FILES: Record<string, string[]> = {
eslint: ['eslint.config.js', 'eslint.config.mjs', 'eslint.config.cjs', 'eslint.config.ts', 'eslint.config.mts', 'eslint.config.cts'],
stylelint: ['.stylelintrc.js', '.stylelintrc.json', '.stylelintrc.yaml', '.stylelintrc.yml', '.stylelintrc', 'stylelint.config.js'],
stylelint: ['.stylelintrc.js', '.stylelintrc.json', '.stylelintrc.yaml', '.stylelintrc.yml', '.stylelintrc', 'stylelint.config.js', 'stylelint.config.mjs', 'stylelint.config.cjs'],
pmd: ['ruleset.xml'],
'sqlfluff': ['.sqlfluff'],
};