Skip to content

манипуляция провайдерами настроек через совет другого мастера#139

Open
Segate-ekb wants to merge 9 commits into
autumn-library:masterfrom
Segate-ekb:feature/advice
Open

манипуляция провайдерами настроек через совет другого мастера#139
Segate-ekb wants to merge 9 commits into
autumn-library:masterfrom
Segate-ekb:feature/advice

Conversation

@Segate-ekb

@Segate-ekb Segate-ekb commented Apr 28, 2026

Copy link
Copy Markdown

Требует oscript-library/configor#49

Если вкратце:
Инкапсулировал билдер менеджера параметров в отдельной абстракции.
Теперь есть возможность управлять настройками гибко. Переопределять приоритеты чтения, добавлять, изменять и удалять провайдеры.

Пример:

СоветДругогоМастера = Новый СоветДругогоМастера();
Строитель = СоветДругогоМастера.ПолучитьСтроительМенеджераПараметров();

// Очистим дефолтный набор и соберём свой каскад
Строитель.ОчиститьПровайдеры();

// 1. Соответствие 
Дефолты = Новый Соответствие;
Дефолты.Вставить("logLevel", "INFO");
Дефолты.Вставить("port",     8080);
Строитель.ДобавитьПровайдерСоответствие(Дефолты, 5, "defaults");

// 2. Конфиг приложения (рядом с библиотекой, например .../lib/vanessa-runner/src)
//    Необязательный; форматы yaml/json/ini подхватываются автоматически.
КаталогБиблиотеки = ОбъединитьПути(КаталогПрограммы(), "lib", "vanessa-runner", "src");
Строитель
    .ДобавитьПровайдерФайлов("app", 4)
    .УстановитьИмяФайла("vrunner")
    .УстановитьСтандартныеКаталогиПоиска(КаталогБиблиотеки);

// 3. Конфиг пользователя по умолчанию (каталог запуска / стандартные каталоги поиска)
Строитель
    .ДобавитьПровайдерФайлов("user", 3)
    .УстановитьИмяФайла("vrunner");

// 4. Переменные среды
Строитель.ДобавитьПровайдерENV("VRUNNER_", 2, "env");

// 5. Явный файл настроек из --settings (самый высокий приоритет)
Если ЗначениеЗаполнено(ПутьКФайлуSettings) Тогда
    Строитель.ДобавитьПровайдерФайлНастроек(ПутьКФайлуSettings, 1, "settings");
КонецЕсли;

Поделка = Новый Поделка(СоветДругогоМастера);

@coderabbitai

coderabbitai Bot commented Apr 28, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Вводится ленивый построитель конфигурации параметров СтроительМенеджераПараметров и файловый метапровайдер; инициализация менеджера параметров делегирована построителю. СоветДругогоМастера предоставляет доступ к кэширующему построителю и помечает старые сеттеры как устаревшие, применяя их значения только если они явно установлены.

Changes

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

Layer / File(s) Summary
Строитель менеджера параметров
src/internal/Классы/СтроительМенеджераПараметров.os, docs/api/050-Классы/25-СтроительМенеджераПараметров.md, tests/СтроительМенеджераПараметров.os
Новый ленивый построитель, API для регистрации/удаления/управления провайдерами (env, inline, файловые метапровайдеры), кеширование менеджера, дефолтный набор провайдеров; документация и тесты покрывают поведение, разворачивание в физические провайдеры и error-пути.

Файловый метапровайдер

Layer / File(s) Summary
Файловый метапровайдер
src/internal/Классы/ФайловыйМетапровайдер.os
Новый метапровайдер, создающий физические провайдеры по форматам (yaml/json/ini), проксирующий конфигурацию (имя файла, пути поиска, приоритет) и реализующий включение/отключение; валидация форматов и поведение для одноформатного мета.

Интеграция и инициализация

Layer / File(s) Summary
Интеграция с СоветДругогоМастера
src/Классы/СоветДругогоМастера.os, src/Классы/Поделка.os, docs/api/050-Классы/20-СоветДругогоМастера.md, tests/СоветДругогоМастера.os
Поделка делегирует получение/инициализацию менеджера построителю. СоветДругогоМастера добавляет ПолучитьСтроительМенеджераПараметров(), кэширование построителя, трекинг явно установленных устаревших полей и вывод предупреждений; документация обновлена с миграционными указаниями; тесты проверяют совместимость и кэширование.

