#1569 Сбрасываем флаг Стандартной обработки при загрузке DLL.#1572
Conversation
WalkthroughAdds a by-ref parameter СтандартнаяОбработка to ОбработатьБиблиотекиCLR, updates two internal call sites (net4 and dotnet branches) to pass it, and sets the flag to Ложь after each DLL load within the procedure. Changes
Sequence Diagram(s)sequenceDiagram
participant Caller
participant PackageLoader as ОбработатьБиблиотекиCLR
participant FS as File System
participant CLR as CLR Loader
Caller->>PackageLoader: ОбработатьБиблиотекиCLR(Путь, СтандартнаяОбработка)
loop For each 1script_*.dll
PackageLoader->>FS: Discover DLL
PackageLoader->>CLR: Load DLL
CLR-->>PackageLoader: Load result
PackageLoader->>Caller: СтандартнаяОбработка := Ложь (by-ref)
end
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches🧪 Generate 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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
install/package-loader.os (2)
208-221: Опционально: защита от отсутствующего каталога перед НайтиФайлыЕсли подкаталог net4/dotnet отсутствует, НайтиФайлы в некоторых окружениях может бросать исключение. Небольшая защита улучшит предсказуемость поведения.
Пример правки:
Процедура ОбработатьБиблиотекиCLR(Знач Путь, СтандартнаяОбработка) - КандидатыВКомпоненты = НайтиФайлы(Путь, "1script_*.dll"); + // Пропускаем, если папка отсутствует + Папка = Новый Файл(Путь); + Если Не Папка.Существует() Тогда + Возврат; + КонецЕсли; + КандидатыВКомпоненты = НайтиФайлы(Путь, "1script_*.dll"); Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
217-217: Сброс СтандартнаяОбработка = Ложь после загрузки DLL — по цели PR; учтите «монотонность» флагаСброс флага после успешной загрузки DLL соответствует задаче. Обратите внимание, что в ОбработатьКаталогМодулей (Line 164) флаг устанавливается в Истина в ветке исключения — это может непреднамеренно «переотключить» ранее выполненный сброс при загрузке DLL. Если хотите, чтобы «как только Ложь — так до конца операции», уберите этот аплифтер до Истина.
Вне текущего фрагмента можно упростить ветку исключения, не меняя флаг:
Исключение Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда ВызватьИсключение; КонецЕсли; // СтандартнаяОбработка не трогаем здесь Вывести("Предупреждение: |" + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки;Готов сгенерировать отдельный PR/патч, если такой монотонный контракт для флага желателен.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
install/package-loader.os(2 hunks)
🔇 Additional comments (2)
install/package-loader.os (2)
195-198: Корректно: прокидывание флага по ссылке в оба вызова CLR-загрузчикаОба вызова ОбработатьБиблиотекиCLR теперь передают СтандартнаяОбработка по ссылке (второй параметр без "Знач"), что позволит внутри процедуры сбрасывать флаг и возвращать изменение вызывающему коду. Выбор ветки по мажорной версии сохранен.
206-208: Подтверждено: нет вызовов ОбработатьБиблиотекиCLR с одним аргументом.Все вызовы процедуры теперь передают оба параметра (Путь, СтандартнаяОбработка), включая те в install/package-loader.os (строки 195 и 197).
Summary by CodeRabbit