feat: migrate diagnostics & quick-fix actions to language-service#92
feat: migrate diagnostics & quick-fix actions to language-service#92
Conversation
# Conflicts: # extensions/vscode/src/index.ts # packages/language-service/src/index.ts
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThis PR removes the VS Code extension diagnostics and quick‑fix providers and implements diagnostics and code‑action generation inside a new Volar language‑service plugin. Diagnostic rules were refactored to accept explicit ignore lists and emit simplified payloads; a strategy‑based action builder system and version utilities (including formatUpgradeVersion) were added. Shared command and configuration constants were introduced, tests and Vitest config files were updated, and several package/dependency and bundling entries were adjusted. Possibly related PRs
🚥 Pre-merge checks | ❌ 1❌ Failed checks (1 inconclusive)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/language-service/src/plugins/diagnostics/rules/dist-tag.ts (1)
2-21:⚠️ Potential issue | 🟠 Major
checkDistTagdoes not honour the ignore list.Despite using the
DiagnosticRulecontract, this rule never applies ignore filtering, so ignored dist-tag findings will still be emitted. Please handleignoreListhere the same way as the other diagnostics rules.
🧹 Nitpick comments (2)
packages/language-service/src/utils/version.ts (1)
32-33: Accept a smaller input contract here.This helper only reads
rawName,rawSpec,resolvedName,resolvedSpec, andprotocol, but taking fullDependencyInfois what forces the assertion inpackages/language-service/src/utils/version.test.tsLine 22. A dedicated interface keeps the helper testable without type assertions.Suggested refactor
import type { DependencyInfo } from 'npmx-language-core/workspace' import { formatPackageId } from 'npmx-language-core/utils' +interface UpgradeVersionInput { + rawName: string + rawSpec: string + resolvedName: string + resolvedSpec: string + protocol: DependencyInfo['protocol'] +} + const RANGE_PREFIXES = ['>=', '<=', '=', '>', '<'] @@ -export function formatUpgradeVersion(dep: DependencyInfo, target: string): string { +export function formatUpgradeVersion(dep: UpgradeVersionInput, target: string): string {As per coding guidelines, "Use
interfaceovertypefor defining object shapes in TypeScript" and "Avoidascasts—validate instead of using type assertions".packages/language-service/src/plugins/diagnostics/actions.ts (1)
102-107: The replacement pattern is overly permissive.The pattern
/^"(?<packageName>\S+)"/only captures the package name at the start. This could match unrelated diagnostics that happen to start with a quoted string. Consider adding more specificity to avoid false matches.♻️ Suggested pattern refinement
Based on the replacement diagnostic message format from Context snippet 4 (
"${resolvedName}" ${message}), you could tighten the pattern:replacement: { - pattern: /^"(?<packageName>\S+)"/, + pattern: /^"(?<packageName>\S+)" (?:is deprecated|has been replaced|should be replaced)/, actionBuilders: [ ignore((g) => g.packageName), ], },Alternatively, verify the exact message formats produced by
getReplacementInfoto craft an appropriate pattern.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 61adb5d5-3df0-44f3-bfe1-76de07c73da7
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (39)
.gitignoreextensions/vscode/package.jsonextensions/vscode/src/commands/add-to-ignore.tsextensions/vscode/src/index.tsextensions/vscode/src/providers/code-actions/index.tsextensions/vscode/src/providers/code-actions/quick-fix.test.tsextensions/vscode/src/providers/code-actions/quick-fix.tsextensions/vscode/src/providers/diagnostics/index.tsextensions/vscode/src/state.tsextensions/vscode/tests/__setup__/index.tsextensions/vscode/tsdown.config.tspackages/language-server/package.jsonpackages/language-server/tsdown.config.tspackages/language-service/package.jsonpackages/language-service/src/index.tspackages/language-service/src/plugins/diagnostics/actions.tspackages/language-service/src/plugins/diagnostics/index.tspackages/language-service/src/plugins/diagnostics/rules/__tests__/utils.tspackages/language-service/src/plugins/diagnostics/rules/deprecation.test.tspackages/language-service/src/plugins/diagnostics/rules/deprecation.tspackages/language-service/src/plugins/diagnostics/rules/dist-tag.test.tspackages/language-service/src/plugins/diagnostics/rules/dist-tag.tspackages/language-service/src/plugins/diagnostics/rules/engine-mismatch.test.tspackages/language-service/src/plugins/diagnostics/rules/engine-mismatch.tspackages/language-service/src/plugins/diagnostics/rules/replacement.test.tspackages/language-service/src/plugins/diagnostics/rules/replacement.tspackages/language-service/src/plugins/diagnostics/rules/upgrade.test.tspackages/language-service/src/plugins/diagnostics/rules/upgrade.tspackages/language-service/src/plugins/diagnostics/rules/vulnerability.test.tspackages/language-service/src/plugins/diagnostics/rules/vulnerability.tspackages/language-service/src/plugins/diagnostics/types.tspackages/language-service/src/plugins/diagnostics/utils.tspackages/language-service/src/utils/version.test.tspackages/language-service/src/utils/version.tspackages/language-service/tests/__setup__/msw.tspackages/language-service/vitest.config.tspnpm-workspace.yamlshared/commands.tsshared/constants.ts
💤 Files with no reviewable changes (9)
- extensions/vscode/package.json
- pnpm-workspace.yaml
- extensions/vscode/src/state.ts
- extensions/vscode/tsdown.config.ts
- extensions/vscode/tests/setup/index.ts
- extensions/vscode/src/providers/code-actions/index.ts
- extensions/vscode/src/providers/code-actions/quick-fix.test.ts
- extensions/vscode/src/providers/code-actions/quick-fix.ts
- extensions/vscode/src/providers/diagnostics/index.ts
No description provided.