Документация и индекс

Layer / File(s) Summary
Докстраницы и индекс
docs/api/index.md, docs/api/050-Классы/20-СоветДругогоМастера.md
Добавлена страница построителя в индекс, обновлены страницы с описанием построителя и пометками устаревших методов и миграционными инструкциями.

Форматирование

Layer / File(s) Summary
Мелкие правки форматирования
src/internal/Классы/ФабрикаЖелудей.os
Небольшие верстка/форматирующие правки без изменения логики.

Зависимости

Layer / File(s) Summary
packagedef
packagedef
Обновлён pinned-запрос зависимости configor и версия пакета/среды.

Sequence Diagram(s)

sequenceDiagram
    participant Поделка as Поделка
    participant СДМ as СоветДругогоМастера
    participant Строитель as СтроительМенеджераПараметров
    participant Метапров as ФайловыйМетапровайдер
    participant МП as МенеджерПараметров

    Note over Поделка,МП: Новый поток (после PR)
    Поделка->>СДМ: ПолучитьСтроительМенеджераПараметров()
    activate СДМ
    СДМ->>Строитель: ленивое создание/возврат кэша
    activate Строитель
    Строитель->>МП: создать/получить МенеджерПараметров()
    activate МП
    Строитель->>МП: добавить env-провайдер (приоритет 1)
    Строитель->>Метапров: создать файловый метапровайдер (форматы: yaml/json/ini)
    activate Метапров
    Метапров->>МП: зарегистрировать физические провайдеры для каждого формата
    Метапров-->>Строитель: метапровайдер готов
    deactivate Метапров
    Строитель->>МП: добавить inline/прочие провайдеры
    deactivate МП
    Строитель-->>СДМ: вернуть построитель
    deactivate Строитель
    SДМ->>Строитель: применить устаревшие настройки, если явно заданы
    Строитель->>МП: обновить конфигурацию (при необходимости)
    SДМ-->>Поделка: вернуть построитель
    deactivate СДМ
    Поделка->>Строитель: МенеджерПараметров()
    Поделка->>МП: Прочитать()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

  • autumn-library/autumn#106: Оба PR затрагивают те же legacy-сеттеры СоветДругогоМастера (добавление предупреждений/флёта и поведение возврата ЭтотОбъект).
  • autumn-library/autumn#104: Оба PR обновляют packagedef и версию зависимости configor.

Poem

🐇 Я — кролик, шепчу в ушко коду:
Построитель ленив — но всё в порядке.
YAML, JSON и ENV — в одной связке,
Метапровайдер свёл файлы в маску,
Кэш вернёт построитель — можно читать в ладке.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: enabling provider manipulation through a counsel abstraction, which is the core feature introduced in this PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed Описание PR содержит детальное объяснение нововведения (инкапсуляция билдера менеджера параметров), четкий пример использования с пошаговым комментарием, что полностью соответствует изменениям в коде.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (2)
docs/api/050-Классы/25-СтроительМенеджераПараметров.md (1)

221-221: Небольшая языковая правка для естественности формулировки.

