Skip to content

Conversation

theshadowco
Copy link
Member

Описание

  1. использование новой версии common library
  2. доработано хранение типов значений, часть классов уехала в common lib
  3. все перечисления переведены на хранение двух языков имени
  4. для catalog добавлено хранение владельцев

Связанные задачи

Closes

Чеклист

Общие

  • Ветка PR обновлена из develop
  • Отладочные, закомментированные и прочие, не имеющие смысла участки кода удалены
  • Изменения покрыты тестами
  • Обязательные действия перед коммитом выполнены (запускал команду gradlew precommit)

Дополнительно

2. доработано хранение типов значений, часть классов уехала в common lib
3. все перечисления переведены на хранение двух языков имени
4. для catalog добавлено хранение владельцев
Copy link

coderabbitai bot commented Oct 6, 2025

Walkthrough

Обновлена версия зависимости bsl-common-library; выполнена массовая миграция типов в пакет com.github._1c_syntax.bsl.types; многие enum’ы переписаны на EnumWithName с локализованными именами и lookup valueByName; удалены несколько устаревших support‑классов; добавлены отдельные публичные поля/методы и пакетные аннотации nullability.

Changes

Cohort / File(s) Summary
Dependency bump
build.gradle.kts
Обновлена версия io.github.1c-syntax:bsl-common-library 0.9.0.9-SNAPSHOT0.9.0.16-SNAPSHOT.
Документация (RU)
docs/ru/examples.md
Исправлены заголовки, опечатки и комментарии в примерах — только документация.
Массовая миграция импортов → bsl.types
src/main/java/com/github/_1c_syntax/bsl/**
Повсеместно заменены импорты com.github._1c_syntax.bsl.mdo.support.MultiLanguageString/ScriptVariant и т.п. на com.github._1c_syntax.bsl.types.*, в результате ряд публичных полей/методов теперь ссылается на типы из bsl.types.
Удалённые support‑типы
src/main/java/com/github/_1c_syntax/bsl/mdo/support/MultiLanguageString.java, .../ScriptVariant.java, .../EnumWithValue.java, src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormAttributeValueType.java, .../MetadataValueType.java
Удалены перечисленные файлы и связанная с ними публичная функциональность/константы.
Массовый рефактор enum → EnumWithName (локализация, lookup)
src/main/java/com/github/_1c_syntax/bsl/mdo/support/*.java, src/main/java/.../storage/form/FormElementType.java, .../support/*
Множество enum’ов переписаны: хранение MultiName (EN/RU), статический KEYS через EnumWithName.computeKeys, новый метод valueByName(String) для поиска, добавлены @ToString/@Getter/fluent accessors; старый EnumWithValue удалён.
Добавлены/изменены публичные поля и методы
src/main/java/com/github/_1c_syntax/bsl/mdo/Catalog.java, .../Enum.java, .../ChartOfCharacteristicTypes.java, .../children/HTTPServiceURLTemplate.java, .../storage/form/FormItem.java, .../storage/form/SimpleFormItem.java
Добавлено Catalog.owners (@Singular), Enum.attributes + getAllAttributes(), ChartOfCharacteristicTypes.type + getValueType() (реализует ValueTypeOwner), HTTPServiceURLTemplate.getChildren() (возвращает unmodifiableList); ряд файлов изменил импорт MultiLanguageString (публичный эффект на тип возвращаемых значений/полей).
Пакетные аннотации и мелкие правки
src/main/java/com/github/_1c_syntax/bsl/mdo/support/package-info.java, src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/package-info.java, src/test/.../MDTestUtils.java, src/main/java/.../MDClasses.java, Language.java
Добавлены @ParametersAreNonnullByDefault и @ReturnValuesAreNonnullByDefault в пакеты; заменены вызовы MDOType::getGroupName*MDOType::groupName*; небольшие форматные/импортные правки.
EnumConverter и отражение
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java
Generic bound изменён на EnumWithName; парсинг enum теперь делегируется статическому valueByName(String) через reflection (ошибка времени выполнения при отсутствии метода).

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Caller
  participant Enum as RefactoredEnum
  Caller->>Enum: valueByName(key)
  activate Enum
  Enum->>Enum: normalize(key) (Locale.ROOT)
  Enum->>Enum: KEYS.getOrDefault(keyLower, UNKNOWN)
  Enum-->>Caller: Enum constant (или UNKNOWN)
  deactivate Enum
  note right of Enum #f6f8ff: Унифицированный lookup для рефакторенных enum'ов
Loading
sequenceDiagram
  autonumber
  actor Client
  participant T as HTTPServiceURLTemplate
  Client->>T: getChildren()
  activate T
  T-->>Client: Collections.unmodifiableList(methods)
  deactivate T
  note right of T #f6fffa: Новый публичный метод возврата детей URL‑шаблона
Loading
sequenceDiagram
  autonumber
  actor Client
  participant C as ChartOfCharacteristicTypes
  Client->>C: getValueType()
  activate C
  C-->>Client: ValueTypeDescription (type)
  deactivate C
  note right of C #fff7f6: Класс теперь реализует ValueTypeOwner
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

Poem

Прыг-прыг, я — заяц в репозитории:
Импорты перебежали, enum'ы стали двуязычные,
KEYS шуршат, valueByName наготове,
Старые классы ушли, новые поля пришли. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title Check ❓ Inconclusive Заголовок слишком общий и не раскрывает конкретные изменения, он лишь указывает на «продолжение» работы над типами значений без указания ключевых доработок в хранении перечислений и обновлении общей библиотеки. Переименуйте заголовок в более конкретный, отражающий основные изменения, например «Добавление двухязычного хранения перечислений и обновление общей библиотеки».
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Описание соответствует содержимому PR: в нём перечислены ключевые изменения, включая обновление версии общей библиотеки, переработку хранения типов значений, перевод перечислений на хранение двух языков и добавление владельцев в catalog.
✨ Finishing touches
  • 📝 Docstrings were successfully generated. (🔄 Check again to generate docstrings again)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/updCommonLib

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5a50594 and 67d2fa5.

📒 Files selected for processing (1)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java (1)
  • Slf4j (98-359)
⏰ 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). (18)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: QA
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: build (21, ubuntu-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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

github-actions bot commented Oct 6, 2025

Test Results

  522 files   - 18    522 suites   - 18   6m 55s ⏱️ +40s
  221 tests  -  4    221 ✅  -  4  0 💤 ±0  0 ❌ ±0 
2 007 runs   - 36  2 007 ✅  - 36  0 💤 ±0  0 ❌ ±0 

Results for commit 67d2fa5. ± Comparison against base commit 8d3bd94.

This pull request removes 4 tests.
com.github._1c_syntax.bsl.mdo.support.ScriptVariantTest ‑ 1: RUSSIAN
com.github._1c_syntax.bsl.mdo.support.ScriptVariantTest ‑ 2: ENGLISH
com.github._1c_syntax.bsl.mdo.support.ScriptVariantTest ‑ 3: RUSSIAN
com.github._1c_syntax.bsl.smoke.EnumsTest ‑ unknown()

♻️ This comment has been updated with latest results.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 18

🧹 Nitpick comments (1)
src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java (1)

71-79: Рассмотрите добавление русского имени из fullNameAdd для полноты.

В методе computeKeys в карту добавляются английское и русское имена из fullName (строки 74-75), но из fullNameAdd добавляется только английское имя (строка 76). Хотя текущий конструктор использует одно и то же nameRu для обоих полей, эта асимметрия может стать источником ошибок при будущих изменениях.

Также обратите внимание на потенциальные коллизии: если разные константы enum имеют совпадающие имена (в lowercase), более поздние значения перезапишут предыдущие в карте без предупреждения.

Рассмотрите возможность добавления явной проверки на коллизии при инициализации карты или документирования того, что fullNameAdd намеренно использует то же русское имя, что и fullName.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8d3bd94 and ea2f232.

⛔ Files ignored due to path filters (131)
  • src/test/resources/fixtures/external/ТестоваяВнешняяОбработка.json is excluded by !**/*.json
  • src/test/resources/fixtures/external/ТестоваяВнешняяОбработка_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/external/ТестовыйВнешнийОтчет.json is excluded by !**/*.json
  • src/test/resources/fixtures/external/ТестовыйВнешнийОтчет_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/AccountingRegisters.РегистрБухгалтерии1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/AccumulationRegisters.РегистрНакопления1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CalculationRegisters.РегистрРасчета1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CalculationRegisters.РегистрРасчета1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Catalogs.Справочник1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Catalogs.Справочник1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfAccounts.ПланСчетов1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfAccounts.ПланСчетов1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfCharacteristicTypes.ПланВидовХарактеристик1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ChartsOfCharacteristicTypes.ПланВидовХарактеристик1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonAttributes.ОбщийРеквизит1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonForms.Форма.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonForms.Форма_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ГлобальныйОбщийМодуль.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ГлобальныйОбщийМодуль_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульВызовСервера.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульВызовСервера_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульПовтИспВызов.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульПовтИспВызов_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульПовтИспСеанс.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульПовтИспСеанс_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульПолныйеПрава.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ОбщийМодульПолныйеПрава_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ПростойОбщийМодуль.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonModules.ПростойОбщийМодуль_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.Active.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.HTML.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.ВнешняяКомпонента.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.ГеографическаяСхема.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.ГрафическаяСхема.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.ДвоичныеДанные.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.МакетОформления.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.СКД.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.СКД_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.ТабличныйДокумент.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/CommonTemplates.ТекстовыйДокумент.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Constants.Константа1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Constants.Константа1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DataProcessors.Обработка1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DataProcessors.Обработка1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DefinedTypes.ОпределяемыйТип1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DocumentJournals.ЖурналДокументов1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/DocumentJournals.ЖурналДокументов1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Documents.Документ1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Documents.Документ1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Enums.Перечисление1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Enums.Перечисление1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/EventSubscriptions.ПодпискаНаСобытие1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ExternalDataSources.ТекущаяСУБД.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/ExternalDataSources.ТекущаяСУБД_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/FunctionalOptionsParameters.ПараметрФункциональныхОпций.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/HTTPServices.HTTPСервис1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/HTTPServices.HTTPСервис1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/InformationRegisters.РегистрСведений1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/InformationRegisters.РегистрСведений1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Reports.Отчет1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Reports.Отчет1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Sequences.Последовательность1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Sequences.Последовательность1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/SessionParameters.ПараметрСеанса1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Styles.Стиль.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Subsystems.ПерваяПодсистема.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/Tasks.Задача1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/WSReferences.WSСсылка.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/WebServices.WebСервис1.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses/WebServices.WebСервис1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_18/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_24/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_3_24/Styles.Стиль_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_5_1/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_ext/Configuration.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_ext/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/mdclasses_unknown/Configuration_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/BusinessProcesses.Задание.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/BusinessProcesses.Задание_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Catalogs.Заметки.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Catalogs.Заметки_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ChartsOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ChartsOfCharacteristicTypes.ДополнительныеРеквизитыИСведения_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommandGroups.Печать.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonAttributes.ОбластьДанныхВспомогательныеДанные.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonCommands.ОтправитьПисьмо.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonCommands.ОтправитьПисьмо_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonForms.Вопрос.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonForms.Вопрос_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonModules.АвтономнаяРабота.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonModules.АвтономнаяРабота_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonPictures.GoogleMaps.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/CommonTemplates.СтруктураПодчиненности.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Constants.ЗаголовокСистемы.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DataProcessors.ЗагрузкаКурсовВалют.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DataProcessors.ЗагрузкаКурсовВалют_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DefinedTypes.ВладелецФайлов.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DocumentJournals.Взаимодействия.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/DocumentJournals.Взаимодействия_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Documents.Анкета.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Documents.Анкета_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Enums.СтатусыОбработчиковОбновления.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Enums.СтатусыОбработчиковОбновления_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/EventSubscriptions.ВариантыОтчетовПередУдалениемИдентификатораОбъектаМетаданных.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ExchangePlans.ОбновлениеИнформационнойБазы.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ExchangePlans.ОбновлениеИнформационнойБазы_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/FilterCriteria.ФайлыВТоме.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/FilterCriteria.ФайлыВТоме_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/FunctionalOptions.ИспользоватьАнкетирование.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/FunctionalOptionsParameters.ТипВерсионируемогоОбъекта.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/InformationRegisters.ЭлектронныеПодписи.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/InformationRegisters.ЭлектронныеПодписи_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Languages.Русский.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Reports.АнализВерсийОбъектов.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Reports.АнализВерсийОбъектов_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Roles.БазовыеПраваБСП.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/ScheduledJobs.ОбновлениеАгрегатов.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/SessionParameters.ТекущийПользователь.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/SettingsStorages.ХранилищеВариантовОтчетов.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/SettingsStorages.ХранилищеВариантовОтчетов_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/StyleItems.ВажнаяНадписьШрифт.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/StyleItems.ВидДняПроизводственногоКалендаряВоскресеньеЦвет.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Subsystems.Администрирование.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Tasks.ЗадачаИсполнителя.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/Tasks.ЗадачаИсполнителя_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/WebServices.EnterpriseDataExchange_1_0_1_1.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/WebServices.EnterpriseDataExchange_1_0_1_1_edt.json is excluded by !**/*.json
  • src/test/resources/fixtures/ssl_3_1/XDTOPackages.ApdexExport_1_0_0_4.json is excluded by !**/*.json
📒 Files selected for processing (107)
  • build.gradle.kts (1 hunks)
  • docs/ru/examples.md (4 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/Configuration.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationExtension.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/ExternalDataProcessor.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/ExternalReport.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/MDClasses.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/AccountingRegister.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/AccumulationRegister.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Bot.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/BusinessProcess.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CalculationRegister.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Catalog.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfAccounts.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfCalculationTypes.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfCharacteristicTypes.java (4 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommandGroup.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonAttribute.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonCommand.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonForm.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonModule.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonPicture.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/CommonTemplate.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Constant.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/DataProcessor.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/DefinedType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Document.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/DocumentJournal.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/DocumentNumerator.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Enum.java (4 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/EventSubscription.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/ExchangePlan.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/ExternalDataSource.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/FilterCriterion.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/FunctionalOption.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/FunctionalOptionsParameter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/HTTPService.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/InformationRegister.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/IntegrationService.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Interface.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Language.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/MD.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/PaletteColor.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Report.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Role.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/ScheduledJob.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Sequence.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/SessionParameter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/SettingsStorage.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Style.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/StyleItem.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Subsystem.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Task.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/WSReference.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/WebService.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/XDTOPackage.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/AccountingFlag.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/Dimension.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/DocumentJournalColumn.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/EnumValue.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ExtDimensionAccountingFlag.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ExternalDataSourceTable.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ExternalDataSourceTableField.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/HTTPServiceMethod.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/HTTPServiceURLTemplate.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/IntegrationServiceChannel.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectAttribute.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectCommand.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectForm.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectTabularSection.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectTemplate.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/Recalculation.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/Resource.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/TaskAddressingAttribute.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/WebServiceOperation.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/children/WebServiceOperationParameter.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyFormData.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/FormData.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/ManagedFormData.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormAttribute.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormAttributeValueType.java (0 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormItem.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/SimpleFormItem.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ApplicationRunMode.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/AutoRecordType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ConfigurationExtensionPurpose.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataLockControlMode.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSeparation.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSetType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/EnumWithValue.java (0 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/FormType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/IndexingType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/InterfaceCompatibilityMode.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/MessageDirection.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/MetadataValueType.java (0 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/MultiLanguageString.java (0 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ObjectBelonging.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReturnValueReuse.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReuseSessions.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ScriptVariant.java (0 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/TemplateType.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/TransferDirection.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/UseMode.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java (1 hunks)
⛔ Files not processed due to max files limit (27)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/context/MDCReaderContext.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/DataSetConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/MultiLanguageStringConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/SubsystemConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeDescriptionConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeQualifierConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/DesignerReader.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormElementConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/MDChildConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/TemplateConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/EDTReader.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ExternalDataSourceTableConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormItemConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ObjectTemplateConverter.java
  • src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/Unmarshaller.java
  • src/test/java/com/github/_1c_syntax/bsl/examples/ValueTypeTest.java
  • src/test/java/com/github/_1c_syntax/bsl/mdclasses/ExternalReportTest.java
  • src/test/java/com/github/_1c_syntax/bsl/mdo/EnumTest.java
  • src/test/java/com/github/_1c_syntax/bsl/mdo/LanguageTest.java
  • src/test/java/com/github/_1c_syntax/bsl/mdo/support/ApplicationRunModeTest.java
  • src/test/java/com/github/_1c_syntax/bsl/mdo/support/InterfaceCompatibilityModeTest.java
  • src/test/java/com/github/_1c_syntax/bsl/mdo/support/ScriptVariantTest.java
  • src/test/java/com/github/_1c_syntax/bsl/smoke/EnumsTest.java
  • src/test/java/com/github/_1c_syntax/bsl/test_utils/MDTestUtils.java
💤 Files with no reviewable changes (5)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/MetadataValueType.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/EnumWithValue.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/MultiLanguageString.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormAttributeValueType.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ScriptVariant.java
🧰 Additional context used
🧬 Code graph analysis (2)
src/main/java/com/github/_1c_syntax/bsl/mdo/CommonForm.java (1)
src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyFormData.java (1)
  • EmptyFormData (35-69)
src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectForm.java (1)
src/main/java/com/github/_1c_syntax/bsl/mdo/storage/EmptyFormData.java (1)
  • EmptyFormData (35-69)
⏰ 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). (18)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: QA
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (17, ubuntu-latest)
🔇 Additional comments (80)
src/main/java/com/github/_1c_syntax/bsl/mdo/PaletteColor.java (1)

27-27: Импорт обновлён корректно

Переход на com.github._1c_syntax.bsl.types.MultiLanguageString согласуется с новой раскладкой common-lib и сохраняет поведение класса.

src/main/java/com/github/_1c_syntax/bsl/mdo/Subsystem.java (1)

29-29: Импорт обновлён корректно

Переход на com.github._1c_syntax.bsl.types.MultiLanguageString согласован с обновлённой общей библиотекой и не требует дополнительных правок.

src/main/java/com/github/_1c_syntax/bsl/mdo/MD.java (1)

28-29: Импорт обновлён корректно

Переход на com.github._1c_syntax.bsl.types соответствует релокации общих типов; дальнейших правок не требуется.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/IntegrationServiceChannel.java (1)

31-31: Импорт обновлён корректно.

Переход на com.github._1c_syntax.bsl.types.MultiLanguageString соответствует новой структуре common-library; дополнительных правок не требуется.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/Resource.java (1)

32-32: Перенос импорта выполнен корректно.

Изменение импорта MultiLanguageString из пакета bsl.mdo.support в bsl.types соответствует целям PR по переносу типов в общую библиотеку. Функциональность класса не затронута.

src/main/java/com/github/_1c_syntax/bsl/mdo/SessionParameter.java (1)

28-28: Импорт обновлён корректно.

Изменение импорта MultiLanguageString с пакета com.github._1c_syntax.bsl.mdo.support на com.github._1c_syntax.bsl.types соответствует целям PR по переносу типов в common library. Использование типа в поле synonym (строка 63) остаётся без изменений.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/ExtDimensionAccountingFlag.java (1)

32-32: Корректное обновление импорта.

Изменение пути импорта MultiLanguageString на новое расположение в пакете com.github._1c_syntax.bsl.types соответствует целям PR по переносу типов в common library. Функциональность класса не затронута.

src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfCalculationTypes.java (1)

32-32: Импорт MultiLanguageString обновлён во всех местах, старый пакет не используется.

src/main/java/com/github/_1c_syntax/bsl/mdo/WSReference.java (2)

1-21: LGTM! Обновление копирайта.

Обновление года в копирайте до 2025 является стандартной практикой обслуживания.


27-27: Старый пакет удалён: в кодовой базе отсутствуют файл MultiLanguageString.java в пакете com.github._1c_syntax.bsl.mdo.support и импорты/упоминания этого пакета.

src/main/java/com/github/_1c_syntax/bsl/mdo/Role.java (2)

1-22: Обновление года в copyright выглядит корректно.

Год копирайта обновлён до 2025, что соответствует текущему году.


28-28: Одобрить миграцию импорта MultiLanguageString
Проверка подтвердила отсутствие старых импортов com.github._1c_syntax.bsl.mdo.support.MultiLanguageString и корректное применение нового импорта во всех файлах.

src/main/java/com/github/_1c_syntax/bsl/mdo/CommonPicture.java (1)

27-27: Импорт MultiLanguageString перенесен корректно
Старых ссылок не обнаружено, новый API (константа EMPTY) доступен во всех местах использования.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/ManagedFormData.java (1)

28-28: Все упоминания MultiLanguageString обновлены
Импорты старого пакета отсутствуют, все ссылки используют com.github._1c_syntax.bsl.types.MultiLanguageString.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectForm.java (2)

1-22: Обновление года в копирайте выполнено корректно.

Добавление 2025 года в диапазон копирайта соответствует текущему времени и является стандартной практикой.


34-34: Импорт MultiLanguageString перенесён во всех файлах Старый путь импорта удалён, новый com.github._1c_syntax.bsl.types.MultiLanguageString используется повсеместно.

src/main/java/com/github/_1c_syntax/bsl/mdo/support/AutoRecordType.java (1)

37-50: Рефакторинг выглядит корректно.

Переход с EnumWithValue на EnumWithName с использованием MultiName для хранения локализованных имён выполнен правильно. Кэширование через статическую карту KEYS обеспечивает эффективный lookup. Использование Lombok аннотаций упрощает код.

src/main/java/com/github/_1c_syntax/bsl/mdo/Style.java (2)

1-21: Обновление копирайта выглядит корректно.

Обновление года в копирайте на 2025 соответствует стандартной практике.


27-27: Импорты MultiLanguageString обновлены во всех файлах
Скрипт подтвердил отсутствие импортов из пакета mdo.support и наличие новых из bsl.types.

src/main/java/com/github/_1c_syntax/bsl/mdo/HTTPService.java (2)

1-21: Обновление copyright корректно.

Год в copyright notice обновлён на 2025 — стандартная практика поддержки актуальности заголовков.


29-29: Импорт MultiLanguageString обновлён корректно
В кодовой базе не обнаружены старые импорты com.github._1c_syntax.bsl.mdo.support.MultiLanguageString.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/HTTPServiceURLTemplate.java (3)

1-22: Обновление копирайта выглядит корректно.

Год обновлён до 2025 в соответствии со стандартной практикой поддержки.


85-87: Реализация метода getChildren() корректна.

Метод правильно возвращает неизменяемое представление списка methods. Благодаря аннотации @Singular (строка 76) поле methods инициализируется Lombok как пустой список, если значения не предоставлены, поэтому риск NullPointerException отсутствует.


30-30: Импорты MultiLanguageString обновлены во всех файлах.
Старых импортов не найдено, во всех модулях используется com.github._1c_syntax.bsl.types.MultiLanguageString.

src/main/java/com/github/_1c_syntax/bsl/mdo/EventSubscription.java (1)

28-28: Проверьте наличие класса MultiLanguageString в зависимом модуле

Импорт com.github._1c_syntax.bsl.types.MultiLanguageString корректен, но сам класс отсутствует в этом репозитории и поставляется внешней общей библиотекой. Убедитесь, что в зависимостях подключена требуемая версия общего модуля, содержащая константу EMPTY.

src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java (4)

24-32: Импорты корректны.

Все добавленные импорты необходимы для новой реализации с EnumWithName и многоязычным хранением имен.


37-43: Проверьте значения для константы UNKNOWN.

Для константы UNKNOWN значения nameEn и nameEnAdd идентичны ("unknown"). Убедитесь, что это намеренное решение, так как для других констант эти значения различаются (например, "PersonalComputer" vs "PlatformApplication").


46-54: Структура полей и карты поиска корректна.

Использование ConcurrentSkipListMap для карты KEYS обеспечивает потокобезопасность, а fluent accessors улучшают читаемость API.


56-59: Проверьте использование одного и того же значения nameRu для обоих полей.

В конструкторе параметр nameRu используется для создания как fullName, так и fullNameAdd. Это означает, что оба поля имеют одинаковое русское имя, но разные английские (nameEn и nameEnAdd). Убедитесь, что такая асимметрия является намеренной и соответствует бизнес-логике.

src/main/java/com/github/_1c_syntax/bsl/mdo/ExchangePlan.java (1)

33-33: Изменение импорта согласовано с общей миграцией типов.

Перемещение MultiLanguageString в пакет com.github._1c_syntax.bsl.types соответствует целям PR по использованию новой версии common library. Изменение механическое, публичный API не затронут.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/TaskAddressingAttribute.java (1)

32-32: Изменение импорта выполнено корректно.

Перемещение MultiLanguageString в пакет типов согласуется с архитектурой проекта.

src/main/java/com/github/_1c_syntax/bsl/mdo/Bot.java (1)

27-27: LGTM!

Изменение импорта соответствует общему рефакторингу по переносу типов в common library.

src/main/java/com/github/_1c_syntax/bsl/mdo/storage/FormData.java (1)

27-27: Изменение импорта применено корректно.

Перемещение типа в пакет com.github._1c_syntax.bsl.types не влияет на интерфейс FormData.

src/main/java/com/github/_1c_syntax/bsl/mdo/AccumulationRegister.java (1)

34-34: Изменение импорта согласовано.

Перенос MultiLanguageString выполнен в соответствии с общей миграцией типов.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/Recalculation.java (1)

32-32: LGTM!

Изменение импорта выполнено корректно в рамках проектной миграции типов.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectAttribute.java (1)

32-32: Изменение импорта применено корректно.

Перемещение типа согласуется с архитектурными изменениями в проекте.

src/main/java/com/github/_1c_syntax/bsl/mdo/CommonAttribute.java (2)

32-32: Изменение импорта согласовано.

Перемещение MultiLanguageString в пакет типов выполнено корректно.


54-54: Улучшение документации.

Исправление комментария с "ReferenceObject" на "MDObject" точно отражает реализуемый интерфейс класса (строка 49).

src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectTemplate.java (1)

33-33: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString перенесён в пакет com.github._1c_syntax.bsl.types в соответствии с рефакторингом для использования новой версии common library. Функциональность класса не изменена.

src/main/java/com/github/_1c_syntax/bsl/mdo/Constant.java (1)

28-28: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString перенесён в пакет com.github._1c_syntax.bsl.types. Публичный API класса Constant не изменён.

src/main/java/com/github/_1c_syntax/bsl/mdo/BusinessProcess.java (1)

32-32: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString обновлён для использования нового пакета com.github._1c_syntax.bsl.types. Логика класса BusinessProcess не затронута.

src/main/java/com/github/_1c_syntax/bsl/mdo/InformationRegister.java (1)

34-34: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString перенесён в пакет com.github._1c_syntax.bsl.types. Публичный API класса InformationRegister не изменён.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/AccountingFlag.java (1)

32-32: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString обновлён для использования нового пакета com.github._1c_syntax.bsl.types. Функциональность класса AccountingFlag не изменена.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/ObjectTabularSection.java (1)

31-31: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString перенесён в пакет com.github._1c_syntax.bsl.types. Публичный API класса ObjectTabularSection не изменён.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/HTTPServiceMethod.java (1)

30-30: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString обновлён для использования нового пакета com.github._1c_syntax.bsl.types. Логика класса HTTPServiceMethod не затронута.

src/main/java/com/github/_1c_syntax/bsl/mdo/ExternalDataSource.java (1)

30-30: Изменение импорта согласовано с переносом типов.

Импорт MultiLanguageString перенесён в пакет com.github._1c_syntax.bsl.types. Публичный API класса ExternalDataSource не изменён.

src/main/java/com/github/_1c_syntax/bsl/mdo/DocumentNumerator.java (1)

27-27: Изменение импорта выполнено корректно.

Перенос MultiLanguageString в пакет com.github._1c_syntax.bsl.types соответствует общей миграции типов в рамках PR.

src/main/java/com/github/_1c_syntax/bsl/mdo/DefinedType.java (1)

27-27: Изменение импорта выполнено корректно.

Миграция MultiLanguageString в пакет типов соответствует архитектуре PR.

src/main/java/com/github/_1c_syntax/bsl/mdo/CommonTemplate.java (1)

30-30: Изменение импорта выполнено корректно.

Обновление пути импорта MultiLanguageString согласуется с общей рефакторингом типов.

build.gradle.kts (1)

61-61: Обновление версии зависимости выполнено корректно.

Переход на версию 0.9.0.16-SNAPSHOT библиотеки bsl-common-library согласуется с миграцией типов в новый пакет.

src/main/java/com/github/_1c_syntax/bsl/mdo/Language.java (2)

28-29: Изменение импортов выполнено корректно.

Перенос MultiLanguageString и ScriptVariant в пакет com.github._1c_syntax.bsl.types соответствует общей миграции типов.


105-106: Проверьте в обновлённой версии зависимости наличие методов groupName() и groupNameRu() в enum MDOType.

src/main/java/com/github/_1c_syntax/bsl/mdo/ScheduledJob.java (1)

28-28: Изменение импорта выполнено корректно.

Обновление пути импорта MultiLanguageString соответствует общей миграции типов в PR.

src/main/java/com/github/_1c_syntax/bsl/mdo/CommonForm.java (1)

31-31: Изменение импорта выполнено корректно.

Перенос MultiLanguageString в пакет com.github._1c_syntax.bsl.types согласуется с общей архитектурой изменений.

src/main/java/com/github/_1c_syntax/bsl/mdo/FilterCriterion.java (1)

31-31: Изменение импорта выполнено корректно.

Миграция MultiLanguageString в пакет типов выполнена согласованно с остальными изменениями в PR.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/MDClasses.java (1)

199-199: LGTM! Использование нового API для получения имени группы.

Изменение с getGroupName() на groupName() соответствует обновлению API в типе MDOType. Изменение выглядит корректно в контексте общей рефакторинга.

src/main/java/com/github/_1c_syntax/bsl/mdo/Catalog.java (2)

32-32: LGTM! Миграция импорта в новый пакет.

Импорт MultiLanguageString перенесён в пакет com.github._1c_syntax.bsl.types, что соответствует общей рефакторинге в рамках PR.


106-110: LGTM! Добавлено хранение владельцев для справочника.

Новое поле owners с аннотацией @Singular("addOwners") позволяет использовать builder-паттерн для накопления владельцев. Изменение соответствует целям PR и корректно реализовано.

src/main/java/com/github/_1c_syntax/bsl/mdo/Report.java (1)

32-32: LGTM! Миграция импорта в новый пакет.

Импорт MultiLanguageString корректно перенесён в com.github._1c_syntax.bsl.types.

src/main/java/com/github/_1c_syntax/bsl/mdo/CommonCommand.java (1)

29-29: LGTM! Миграция импорта в новый пакет.

Изменение импорта соответствует общей рефакторинге типов в рамках PR.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/DocumentJournalColumn.java (1)

30-30: LGTM! Миграция импорта в новый пакет.

Импорт корректно обновлён для использования типа из нового пакета.

src/main/java/com/github/_1c_syntax/bsl/mdo/Interface.java (1)

27-27: LGTM! Миграция импорта в новый пакет.

Изменение импорта выполнено корректно.

src/main/java/com/github/_1c_syntax/bsl/mdo/DocumentJournal.java (1)

33-33: LGTM! Миграция импорта в новый пакет.

Импорт успешно перенесён в соответствии с общей архитектурой.

src/main/java/com/github/_1c_syntax/bsl/mdo/Enum.java (2)

32-32: LGTM! Миграция импорта в новый пакет.

Импорт MultiLanguageString корректно обновлён.


48-48: LGTM! Добавлена поддержка атрибутов для перечислений.

Класс теперь реализует интерфейс AttributeOwner, что добавляет:

  • Поле attributes с поддержкой builder-паттерна через @Singular
  • Метод getAllAttributes(), корректно делегирующий к getAttributes()

Изменение расширяет публичный API и согласовано с общей архитектурой MDO-типов.

Also applies to: 100-106, 141-144

src/main/java/com/github/_1c_syntax/bsl/mdclasses/Configuration.java (1)

87-88: Импорт перенесён корректно.

Новые пути в com.github._1c_syntax.bsl.types соответствуют переходу типов в общее ядро, функциональность не меняется.

src/main/java/com/github/_1c_syntax/bsl/mdo/CalculationRegister.java (1)

35-35: Импорт обновлён к новому пакету.

Перенос MultiLanguageString в bsl.types согласован с обновлением common-library, код остаётся работоспособным.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java (1)

35-35: Импорт ScriptVariant соответствует новой структуре.

Использование com.github._1c_syntax.bsl.types.ScriptVariant корректно и не влияет на API интерфейса.

src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfAccounts.java (1)

34-34: Импорт MultilanguageString обновлён верно.

Переезд в bsl.types отражён корректно, других изменений не требуется.

src/main/java/com/github/_1c_syntax/bsl/mdo/children/EnumValue.java (1)

28-28: Актуализирован путь к MultiLanguageString.

Импорт из com.github._1c_syntax.bsl.types согласован с остальными изменениями, поведение класса прежнее.

src/main/java/com/github/_1c_syntax/bsl/mdo/WebService.java (1)

30-30: Импорт успешно обновлён.

Перенос MultiLanguageString в пакет com.github._1c_syntax.bsl.types соответствует целям PR по использованию новой версии common library. Изменение согласовано с аналогичными обновлениями в других файлах.

src/main/java/com/github/_1c_syntax/bsl/mdo/CommonModule.java (1)

29-29: Импорт корректно обновлён.

Изменение пути импорта MultiLanguageString согласуется с рефакторингом, описанным в целях PR. Публичный API класса остаётся неизменным.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/ConfigurationExtension.java (1)

86-87: Импорты успешно обновлены.

Перенос MultiLanguageString и ScriptVariant в пакет com.github._1c_syntax.bsl.types соответствует архитектурным изменениям PR. Использование этих типов в полях класса (synonym, scriptVariant) остаётся корректным.

src/main/java/com/github/_1c_syntax/bsl/mdo/DataProcessor.java (1)

32-32: Импорт корректно обновлён.

Обновление пути импорта MultiLanguageString согласуется с общей миграцией типов в пакет com.github._1c_syntax.bsl.types. Использование типа в полях synonym и explanation остаётся корректным.

src/main/java/com/github/_1c_syntax/bsl/mdo/StyleItem.java (1)

27-27: Импорт успешно обновлён.

Изменение пути импорта MultiLanguageString соответствует систематическому рефакторингу в рамках PR. Публичный API класса не изменился.

src/main/java/com/github/_1c_syntax/bsl/mdo/FunctionalOptionsParameter.java (1)

27-27: Импорт корректно обновлён.

Обновление импорта MultiLanguageString согласуется с перемещением типов в common library, как указано в целях PR. Использование типа остаётся неизменным.

src/main/java/com/github/_1c_syntax/bsl/mdo/SettingsStorage.java (1)

30-30: Импорт успешно обновлён.

Перенос MultiLanguageString в пакет com.github._1c_syntax.bsl.types соответствует общей стратегии рефакторинга. Функциональность класса не изменилась.

src/main/java/com/github/_1c_syntax/bsl/mdclasses/ExternalDataProcessor.java (1)

34-34: Импорт корректно обновлён.

Изменение пути импорта MultiLanguageString согласуется с миграцией типов в common library. Публичный API класса ExternalDataProcessor остаётся неизменным.

src/main/java/com/github/_1c_syntax/bsl/mdo/XDTOPackage.java (2)

28-28: Проверено использование поля synonym.
Импорт com.github._1c_syntax.bsl.types.MultiLanguageString корректен. Обращения к полю synonym класса XDTOPackage не найдены за пределами этого класса. Проверьте бинарную совместимость нового типа MultiLanguageString.


56-56: Проверьте наличие EMPTY в com.github._1c_syntax.bsl.types.MultiLanguageString. Убедитесь, что в этом классе определена и доступна статическая константа EMPTY.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/package-info.java (1)

23-28: Изменения выглядят корректно.

Аннотация @ParametersAreNonnullByDefault правильно применена на уровне пакета. Структура файла package-info.java соответствует стандартам Java.

Для полноты консистентности с пакетом support, где используются обе аннотации, рассмотрите возможность добавления @ReturnValuesAreNonnullByDefault:

 /**
  * Пакет для хранения данных элементов форм
  */
 @ParametersAreNonnullByDefault
