bsl-language-server
bsl-language-server copied to clipboard
Оптимизировано (и местами исправлено) формирование ссылки на объекты MD
Описание
Скорректировано формирование и использование ссылок mdoref.
PS. временно версия mdclasses указана снапшотная
Связанные задачи
Closes
Чеклист
Общие
- [x] Ветка PR обновлена из develop
- [x] Отладочные, закомментированные и прочие, не имеющие смысла участки кода удалены
- [ ] Изменения покрыты тестами
- [ ] Обязательные действия перед коммитом выполнены (запускал команду
gradlew precommit)
Для диагностик
- [ ] Описание диагностики заполнено для обоих языков (присутствуют файлы для обоих языков, для русского заполнено все подробно, перевод на английский можно опустить)
Дополнительно
Walkthrough
Refactors MDO reference resolution by adding DocumentContext.getMdoRef() and delegating many former MdoRefBuilder/MdoReference call sites to it; introduces getMdoRefLocal(MD) helper in diagnostics, simplifies MdoRefBuilder logic, inlines/removes several diagnostic helpers, and applies local type inference (var) in multiple classes.
Changes
| Cohort / File(s) | Summary |
|---|---|
Core Context src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContext.java |
Added public String getMdoRef() delegating to MdoRefBuilder.getMdoRef(this). |
Server / Module Contexts src/main/java/com/github/_1c_syntax/bsl/languageserver/context/ServerContext.java, src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/ModuleSymbolComputer.java |
Removed MdoRefBuilder import usages; replaced calls with documentContext.getMdoRef() and applied var in locals. |
CLI / Reporters src/main/java/com/github/_1c_syntax/bsl/languageserver/cli/AnalyzeCommand.java, src/main/java/com/github/_1c_syntax/bsl/languageserver/reporters/data/FileInfo.java |
Simplified MDO ref retrieval; removed unused imports; FileInfo now derives MDO ref from optional MD. |
Diagnostics — base helper src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractMetadataDiagnostic.java |
Added protected getMdoRefLocal(MD mdo) delegating to configuration.getMdoRefLocal(mdo). |
Diagnostics — ref usage & inlining src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/* (DenyIncompleteValuesDiagnostic.java, ForbiddenMetadataNameDiagnostic.java, MetadataObjectNameLengthDiagnostic.java, ProtectedModuleDiagnostic.java, SameMetadataObjectAndChildNamesDiagnostic.java, MissingEventSubscriptionHandlerDiagnostic.java, PrivilegedModuleMethodCallDiagnostic.java, ScheduledJobHandlerDiagnostic.java, WrongDataPathForFormElementsDiagnostic.java, WrongHttpServiceHandlerDiagnostic.java) |
Replaced many getMdoReference().getMdoRef() / MdoRefBuilder usages with getMdoRef() or getMdoRefLocal(mdo); several helper methods removed/inlined; some method signatures updated to accept MD rather than MdoReference. |
Hover / Description src/main/java/com/github/_1c_syntax/bsl/languageserver/hover/DescriptionFormatter.java |
Removed MdoRefBuilder import; use documentContext.getMdoRef(); multiple local vars converted to var. |
Providers / References src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/CallHierarchyProvider.java, src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndex.java, src/main/java/com/github/_1c_syntax/bsl/languageserver/references/ReferenceIndexFiller.java |
Replaced MdoRefBuilder calls with owner().getMdoRef() or documentContext.getMdoRef(); introduced MD import in some files; applied var in locals. |
MdoRefBuilder src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/MdoRefBuilder.java |
Simplified complex-identifier handling and removed large prior logic paths; adjusted public API for complex identifier overload; removed unused imports and helpers. |
Tests / Types src/test/java/com/github/_1c_syntax/bsl/languageserver/context/computer/ModuleSymbolComputerTest.java, src/main/java/com/github/_1c_syntax/bsl/types/MdoReference.java |
Tests updated to use MdoReference.create(...) and to stub documentContext.getMdoRef(); added factory MdoReference.create(String) used in test. |
Sequence Diagram(s)
sequenceDiagram
participant Caller as Component
participant DC as DocumentContext
participant MRB as MdoRefBuilder
participant Config as Configuration
Note over Caller,DC: Old: many callers invoked MdoRefBuilder directly
Caller->>MRB: MdoRefBuilder.getMdoRef(documentContext)
MRB-->>Caller: mdoRef
Note over Caller,DC: New: callers call DocumentContext.getMdoRef()
Caller->>DC: documentContext.getMdoRef()
DC->>MRB: (delegates) getMdoRef(this)
MRB-->>DC: mdoRef
DC-->>Caller: mdoRef
Note over Diagnostics,Config: Locale-aware diagnostic name resolution
Diagnostics->>Config: configuration.getMdoRefLocal(mdo)
Config-->>Diagnostics: locale-specific mdoRef
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~45 minutes
- Review MdoRefBuilder simplified logic for complex identifier cases (possible behavioral regressions).
- Verify all call-site updates from MdoReference / MdoRefBuilder to MD / DocumentContext.getMdoRef() are consistent.
- Confirm method signature changes (MD vs MdoReference) have no missed references or test gaps.
- Check diagnostic messages using getMdoRefLocal(MD) for locale correctness.
Possibly related PRs
- 1c-syntax/bsl-language-server#3523 — similar refactor centralizing MDO reference resolution and replacing MdoRefBuilder usages.
- 1c-syntax/bsl-language-server#3555 — overlapping changes to MdoRefBuilder, FileInfo, and DocumentContext affecting MDO resolution.
- 1c-syntax/bsl-language-server#3364 — related hover/DescriptionFormatter changes and formatting of method/parameter descriptions.
Suggested reviewers
- nixel2007
Poem
🐰
I hopped through refs both far and wide,
Gathered MDOs to place inside,
DocumentContext now keeps the key,
Diagnostics sing in harmony,
Type hints trimmed—I'm pleased to glide ✨
Pre-merge checks and finishing touches
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | ⚠️ Warning | Docstring coverage is 22.95% which is insufficient. The required threshold is 80.00%. | You can run @coderabbitai generate docstrings to improve docstring coverage. |
✅ Passed checks (2 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | The title accurately describes the main refactoring: optimizing MDO reference link formation and fixing related issues throughout the codebase. |
✨ Finishing touches
- [ ] 📝 Generate docstrings
🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
- [ ] Commit unit tests in branch
feature/optMdoRefBuilder
📜 Recent review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between 21034584e66d55afee2a4ef679e998bfb7db6a87 and 2ef8bc75b111df6452bfebcf77ca7b7aef52a09b.
📒 Files selected for processing (2)
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DenyIncompleteValuesDiagnostic.java(1 hunks)src/main/java/com/github/_1c_syntax/bsl/languageserver/hover/DescriptionFormatter.java(8 hunks)
✅ Files skipped from review due to trivial changes (1)
- src/main/java/com/github/_1c_syntax/bsl/languageserver/hover/DescriptionFormatter.java
🚧 Files skipped from review as they are similar to previous changes (1)
- src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DenyIncompleteValuesDiagnostic.java
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
- GitHub Check: Benchmark
- GitHub Check: Analyse
- GitHub Check: build
- GitHub Check: build (25, macOS-latest)
- GitHub Check: build (25, ubuntu-latest)
- GitHub Check: build (17, macOS-latest)
- GitHub Check: build (21, ubuntu-latest)
- GitHub Check: build (25, windows-latest)
- GitHub Check: build (21, macOS-latest)
- GitHub Check: build (21, windows-latest)
- GitHub Check: build (17, ubuntu-latest)
- GitHub Check: build (17, windows-latest)
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 @coderabbitai help to get the list of available commands and usage tips.
Quality Gate passed
Issues
8 New issues
0 Accepted issues
Measures
0 Security Hotspots
96.6% Coverage on New Code
0.0% Duplication on New Code
Quality Gate passed
Issues
4 New issues
0 Accepted issues
Measures
0 Security Hotspots
98.8% Coverage on New Code
0.0% Duplication on New Code