Фразу можно сделать чище: “Проксирует настройки сразу во все физические провайдеры”.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/api/050-Классы/25-СтроительМенеджераПараметров.md` at line 221, Заменить
фразу в описании, чтобы звучала естественнее: изменить текст "Проксирует
настройки сразу в физические провайдеры (`<база>-yaml`, `<база>-json`,
`<база>-ini`)" на "Проксирует настройки сразу во все физические провайдеры
(`<база>-yaml`, `<база>-json`, `<база>-ini`)" в блоке, описывающем методы
ДобавитьПровайдерФайлов / ПровайдерФайлов.
tests/СтроительМенеджераПараметров.os (1)

128-146: Добавьте проверку расширения .yml в тест определения формата.

Сейчас в этом сценарии закреплены .yaml/.json/.ini, но не .yml. Имеет смысл добавить отдельный кейс, чтобы не потерять поддержку альтернативного YAML-расширения при будущих изменениях.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/СтроительМенеджераПараметров.os` around lines 128 - 146, В тесте
Процедура ДобавитьПровайдерФайлНастроекОпределяетФорматПоРасширению добавьте ещё
один вызов Строитель.ДобавитьПровайдерФайлНастроек с путём, оканчивающимся на
".yml" и отдельную проверку
Ожидаем.Что(Строитель.Провайдер("yml")).Не_().Равно(Неопределено) и проверку,
аналогичную НастройкиY.ПутьКФайлуПараметров, чтобы убедиться, что формат для
.yml определяется корректно; используйте существующие методы Провайдер и
Настройки() для точной локализации изменений.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/api/050-Классы/25-СтроительМенеджераПараметров.md`:
- Line 9: В документации заменить некорректный вызов метода
СоветДругогоМастера.СтроительМенеджераПараметров() на актуальный
СоветДругогоМастера.ПолучитьСтроительМенеджераПараметров() в примерах
(упоминания в строках с вызовом и ссылках, напр. на строках с вызовом и в
анкорах), чтобы пример соответствовал реалиям API и тестам; проверьте и обновите
связанные ссылки/якоря (например
20-СоветДругогоМастера.md#СтроительМенеджераПараметров) так, чтобы они указывали
на ПолучитьСтроительМенеджераПараметров.

In `@packagedef`:
- Line 19: The package definition currently depends on an unpublished configor
version (.ЗависитОт("configor", "0.12.0")), which makes installs fail; update
the dependency to the latest published version by changing the .ЗависитОт call
for "configor" to use "0.11.1" (or revert to "0.12.0" later once it is
published) so the packagedef is resolvable.

In `@src/internal/Классы/СтроительМенеджераПараметров.os`:
- Around line 161-168: УдалитьПровайдер сейчас только вызывает
Метапровайдер.Отключить() и удаляет запись из _ФайловыеМетапровайдеры, но не
удаляет физические базовые провайдеры в _МенеджерПараметров, поэтому повторный
ДобавитьПровайдерФайлов("default",...) вызывает коллизии и старые обёртки в
ФайловыйМетапровайдер.ПриСозданииОбъекта(); исправьте УдалитьПровайдер так,
чтобы после Метапровайдер.Отключить() также удалялись все связанных с этим
метапровайдером физические провайдеры из _МенеджерПараметров (например по id или
по ссылке), либо вместо удаления просто пересобирали/реинициализировали
_МенеджерПараметров без удаляемого провайдера, чтобы при следующем
ДобавитьПровайдерФайлов не осталось старых записей и не возникли коллизии
идентификаторов.

In `@src/internal/Классы/ФайловыйМетапровайдер.os`:
- Around line 111-118: УстановитьФайлПараметров сейчас передаёт один и тот же
ПутьКФайлу каждому провайдеру из коллекции Провайдеры, что ломает multi-format
сценарии (например одинаковый путь попадает в yaml, json и ini провайдеры);
исправьте это либо запретив вызов УстановитьФайлПараметров когда в Провайдеры
зарегистрировано более одного формата (кинуть ошибку/лог), либо изменить логику
так, чтобы УстановитьФайлПараметров не распределял путь по всем провайдерам и
оставить возможность задавать конкретный путь только через
ДобавитьПровайдерФайлНастроек(…) — внесите проверку количества/типа провайдеров
в функцию УстановитьФайлПараметров и действуйте согласно выбранной политике.

In `@src/Классы/СоветДругогоМастера.os`:
- Around line 44-76: Функция ПолучитьСтроительМенеджераПараметров всегда создаёт
новый экземпляр, из‑за чего внешние изменения строителья теряются; исправьте это
в классе СоветДругогоМастера, сохранив строитель в поле (например,
this.СтроительМенеджераПараметров) и возвращая существующий экземпляр при
повторных вызовах вместо всегда Нового; при первом вызове создайте и настройте
Строитель как сейчас, затем кешируйте его; обновите также сценарий
ИнициализироватьМенеджерПараметров/Поделка, если он ожидал делиться тем же
объектом, и добавьте регрессионный тест, который берёт строитель из
СоветДругогоМастера, модифицирует провайдеры и затем передаёт
СоветДругогоМастера в Поделка, ожидая сохранить изменения.

---

Nitpick comments:
In `@docs/api/050-Классы/25-СтроительМенеджераПараметров.md`:
- Line 221: Заменить фразу в описании, чтобы звучала естественнее: изменить
текст "Проксирует настройки сразу в физические провайдеры (`<база>-yaml`,
`<база>-json`, `<база>-ini`)" на "Проксирует настройки сразу во все физические
провайдеры (`<база>-yaml`, `<база>-json`, `<база>-ini`)" в блоке, описывающем
методы ДобавитьПровайдерФайлов / ПровайдерФайлов.

In `@tests/СтроительМенеджераПараметров.os`:
- Around line 128-146: В тесте Процедура
ДобавитьПровайдерФайлНастроекОпределяетФорматПоРасширению добавьте ещё один
вызов Строитель.ДобавитьПровайдерФайлНастроек с путём, оканчивающимся на ".yml"
и отдельную проверку
Ожидаем.Что(Строитель.Провайдер("yml")).Не_().Равно(Неопределено) и проверку,
аналогичную НастройкиY.ПутьКФайлуПараметров, чтобы убедиться, что формат для
.yml определяется корректно; используйте существующие методы Провайдер и
Настройки() для точной локализации изменений.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b767da23-3a06-440d-9c69-b14878bf8386

📥 Commits

Reviewing files that changed from the base of the PR and between 4f2299a and 352b643.

📒 Files selected for processing (10)
  • docs/api/050-Классы/20-СоветДругогоМастера.md
  • docs/api/050-Классы/25-СтроительМенеджераПараметров.md
  • docs/api/index.md
  • packagedef
  • src/internal/Классы/СтроительМенеджераПараметров.os
  • src/internal/Классы/ФайловыйМетапровайдер.os
  • src/Классы/Поделка.os
  • src/Классы/СоветДругогоМастера.os
  • tests/СоветДругогоМастера.os
  • tests/СтроительМенеджераПараметров.os

Comment thread packagedef
Comment thread src/Классы/СоветДругогоМастера.os

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/Классы/СоветДругогоМастера.os (1)

57-176: ⚠️ Potential issue | 🟠 Major

Кешированный строитель не синхронизируется с поздними legacy-сеттерами.

Сейчас legacy-настройки попадают в _Строитель только при первом создании. Если кто-то уже получил строитель, а потом вызовет ЗначенияДеталек(...) / ПрефиксПеременныхСреды(...) / ИмяФайлаСоЗначениямиДеталек(...), cached instance останется со старыми значениями. Это делает порядок вызовов публичного API наблюдаемым и ломает обратную совместимость.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Классы/СоветДругогоМастера.os` around lines 57 - 176, Кешированный
_Строитель в функции ПолучитьСтроительМенеджераПараметров не синхронизируется с
устаревшими сеттерами (ЗначенияДеталек, ПрефиксПеременныхСреды,
ИмяФайлаСоЗначениямиДеталек,
ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек): если _Строитель уже
создан, последующие вызовы этих методов не влияют на него; исправьте это либо
инвалидируя кеш (_Строитель = Неопределено) внутри каждого legacy-сеттера после
установки значений, либо (лучше) сразу применять изменения к уже существующему
строителю — получить текущий Строитель через
ПолучитьСтроительМенеджераПараметров() и обновить провайдеры/метапровайдер
(вызовы Провайдер("env").Настройки().УстановитьПрефикс,
УдалитьПровайдер("inline")/ДобавитьПровайдерСоответствие,
ПровайдерФайлов("default").УстановитьИмяФайла/УстановитьСтандартныеКаталогиПоиска)
чтобы состояние всегда оставалось согласованным.
🧹 Nitpick comments (1)
tests/СоветДругогоМастера.os (1)