+@ReturnValuesAreNonnullByDefault
 package com.github._1c_syntax.bsl.mdo.storage.form;
 
+import edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault;
+
 import javax.annotation.ParametersAreNonnullByDefault;
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e20d12d and f02b0f0.

📒 Files selected for processing (4)
  • docs/ru/examples.md (5 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/package-info.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/Handler.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/package-info.java (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/ru/examples.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-06T14:38:27.312Z
Learnt from: theshadowco
PR: 1c-syntax/mdclasses#524
File: src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java:61-69
Timestamp: 2025-10-06T14:38:27.312Z
Learning: В проекте mdclasses используются JSR-305 аннотации (ParametersAreNonnullByDefault) на уровне пакетов для обеспечения null-safety через статический анализ, что является приемлемым подходом вместо явных runtime проверок.

Applied to files:

  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/package-info.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). (18)
  • GitHub Check: QA
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: build (21, windows-latest)
🔇 Additional comments (2)
src/main/java/com/github/_1c_syntax/bsl/mdo/support/Handler.java (1)

26-26: Отличное улучшение null-безопасности!

Добавление аннотации @Nullable делает контракт API явным и документирует, что конструктор корректно обрабатывает null-значения (преобразуя их в пустую строку на строке 49). Это хорошая практика, которая улучшает читаемость кода и согласуется с общими улучшениями null-безопасности в репозитории.

Also applies to: 48-48

src/main/java/com/github/_1c_syntax/bsl/mdo/support/package-info.java (1)

27-33: Отличная работа!

Аннотации @ParametersAreNonnullByDefault и @ReturnValuesAreNonnullByDefault корректно применены на уровне пакета. Использование аннотаций из разных источников (JSR-305 и FindBugs) является нормальной практикой, поскольку стандарт JSR-305 не определяет ReturnValuesAreNonnullByDefault.

Структура файла package-info.java правильная: аннотации → package declaration → imports.

Based on learnings.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReturnValueReuse.java (1)

59-61: Добавьте проверку null перед преобразованием к нижнему регистру

Проброс null по-прежнему приводит к NullPointerException; ожидаемое поведение — вернуть UNKNOWN. Повторяю ранее оставленное замечание: оберните доступ в проверку и обрабатывайте пустые строки аналогично.

   public static ReturnValueReuse valueByName(String string) {
-    return KEYS.getOrDefault(string.toLowerCase(Locale.ROOT), UNKNOWN);
+    if (string == null || string.isBlank()) {
+      return UNKNOWN;
+    }
+
+    return KEYS.getOrDefault(string.toLowerCase(Locale.ROOT), UNKNOWN);
   }
src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java (1)

137-139: Критическая проблема с null остаётся нерешённой

Вызов string.toLowerCase(Locale.ROOT) приведёт к NPE при передаче null. Это критическая проблема, которая уже была отмечена в предыдущем обзоре, но не исправлена. При парсинге MDO атрибут может отсутствовать, и код упадёт до того, как getOrDefault сможет вернуть UNKNOWN.

Примените предложенное ранее исправление:

  public static RoleRight valueByName(String string) {
-    return KEYS.getOrDefault(string.toLowerCase(Locale.ROOT), UNKNOWN);
+    if (string == null) {
+      return UNKNOWN;
+    }
+    String normalized = string.trim().toLowerCase(Locale.ROOT);
+    if (normalized.isEmpty()) {
+      return UNKNOWN;
+    }
+    return KEYS.getOrDefault(normalized, UNKNOWN);
  }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f02b0f0 and 80b0cd8.

📒 Files selected for processing (7)
  • src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Subsystem.java (2 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/package-info.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReturnValueReuse.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/package-info.java (1 hunks)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/main/java/com/github/_1c_syntax/bsl/mdo/Subsystem.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/support/package-info.java
  • src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/package-info.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). (18)
  • GitHub Check: QA
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (17, windows-latest)
🔇 Additional comments (5)
src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java (2)

35-35: Изменение импорта выглядит корректно.

Перенос ScriptVariant в пакет com.github._1c_syntax.bsl.types соответствует целям PR по использованию новой версии common library и переносу классов типов значений в общую библиотеку.


165-167: Улучшение форматирования Javadoc.

Разделение описания на две строки с добавлением пустой строки перед описанием параметра улучшает читаемость документации.

src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java (3)

24-25: Переход на EnumWithName выглядит правильно

Использование EnumWithName и MultiName из common library обеспечивает единообразный подход к хранению двуязычных имён перечислений. Добавление @ToString(of = "fullName") улучшает читаемость при отладке.

Also applies to: 36-37


38-121: Константы перечисления и инициализация KEYS корректны

Все константы корректно мигрированы на двухпараметрический конструктор с английским и русским именами. Использование EnumWithName.computeKeys(values()) для инициализации карты поиска более лаконично и менее подвержено ошибкам по сравнению с ручным заполнением.


123-129: Хранение через MultiName упрощает структуру

Замена двух отдельных полей на единое MultiName fullName улучшает инкапсуляцию и согласованность. Конструктор корректно делегирует создание объекта методу MultiName.create().

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (1)

60-63: Статический вызов через invoke(null, …) — исправлено. LGTM.

Это устраняет прежнюю ошибку вызова на экземпляре.

🧹 Nitpick comments (3)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (3)

32-36: Javadoc устарела (EnumWithValues) — обновите описание.

Сейчас конвертер работает с EnumWithName и не требует писать наследников; достаточно регистрировать EnumConverter. Предлагаю поправить текст.

- * Для каждого конкретного перечисления надо создать собственный класс, унаследованный от EnumWithValues.
- * Необходимо в конструкторе передать класс перечисления и зарегистрировать созданный класс конвертора в
- * *XStreamFactory.
+ * Для использования с конкретным перечислением достаточно зарегистрировать
+ * EnumConverter<ВашEnum> в XStream (см. ExtendXStream).
+ * Перечисление должно реализовывать EnumWithName и предоставлять статический метод valueByName(String).

28-30: Надёжнее искать valueByName по сигнатуре, проверить static/return type и включить setAccessible.

Сейчас берётся первый метод по имени — риск неверной перегрузки/IllegalAccessException. Предлагаю жёстко искать valueByName(String), проверить что он static и возвращает T, и сделать setAccessible(true).

@@
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
@@
-    Method methodFind = null;
-    for (var method : clazz.getDeclaredMethods()) {
-      if ("valueByName".equals(method.getName())) {
-        methodFind = method;
-        break;
-      }
-    }
-    if (methodFind != null) {
-      valueByNameMethod = methodFind;
-    } else {
-      throw new ClassCastException("Not found method valueByName");
-    }
+    try {
+      var m = clazz.getDeclaredMethod("valueByName", String.class);
+      if (!Modifier.isStatic(m.getModifiers())) {
+        throw new IllegalArgumentException("valueByName must be static: " + clazz.getName());
+      }
+      if (!enumClazz.isAssignableFrom(m.getReturnType())) {
+        throw new IllegalArgumentException("valueByName must return " + enumClazz.getName());
+      }
+      m.setAccessible(true);
+      valueByNameMethod = m;
+    } catch (NoSuchMethodException e) {
+      throw new IllegalArgumentException("Not found valueByName(String) in " + clazz.getName(), e);
+    }

Also applies to: 44-55


58-65: Обработка null/пустых значений.

Нужно ли трактовать null/"" как null поля? Если да — добавьте guard.

   @Override
   public Object fromString(String sourceString) {
-    try {
+    if (sourceString == null || sourceString.isBlank()) {
+      return null;
+    }
+    try {
       return valueByNameMethod.invoke(null, sourceString);
     } catch (IllegalAccessException | InvocationTargetException e) {
       throw new RuntimeException(e);
     }
   }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 80b0cd8 and 5a50594.

📒 Files selected for processing (1)
  • src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (2 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java (1)
src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java (1)
  • Slf4j (98-359)
⏰ 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). (18)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (17, windows-latest)
  • GitHub Check: QA
  • GitHub Check: build (23, windows-latest)
  • GitHub Check: build (23, ubuntu-latest)
  • GitHub Check: build (21, ubuntu-latest)
  • GitHub Check: build (23, macOS-latest)
  • GitHub Check: build (21, windows-latest)
  • GitHub Check: build (21, macOS-latest)
  • GitHub Check: build (17, macOS-latest)
  • GitHub Check: build (17, ubuntu-latest)
  • GitHub Check: build (17, windows-latest)

Copy link

sonarqubecloud bot commented Oct 6, 2025

@theshadowco theshadowco changed the title Типы значений. продолжение Типы значений в пропущенных на первом этапе местах. Добавление двухязычного хранения значений перечислений Oct 6, 2025
coderabbitai bot added a commit that referenced this pull request Oct 6, 2025
Docstrings generation was requested by @theshadowco.

* #524 (comment)

The following files were modified:

* `src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdclasses/MDClasses.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/Catalog.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/ChartOfCharacteristicTypes.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/Enum.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/Language.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/storage/form/FormElementType.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/ApplicationRunMode.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/AutoRecordType.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/ConfigurationExtensionPurpose.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataLockControlMode.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSeparation.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/DataSetType.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/FormType.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/Handler.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/IndexingType.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/InterfaceCompatibilityMode.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/MessageDirection.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/ObjectBelonging.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReturnValueReuse.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/ReuseSessions.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/RoleRight.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/TemplateType.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/TransferDirection.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/UseMode.java`
* `src/main/java/com/github/_1c_syntax/bsl/mdo/support/UsePurposes.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/context/MDCReaderContext.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/DataSetConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/EnumConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/SubsystemConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeDescriptionConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/converter/ValueTypeQualifierConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/common/xstream/ExtendXStream.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/designer/DesignerReader.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/FormElementConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/MDChildConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/designer/converter/TemplateConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/edt/EDTReader.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ExternalDataSourceTableConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/FormItemConverter.java`
* `src/main/java/com/github/_1c_syntax/bsl/reader/edt/converter/ObjectTemplateConverter.java`
* `src/test/java/com/github/_1c_syntax/bsl/test_utils/MDTestUtils.java`
Copy link

coderabbitai bot commented Oct 6, 2025

Note

Generated docstrings for this pull request at #525

@theshadowco
Copy link
Member Author

@coderabbitai

  1. Измени язык комментариев на русский, в проекте принятно так писать javadoc
  2. В конце каждого изменяемого файла должна быть пустая строка

Copy link

coderabbitai bot commented Oct 6, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# 1) List changed files in PR
CHANGED_FILES=$(gh pr view 524 --json files --jq '.files[].path')

echo "== Changed files count =="
echo "$CHANGED_FILES" | wc -l

echo "== Files missing trailing blank line =="
echo "$CHANGED_FILES" | while read -r f; do
  [ -z "$f" ] && continue
  if [ -f "$f" ]; then
    # skip obviously non-text files by simple heuristic
    case "$f" in
      *.png|*.jpg|*.jpeg|*.gif|*.ico|*.jar|*.zip|*.gz) continue;;
    esac
    # Check last line is empty (blank line at EOF)
    # If file is empty, require one blank line as well
    last_line="$(tail -n 1 "$f" 2>/dev/null || true)"
    if [ -n "$last_line" ]; then
      echo "$f"
    fi
  fi
done

echo "== Javadoc blocks likely not in Russian (no Cyrillic detected) =="
# 2) Scan Javadoc in changed Java files and report blocks without Cyrillic letters
python - << 'PY'
import re, sys, subprocess

changed = subprocess.check_output(
  ["gh", "pr", "view", "524", "--json", "files", "--jq", ".files[].path"],
  text=True
).splitlines()

javadoc_re = re.compile(r"/\*\*([\s\S]*?)\*/", re.DOTALL)
has_cyrillic = re.compile(r"[\u0400-\u04FF]")
has_latin = re.compile(r"[A-Za-z]")

def line_num_for(text, idx):
  return text.count("\n", 0, idx) + 1

any_reported = False

for f in changed:
  if not f.endswith(".java"):
    continue
  try:
    with open(f, "r", encoding="utf-8") as fh:
      content = fh.read()
  except Exception:
    continue
  for m in javadoc_re.finditer(content):
    block = m.group(1)
    # Ignore trivial blocks that contain no letters at all
    if not has_latin.search(block) and not has_cyrillic.search(block):
      continue
    # If no Cyrillic but Latin is present, likely English
    if (not has_cyrillic.search(block)) and has_latin.search(block):
      start = line_num_for(content, m.start())
      end = line_num_for(content, m.end())
      snippet = block.strip().splitlines()
      snippet = "\n".join(snippet[:6])
      print(f"{f}: Lines {start}-{end}\n{snippet}\n---")
      any_reported = True

if not any_reported:
  print("No English-only Javadoc blocks detected.")
PY

Length of output: 6630


@theshadowco, я проверил изменённые файлы:

Результаты проверки

1. Javadoc на русском языке:
Все блоки Javadoc в изменённых файлах либо уже содержат кириллицу, либо являются служебными без текстовых описаний. Перевода на русский не требуется.

2. Пустая строка в конце файлов:
Обнаружено 100 файлов без завершающей пустой строки. Вот некоторые из них:

  • build.gradle.kts
  • docs/ru/examples.md
  • Все изменённые Java-файлы в src/main/java/com/github/_1c_syntax/bsl/...

Рекомендации

Учитывая большое количество файлов, предлагаю один из способов исправления:

Вариант 1: Через IDE (IntelliJ IDEA)

Settings → Editor → General → Ensure every saved file ends with a line break

Затем пересохраните все файлы (Ctrl+S на каждом или используйте File → Save All).

Вариант 2: Через скрипт

# Добавить пустую строку в конце всех файлов PR
gh pr view 524 --json files --jq '.files[].path' | while read -r f; do
  if [ -f "$f" ] && [ -n "$(tail -c 1 "$f" 2>/dev/null)" ]; then
    echo "" >> "$f"
  fi
done

Вариант 3: Через Git pre-commit hook
Настроить автоматическое добавление пустой строки при коммитах.

Какой вариант вам подходит больше?


✏️ Learnings added
Learnt from: theshadowco
URL: https://github.com/1c-syntax/mdclasses/pull/524

Timestamp: 2025-10-06T15:29:06.043Z
Learning: В проекте mdclasses принято писать Javadoc на русском языке.

Learnt from: theshadowco
URL: https://github.com/1c-syntax/mdclasses/pull/524

Timestamp: 2025-10-06T15:29:06.043Z
Learning: В проекте mdclasses каждый файл должен заканчиваться пустой строкой.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@theshadowco
Copy link
Member Author

@coderabbitai
Изменения по javadoc и окончания фалов примени в своем реквесте #525

@theshadowco theshadowco merged commit 7341412 into develop Oct 6, 2025
35 checks passed
@theshadowco theshadowco deleted the feature/updCommonLib branch October 6, 2025 15:39
Copy link

coderabbitai bot commented Oct 6, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

@theshadowco, к сожалению, я не могу напрямую коммитить изменения в репозиторий. Однако я могу помочь вам применить эти изменения самостоятельно.

Позвольте мне сначала проверить содержимое PR #525, чтобы понять, какие файлы нужно исправить.


🏁 Script executed:

#!/bin/bash
# Получаем информацию о PR #525
gh pr view 525 --json files,title,state --jq '{title: .title, state: .state, files: [.files[].path]}'

Length of output: 7042


@theshadowco, я понимаю вашу просьбу, но, к сожалению, я не могу напрямую коммитить изменения в репозиторий. Однако я могу помочь вам быстро исправить эти проблемы.

Давайте проверим, какие файлы в PR #525 нуждаются в исправлениях:


🏁 Script executed:

#!/bin/bash
# Переключаемся на ветку PR #525 и проверяем файлы без завершающей пустой строки
gh pr checkout 525

echo "=== Файлы без завершающей пустой строки в PR #525 ==="
gh pr view 525 --json files --jq '.files[].path' | while read -r f; do
  [ -z "$f" ] && continue
  if [ -f "$f" ]; then
    # Пропускаем бинарные файлы
    case "$f" in
      *.png|*.jpg|*.jpeg|*.gif|*.ico|*.jar|*.zip|*.gz) continue;;
    esac
    # Проверяем последнюю строку
    last_line="$(tail -n 1 "$f" 2>/dev/null || true)"
    if [ -n "$last_line" ]; then
      echo "$f"
    fi
  fi
done | head -20

echo ""
echo "=== Всего файлов без завершающей пустой строки ==="
gh pr view 525 --json files --jq '.files[].path' | while read -r f; do
  [ -z "$f" ] && continue
  if [ -f "$f" ]; then
    case "$f" in
      *.png|*.jpg|*.jpeg|*.gif|*.ico|*.jar|*.zip|*.gz) continue;;
    esac
    last_line="$(tail -n 1 "$f" 2>/dev/null || true)"
    if [ -n "$last_line" ]; then
      echo "$f"
    fi
  fi
done | wc -l

echo ""
echo "=== Проверка Javadoc на наличие английского текста (первые 10 файлов) ==="
python3 - << 'PY'
import re, subprocess

changed = subprocess.check_output(
  ["gh", "pr", "view", "525", "--json", "files", "--jq", ".files[].path"],
  text=True
).splitlines()

javadoc_re = re.compile(r"/\*\*([\s\S]*?)\*/", re.DOTALL)
has_cyrillic = re.compile(r"[\u0400-\u04FF]")
has_latin = re.compile(r"[A-Za-z]")

count = 0
for f in changed:
  if not f.endswith(".java") or count >= 10:
    break
  try:
    with open(f, "r", encoding="utf-8") as fh:
      content = fh.read()
  except Exception:
    continue
  for m in javadoc_re.finditer(content):
    block = m.group(1)
    if not has_latin.search(block) and not has_cyrillic.search(block):
      continue
    if (not has_cyrillic.search(block)) and has_latin.search(block):
      line_num = content.count("\n", 0, m.start()) + 1
      snippet = block.strip().splitlines()[0][:80]
      print(f"{f}:{line_num}: {snippet}")
      count += 1
      if count >= 10:
        break