180-230: Добавьте кейс для позднего вызова legacy-сеттера.

Текущие тесты покрывают только сценарий “сначала выставили устаревшую настройку, потом создали строитель”. Если кеш строителя остаётся частью контракта, стоит зафиксировать и обратный порядок: сначала ПолучитьСтроительМенеджераПараметров(), потом legacy-сеттер, чтобы было ясно, должен ли кеш обновляться или этот сценарий больше не поддерживается.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/СоветДругогоМастера.os` around lines 180 - 230, Добавьте тесты,
проверяющие поведение при позднем вызове устаревших сеттеров: создайте новый
тест (например ПрименитьУстаревшиеНастройкиПрефиксENV_ПослеПолученияСтроителя и
аналогичные для ИмяФайлаСоЗначениямиДеталек и ЗначенияДеталек) где сначала
вызывается Совет.ПолучитьСтроительМенеджераПараметров(), затем вызываются
Совет.ПрефиксПеременныхСреды("MYAPP") /
Совет.ИмяФайлаСоЗначениямиДеталек("my-config") / Совет.ЗначенияДеталек(Значения)
и после этого проверяется, обновился ли кеш/строитель: читать из
Строитель.Провайдер(...).Настройки().ПолучитьПрефикс() или
Строитель.Провайдер("default-json").Настройки().ПолучитьНастройки() и Менеджер =
Строитель.МенеджерПараметров(); Менеджер.Прочитать();
Ожидаем.Что(Менеджер.Параметр("ключ")).Равно("значение") — чтобы зафиксировать
ожидаемое поведение при позднем сеттинге.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/Классы/СоветДругогоМастера.os`:
- Around line 182-189: Измените текст в процедуре ПредупредитьОбУстаревшемМетоде
класса СоветДругогоМастера, чтобы не предлагать «передавая строитель в
конструктор Поделки» (это неверно для текущего публичного API). Переформулируйте
предупреждение так, чтобы рекомендовать использовать
СтроительМенеджераПараметров при создании или конфигурации самого
СоветДругогоМастера (или явно указать правильный точка интеграции), упомянув
правильные символы: СоветДругогоМастера, Поделка и СтроительМенеджераПараметров,
чтобы пользователи получили корректную инструкцию по миграции.

---

Outside diff comments:
In `@src/Классы/СоветДругогоМастера.os`:
- Around line 57-176: Кешированный _Строитель в функции
ПолучитьСтроительМенеджераПараметров не синхронизируется с устаревшими сеттерами
(ЗначенияДеталек, ПрефиксПеременныхСреды, ИмяФайлаСоЗначениямиДеталек,
ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек): если _Строитель уже
создан, последующие вызовы этих методов не влияют на него; исправьте это либо
инвалидируя кеш (_Строитель = Неопределено) внутри каждого legacy-сеттера после
установки значений, либо (лучше) сразу применять изменения к уже существующему
строителю — получить текущий Строитель через
ПолучитьСтроительМенеджераПараметров() и обновить провайдеры/метапровайдер
(вызовы Провайдер("env").Настройки().УстановитьПрефикс,
УдалитьПровайдер("inline")/ДобавитьПровайдерСоответствие,
ПровайдерФайлов("default").УстановитьИмяФайла/УстановитьСтандартныеКаталогиПоиска)
чтобы состояние всегда оставалось согласованным.

---

Nitpick comments:
In `@tests/СоветДругогоМастера.os`:
- Around line 180-230: Добавьте тесты, проверяющие поведение при позднем вызове
устаревших сеттеров: создайте новый тест (например
ПрименитьУстаревшиеНастройкиПрефиксENV_ПослеПолученияСтроителя и аналогичные для
ИмяФайлаСоЗначениямиДеталек и ЗначенияДеталек) где сначала вызывается
Совет.ПолучитьСтроительМенеджераПараметров(), затем вызываются
Совет.ПрефиксПеременныхСреды("MYAPP") /
Совет.ИмяФайлаСоЗначениямиДеталек("my-config") / Совет.ЗначенияДеталек(Значения)
и после этого проверяется, обновился ли кеш/строитель: читать из
Строитель.Провайдер(...).Настройки().ПолучитьПрефикс() или
Строитель.Провайдер("default-json").Настройки().ПолучитьНастройки() и Менеджер =
Строитель.МенеджерПараметров(); Менеджер.Прочитать();
Ожидаем.Что(Менеджер.Параметр("ключ")).Равно("значение") — чтобы зафиксировать
ожидаемое поведение при позднем сеттинге.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ea1ce1df-9476-4014-b4d9-3d8a55f0ba63

📥 Commits

Reviewing files that changed from the base of the PR and between 352b643 and e94bb20.

📒 Files selected for processing (5)
  • docs/api/050-Классы/25-СтроительМенеджераПараметров.md
  • src/internal/Классы/ФайловыйМетапровайдер.os
  • src/Классы/СоветДругогоМастера.os
  • tests/СоветДругогоМастера.os
  • tests/СтроительМенеджераПараметров.os
🚧 Files skipped from review as they are similar to previous changes (2)
  • tests/СтроительМенеджераПараметров.os
  • src/internal/Классы/ФайловыйМетапровайдер.os

Comment thread src/Классы/СоветДругогоМастера.os Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

```

## ЗначенияДеталек
## ПолучитьСтроительМенеджераПараметров

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Мне кажется нейминг методов нужно получше подобрать, потому что для меня:
СтроительМенеджераПараметров и ПолучитьСтроительМенеджераПараметров это буквально одно и то же, и ожидать от обоих методов я буду тоже самое поведение, ну и выяснив что их вообще 2 я в ступор впаду


## ЗначенияДеталек <Badge type="warning" text="устарело" />

Используйте `СтроительМенеджераПараметров().ДобавитьПровайдерСоответствие(...)` (с предварительным `УдалитьПровайдер("inline")` при замене дефолтного inline-провайдера).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Мне кажется это болезненный паттерн, ну типа со схемой запроса в 1С. которая при создании уже имеет пустой оператор по нулевому индексу и вместо того чтобы начать работать с классом по человечески нужно либо удалять этот добавленный дефолт либо его самого мутировать, каждый раз спина горит.
Может вот это удаление под капотом как-то будет работать или параметризировать хотя бы как нибудь типа добавлять\не добавлять дефолт?

// Возвращаемое значение:
// МенеджерПараметров
//
Функция МенеджерПараметров() Экспорт

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Кажется нет смысла это наружу выставлять, если этот класс работает проксёй для конфигора то пусть делает это до конца.

// Регистрирует ПровайдерПараметровСоответствие с заданными значениями.
//
// Параметры:
// Значения - Соответствие - значения параметров (по умолчанию пустое)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

А какая смысловая нагрузка у этого дефолта?

// ФайловыйМетапровайдер
//
Функция ДобавитьПровайдерФайлов(Знач Идентификатор,
Знач Приоритет,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Кажется странным что у всех провайдеров приоритет не обязательный параметр а тут обязательный

Возврат Новый ПровайдерПараметровINI;
КонецЕсли;

ВызватьИсключение СтрШаблон("Неизвестный формат файлового провайдера: <%1>", Формат);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Кажется это недостижимый код, ОпределитьФорматПоРасширению уже упадёт если формат не угадается

ФайловыйПровайдерПоУмолчанию.УстановитьИмяФайла("autumn-properties");
ФайловыйПровайдерПоУмолчанию.УстановитьСтандартныеКаталогиПоиска("src");

ДобавитьПровайдерСоответствие(, 3, "inline");

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

А вот это вот зачем вообще нужно? Оо

@@ -17,22 +20,93 @@
//
Перем ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек;

// Соответствие: имя устаревшего поля -> Истина, если поле явно установлено через сеттер.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

устаревшего

?

Comment on lines +185 to +187
"Метод СоветДругогоМастера.%1(...) устарел."
" Используйте СтроительМенеджераПараметров.%2,"
" передавая строитель в конструктор Поделки.",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Лучше в одну строку, а то в логах ад будет.


Процедура ПредупредитьОбУстаревшемМетоде(Знач ИмяМетода, Знач РекомендуемаяЗамена)

Лог.Предупреждение(СтрШаблон(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Лог.Предупреждение() сам по себе уже СтрШаблон, первым параметром передаётся шаблон последующими значения параметров

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/api/050-Классы/20-СоветДругогоМастера.md`:
- Line 57: Документальная строка предлагает заменить вызов
ДополнительныйКаталогПоиска на
ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").УстановитьСтандартныеКаталогиПоиска(...),
но названия методов отличаются по семантике: УстановитьСтандартныеКаталогиПоиска
заменяет список, тогда как ДополнительныйКаталогПоиска добавлял один каталог;
проверьте поведение реализации: если нужно добавлять каталоги — заменить на
ДобавитьКаталогПоиска, иначе если требуется полностью заменить набор — оставить
УстановитьСтандартныеКаталогиПоиска и явно документировать, что поведение
отличается, обновив пример и описание в тексте.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8ba24649-e2a6-4da6-aa6a-f05a73cc8c30

📥 Commits

Reviewing files that changed from the base of the PR and between e94bb20 and 98d4477.

📒 Files selected for processing (6)
  • docs/api/050-Классы/20-СоветДругогоМастера.md
  • src/internal/Классы/СтроительМенеджераПараметров.os
  • src/Классы/Поделка.os
  • src/Классы/СоветДругогоМастера.os
  • tests/СоветДругогоМастера.os
  • tests/СтроительМенеджераПараметров.os
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/Классы/Поделка.os
  • src/Классы/СоветДругогоМастера.os
  • tests/СоветДругогоМастера.os
  • src/internal/Классы/СтроительМенеджераПараметров.os

## ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек
## ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек <Badge type="warning" text="устарело" />

Используйте `ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").УстановитьСтандартныеКаталогиПоиска(...)`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Поиск методов управления каталогами поиска
rg -n "УстановитьСтандартныеКаталогиПоиска|ДобавитьКаталог" -g "*.os" -C 3

Repository: autumn-library/autumn

Length of output: 4010


Проверьте семантическую корректность пути миграции.

Метод УстановитьСтандартныеКаталогиПоиска существует, но его название (УстановитьСтандартные — "установить/заменить стандартные") семантически отличается от названия устаревшего метода ДополнительныйКаталогПоиска (добавление дополнительного).

В codebase также имеется метод ДобавитьКаталогПоиска, который по названию лучше соответствует поведению устаревшего метода (добавление vs. установка). Убедитесь, что предлагаемая миграция на УстановитьСтандартныеКаталогиПоиска действительно эквивалентна старому поведению, или рассмотрите использование ДобавитьКаталогПоиска вместо неё.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/api/050-Классы/20-СоветДругогоМастера.md` at line 57, Документальная
строка предлагает заменить вызов ДополнительныйКаталогПоиска на
ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").УстановитьСтандартныеКаталогиПоиска(...),
но названия методов отличаются по семантике: УстановитьСтандартныеКаталогиПоиска
заменяет список, тогда как ДополнительныйКаталогПоиска добавлял один каталог;
проверьте поведение реализации: если нужно добавлять каталоги — заменить на
ДобавитьКаталогПоиска, иначе если требуется полностью заменить набор — оставить
УстановитьСтандартныеКаталогиПоиска и явно документировать, что поведение
отличается, обновив пример и описание в тексте.

@coveralls

coveralls commented Jun 8, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 27148541593

Coverage decreased (-1.4%) to 87.49%

Details

  • Coverage decreased (-1.4%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 3 coverage regressions across 3 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

3 previously-covered lines in 3 files lost coverage.

File Lines Losing Coverage Coverage
src/internal/Классы/АннотацияОсобоеОбращение.os 1 74.07%
src/internal/Классы/ЗапускательПриложения.os 1 71.11%
src/Классы/СоветДругогоМастера.os 1 98.51%

Coverage Stats

Coverage Status
Relevant Lines: 1279
Covered Lines: 1119
Line Coverage: 87.49%
Coverage Strength: 1515.27 hits per line

💛 - Coveralls

## ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек
## ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек <Badge type="warning" text="устарело" />

Используйте `ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").УстановитьСтандартныеКаталогиПоиска(...)`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

а они семантически одинаковые? УстановитьСтандартныеКаталогиПоиска добавляет каталог или заменяет их?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Добавляет каталог - да

@nixel2007

nixel2007 commented Jun 11, 2026 via email

Copy link
Copy Markdown
Member

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.

5 participants