PY

Length of output: 1712


@theshadowco, отличные новости! Проверка показала:

✅ Javadoc

Все блоки Javadoc в PR #525 уже на русском языке. Никаких изменений не требуется.

❌ Завершающие пустые строки

Обнаружено 96 файлов без завершающей пустой строки в конце.

Решение

Поскольку я не могу напрямую коммитить в репозиторий, предлагаю вам выполнить следующий скрипт локально:

#!/bin/bash
# Скрипт для добавления пустой строки в конец всех файлов PR #525

# Переключитесь на ветку PR #525
gh pr checkout 525

# Добавляем пустую строку в конец файлов, если её нет
gh pr view 525 --json files --jq '.files[].path' | while read -r f; do
  [ -z "$f" ] && continue
  if [ -f "$f" ]; then
    # Пропускаем бинарные файлы
    case "$f" in
      *.png|*.jpg|*.jpeg|*.gif|*.ico|*.jar|*.zip|*.gz) continue;;
    esac
    # Проверяем и добавляем пустую строку если нужно
    if [ -n "$(tail -c 1 "$f" 2>/dev/null)" ]; then
      echo "" >> "$f"
      echo "Исправлен: $f"
    fi
  fi
done

echo ""
echo "Готово! Теперь выполните:"
echo "  git add ."
echo "  git commit -m 'fix: Добавлены завершающие пустые строки'"
echo "  git push"

Альтернативный вариант через IDE:
Если вы используете IntelliJ IDEA:

  1. Settings → Editor → General → Ensure every saved file ends with a line break
  2. Откройте и пересохраните все файлы: File → Save All (Ctrl+S)
  3. Закоммитьте изменения

Какой вариант вам удобнее?


🧠 Learnings used
Learnt from: theshadowco
PR: 1c-syntax/mdclasses#0
File: :0-0
Timestamp: 2025-10-06T15:29:06.043Z
Learning: В проекте mdclasses принято писать Javadoc на русском языке.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant