-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
467 / запуск тестов из внешних обработок #471
Conversation
Caution Review failedThe pull request is closed. WalkthroughИзменения в проекте YAXUnit затрагивают несколько ключевых модулей, связанных с обработкой тестов, метаданных и служебных функций. Основные модификации включают обновление ссылок на модули метаданных, добавление новых функций для работы с тестовыми сценариями и рефакторинг существующих процедур обработки событий. Изменения направлены на улучшение гибкости и расширяемости системы тестирования, с особым акцентом на клиент-серверное взаимодействие и обработку метаданных. Changes
Sequence DiagramsequenceDiagram
participant TestModule as Тестовый Модуль
participant ClientServer as ЮТИсполнительСлужебныйКлиентСервер
participant EventHandler as ЮТСобытияСлужебный
TestModule->>ClientServer: Создание исполняемого теста
ClientServer-->>TestModule: Возвращает описание теста
TestModule->>EventHandler: Вызов обработчиков событий
EventHandler-->>TestModule: Выполнение предварительных и последующих действий
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (5)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Quality Gate failed!
1 Bugs
0 Vulnerabilities
4 Code Smells
No data Coverage
0.00% Duplication
|
||
КонецФункции | ||
|
||
Функция ИсполняемыеНаборыМодуля(ТестовыйМодуль) Экспорт |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Уменьшите когнитивную сложность "ИсполняемыеНаборыМодуля" с 21 до 15
brainoverload
parameters
Why is this an issue?
|
||
Если ОписаниеТестовогоОбъекта.Метаданные.Тип = "ВнешняяОбработка" Тогда | ||
#Если Клиент Тогда | ||
Возврат ПолучитьФорму(СтрШаблон("ВнешняяОбработка %1.Форма", ОписаниеТестовогоОбъекта.Метаданные.Имя)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (21)
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (9)
21-57
: Рекомендуется уделить внимание валидации параметра "ТестовыйМодуль".
Если в будущем появится необходимость вызывать функцию с невалидными объектами, лучше добавить проверку входных данных или обработку исключений для повышения надежности.
59-109
: Оптимизировать формирование тестовых наборов.
В цикле (строки 70–94) при формировании списков тестов для разных контекстов может быть полезно вынести повторяющийся код в отдельную функцию. Это улучшит читаемость и облегчит дальнейшее сопровождение.
113-117
: Описание параметра «ОписаниеТестовогоОбъекта» в комментариях.
Использование нового параметра «ОписаниеТестовогоОбъекта» вместо «ТестовыйМодуль» выглядит более наглядно, но в комментарии желательно уточнить его тип и назначение для улучшения документации.
147-147
: Лог сброса буфера ошибок.
Строка «ОписаниеТестовогоОбъекта.Ошибки.Очистить();» важна для предотвращения накопления ошибок между наборами тестов, но стоит дополнительно прокомментировать её назначение для ясности будущим разработчикам.
Line range hint
237-252
: Убедиться в согласованности настроек транзакции с окружением.
При запуске тестов на сервере или в толстом клиенте нужно гарантировать, что глобальные транзакции не конфликтуют с другими механизмами. Попробуйте дополнить документацию упоминанием об этом.
Line range hint
312-320
: Учесть особые случаи пропуска теста.
Если у теста уже есть ошибки, метод сразу возвращает. Возможно, стоит логировать пропуск для статистики.
321-321
: Проверка «Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодОбъектаСПерехватомОшибки(...)».
Рекомендуется дополнительно обрабатывать ситуацию, когда метод не найден или внезапно возвращает недопустимый тип результата. Это повысит надёжность тестового движка.
343-359
: Назначение процедуры «ОбработатьОшибкиЧтенияНабора».
В текущей версии, если в наборе много ошибок чтения, процедура добавляет только один тест с ошибкой и выходит по «Прервать». При необходимости собирать все ошибки чтения может потребоваться доработка.
362-371
: Типовая логика формирования теста с ошибкой чтения.
Функция «ОписаниеТестаСОшибкойЧтения» формирует особый тест с целью отображения ошибки. При необходимости расширенного описания целесообразно ввести дополнительные поля, указывающие, какой именно тест сломан.exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1)
181-183
: Уместна ли дополнительная проверка перед созданием ИсполняемогоТестовогоМодуля?
При формировании «ИсполняемыхТестовыхМодулей» из исходных «ТестовыеМодули» можно проверить корректность структуры входных данных. Это поможет предупредить ошибки при выполнении тестов.exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (7)
85-87
: Дополнить комментарий примером использования.
Вызов «ПередВсемиТестамиМодуля» имеет два параметра: «ТестовыйМодуль» и «ОписаниеТестовогоМодуля», что может сбивать с толку новых разработчиков. Желательно дать пример, как эти параметры применяются.
97-100
: Уточнить формат «ОписаниеТестовогоМодуля».
Документация ссылается на «ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля», но для целостности хорошо бы упомянуть его ключевые поля, чтобы повысить понимание кода.
124-128
: Добавить уточнение по контексту «ПослеКаждогоТеста».
Разработчикам пригодится комментарий о том, что событие срабатывает для каждого теста, вне зависимости от успешности его выполнения. Так легче понимать, когда происходит этот вызов.
151-153
: Документировать отличия «ПослеВсехТестовМодуля» от «ПослеТестовогоНабора».
Чтобы избежать путаницы, добавьте небольшое описание, чем именно отличается логика «ПослеВсехТестовМодуля» от более локального события «ПослеТестовогоНабора».
258-258
: Локализация сообщения об отклонённом модуле.
Строка «Загрузка модуля%1
отклонена…» — стоит убедиться, что сообщение полноценно локализовано и содержит пробел после имени модуля.
400-410
: Учесть, что «ОбработчикиСобытия» могут иметь несколько имён.
В строках 407–410 происходит разбиение строки по запятым для вызова нескольких обработчиков. Убедитесь, что нет лишних пробелов или символов-разделителей, которые могут вызвать ошибки при поиске методов.
Line range hint
416-454
: Явное логирование отсутствующего обработчика.
Если обработчик «ОбработчикСобытияПереопределен» не найден, вызывается исключение. Рассмотрите возможность ведения расширенного лога о том, в каком именно модуле не найден метод. Это ускорит отладку.exts/yaxunit/src/Configuration/Configuration.mdo (1)
102-102
: Улучшение архитектуры обработки метаданныхДобавление модуля
ЮТМетаданныеСлужебныйКлиентСервер
улучшает архитектуру системы, позволяя обрабатывать метаданные как на клиенте, так и на сервере. Это соответствует лучшим практикам разработки клиент-серверных приложений.tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (3)
21-29
: Добавьте документацию к экспортной процедуреРекомендуется добавить описание назначения процедуры и параметров транзакции.
+// Процедура добавляет тестовые сценарии для выполнения тестов обработки +// +// Параметры: +// Нет Процедура ИсполняемыеСценарии() Экспорт
31-48
: Добавьте обработку исключенийРекомендуется добавить обработку возможных исключений при загрузке сценариев.
Процедура ЗагрузитьТестыОбработки() Экспорт + Попытка Сценарии = СценарииОбработки(); ЮТест.ОжидаетЧто(Сценарии) .Заполнено() .Свойство("Метаданные").Заполнено() .Свойство("Метаданные.Сервер").ЭтоИстина() .Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь() .Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь() .Свойство("НаборыТестов").Заполнено() .Свойство("НаборыТестов[0].Тесты").Заполнено() .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно") .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка") .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан") ; + Исключение + ВызватьИсключение НСтр("ru='Ошибка при загрузке тестов обработки: %1'", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки КонецПроцедуры
108-140
: Рассмотрите возможность параметризации тестовых сценариевТекущая реализация использует жестко закодированные тестовые процедуры. Рекомендуется:
- Вынести текст процедур в отдельный макет
- Добавить возможность параметризации тестовых сценариев
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (17)
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl
(7 hunks)exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
(1 hunks)exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl
(7 hunks)exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
(2 hunks)exts/yaxunit/src/Configuration/Configuration.mdo
(1 hunks)exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
(1 hunks)tests/src/Configuration/Configuration.mdo
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
- exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
🧰 Additional context used
📓 Learnings (1)
tests/src/Configuration/Configuration.mdo (1)
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl:1-189
Timestamp: 2024-11-12T06:11:37.980Z
Learning: Тестовые модули находятся в расширении `tests` в общих модулях, которые именуются по следующей схеме:
| Тип тестируемого объекта | Префикс | Пример |
| ------------------------ | ------- | ------------------------------------------- |
| Общий модуль | `ОМ_` | ОМ_ОбщегоНазначения |
| Регистр бухгалтерии | `РБ_` | РБ_Хозрасчетный, РБ_Хозрасчетный_НЗ |
| Регистр накопления | `РН_` | РН_ОстаткиНаСкладах, РН_ОстаткиНаСкладах_ММ |
| Регистр расчета | `РР_` | РР_Зарплата, РР_Зарплата_НЗ |
| Регистр сведений | `РС_` | РС_АдресныйКлассификатор |
| Бизнес процесс | `БП_` | БП_Согласование |
| Справочник | `Спр_` | Спр_Пользователи, Спр_Пользователи_МО |
| План счетов | `ПС_` | ПС_Хозрасчетный |
| План видов расчета | `ПВР_` | ПВР_Зарплатный |
| План видов характеристик | `ПВХ_` | ПВХ_Субконто, ПВХ_Субконто_ММ |
| Документ | `Док_` | Док_ПКО |
| Перечисление | `Пер_` | Пер_СтатусСогласования |
| План обмена | `ПО_` | ПО_РИБ, ПО_РИБ_ММ |
| Задача | `Зад_` | Зад_Задача |
| Обработка | `Обр_` | Обр_ЗакрытиеМесяца, Обр_ЗакрытиеМесяца_МО |
| Отчет | `Отч_` | Отч_УниверсальныйОтчет |
🔇 Additional comments (18)
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (4)
141-141
: Убедитесь в корректности логики завершения тестов.
После вызова «ПослеВсехТестовМодуля» могут остаться незакрытые транзакции или несохранённые данные. Проверьте, что все ресурсы освобождаются и корректно обрабатываются.
Line range hint 199-229
: Проверить корректность использования транзакций внутри тестов.
Есть риск, что при большом количестве тестов транзакция может остаться активной из-за неочевидного завершения цикла. Рекомендуется убедиться, что транзакция всегда завершается, вне зависимости от результата выполнения теста.
256-261
: Единообразная обработка «КонтекстСломан».
В ветке Иначе (строки 261–264) также вызывается «ПослеКаждогоТеста». Убедитесь, что при поломке контекста не возникает дублирующего вызова или пропуска нужной логики.
373-387
: Использование «ВнешняяОбработка» для загрузки формы.
Код (строки 379–384) предполагает разные ветви для клиента и сервера при создании внешней обработки. Проверьте, что все платформенные сценарии корректно учтены (например, тонкий клиент).
exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (3)
110-114
: Проверить соответствие фактического функционала описанию.
Параметр «Тест» в процедуре «ПередКаждымТестом» может иметь отличную структуру от ожидаемой. Если это критично, следует добавить проверки для предотвращения ошибок.
138-141
: Исключительные ситуации при «ПослеТестовогоНабора».
Если набор завершается с критической ошибкой, следует ли процедуре всё равно вызываться? Уточните этот момент, так как некоторые API отрабатывают события иначе при критических сбоях.
Line range hint 278-300
: Проверьте порядок вызова серверных обработчиков событий.
Логика (строки 282–296) разделяет, вызывается ли обработка на клиенте перед обработкой модуля или после. В некоторых сценариях может потребоваться более гибкий подход к разделению «до и после».
exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo (1)
30-30
: Проверьте согласованность зависимостей после замены модуля.
Заменён «CommonModule.ЮТМетаданныеСлужебный» на «CommonModule.ЮТМетаданныеСлужебныйКлиентСервер». Убедитесь, что все вызовы старого модуля корректно перенесены в новый модуль и нигде не остались неактуальные вызовы.
exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl (1)
208-208
: Обновлена ссылка на метод в комментарии
Изменение отражает перенос функциональности из служебного модуля в основной модуль фабрики.
exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1)
34-34
: Обновление ссылки на служебный модуль
Изменение ссылки с ЮТМетаданныеСлужебный
на ЮТМетаданныеСлужебныйКлиентСервер
для проверки описания объекта метаданных. Убедитесь, что все необходимые зависимости доступны.
✅ Verification successful
Изменение корректно реализовано
Проверка показала, что:
- Метод
ЭтоОписаниеОбъектаМетаданных
теперь определен в модулеЮТМетаданныеСлужебныйКлиентСервер
- Все вызовы метода в кодовой базе уже используют новый модуль
ЮТМетаданныеСлужебныйКлиентСервер
- Изменение согласовано во всех зависимых модулях
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверка использования модуля в других местах кода
rg "ЮТМетаданныеСлужебный\.ЭтоОписаниеОбъектаМетаданных" -A 2
Length of output: 63
Script:
#!/bin/bash
# Поиск всех использований метода ЭтоОписаниеОбъектаМетаданных
rg "ЭтоОписаниеОбъектаМетаданных" -A 2
# Поиск файлов с упоминанием модулей ЮТМетаданныеСлужебный и ЮТМетаданныеСлужебныйКлиентСервер
rg -l "ЮТМетаданныеСлужебный|ЮТМетаданныеСлужебныйКлиентСервер"
# Проверка содержимого модуля ЮТМетаданныеСлужебныйКлиентСервер
fd -e bsl "ЮТМетаданныеСлужебныйКлиентСервер" --exec cat {}
Length of output: 2850
exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (2)
147-148
: Обновление источника метаданных
Изменение источника описания метаданных с ЮТФабрикаСлужебный
на ЮТФабрика
. Добавлено явное указание типа "ОбщийМодуль".
161-172
: Добавлена новая функция для работы с метаданными обработки
Функция МетаданныеОбработки
корректно реализует получение метаданных для внешних обработок с настройкой клиент-серверного поведения.
exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1)
483-494
: Улучшена логика определения контекстов приложения!
Изменения в функции КонтекстыПриложения
повышают читаемость кода и упрощают логику определения доступных контекстов. Использование ЮТОкружение.ОписаниеОкружения()
делает код более поддерживаемым.
tests/src/Configuration/Configuration.mdo (1)
36-36
: Корректное добавление модуля тестирования
Модуль добавлен в соответствии с принятыми соглашениями об именовании (префикс ОМ_
для тестовых модулей общих модулей).
exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1)
288-288
: Корректное использование клиент-серверного модуля
Изменение соответствует архитектурному решению по использованию клиент-серверных модулей для работы с метаданными.
exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl (1)
132-132
: Корректное обновление документации.
Комментарий обновлен в соответствии с перемещением функции ОписаниеМетаданныеМодуля
из модуля ЮТФабрикаСлужебный
в модуль ЮТФабрика
.
exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2)
Line range hint 425-433
: Улучшение документации метаданных модуля.
Добавлено описание нового поля Тип
, которое позволяет различать типы модулей (общий модуль или внешняя обработка). Документация четко описывает поддерживаемые значения.
436-436
: Проверьте значение по умолчанию для поля Тип
.
Значение по умолчанию установлено как "ОбщийМодуль". Убедитесь, что это не вызовет проблем при работе с внешними обработками.
✅ Verification successful
Значение по умолчанию "ОбщийМодуль" для поля Тип
корректно.
Анализ кода показывает, что:
- Поле
Тип
используется для различения типов модулей и поддерживает два значения: "ОбщийМодуль" и "ВнешняяОбработка" - В методе
ТестовыйМодуль
есть корректная обработка обоих типов - При работе с внешними обработками тип явно переопределяется в методе
МетаданныеОбработки
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Проверка использования поля Тип в коде
# Поиск использования ОписаниеМетаданныеМодуля().Тип
rg -A 5 "ОписаниеМетаданныеМодуля\(\)\.Тип"
# Поиск проверок на тип модуля
ast-grep --pattern 'if ($x = "ВнешняяОбработка") { $$$ }'
Length of output: 105
Script:
#!/bin/bash
# Поиск использования поля "Тип" в контексте описания модуля
rg -i "тип.*общиймодуль|общиймодуль.*тип" -A 5 -B 5
# Поиск всех проверок типа модуля
rg -i "тип\s*=\s*[\"'].*[\"']" -A 5 -B 5
# Поиск использования внешних обработок
rg -i "внешняяобработка|внешний\s*отчет" -A 5 -B 5
Length of output: 25779
075f578
to
091b06e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 16
🧹 Nitpick comments (15)
tools/local-test/scripts/test-it.sh (1)
Line range hint
41-53
: Рекомендация по улучшению управления директориямиДля улучшения поддержки кода, предлагаю объединить создание директорий и их очистку в отдельные функции.
Пример реализации:
create_directories() { local dirs=( "${LOGS_PATH}" "${DB_PATH}" "${EXPORT_PATH}" "${BINARY_PATH}" "${TMP_PATH}" "${RESULT_PATH}" ) for dir in "${dirs[@]}"; do mkdir -p "${dir}" done } cleanup_directories() { local dirs=( "${TMP_PATH:?}" "${RESULT_PATH:?}" "${LOGS_PATH:?}" ) for dir in "${dirs[@]}"; do rm -rf "${dir}"/* done }tools/local-test/scripts/steps/convert-to-xml.sh (1)
1-10
: Проверить наличие переменных окруженияСкрипт использует несколько переменных окружения ($LIB_PATH, $EXPORT_PATH, $EDT_PATH, $TMP_PATH, $ROOT_PATH, $LOGS_PATH), но не проверяет их наличие.
Рекомендую добавить проверки в начало скрипта:
+required_vars=("LIB_PATH" "EXPORT_PATH" "EDT_PATH" "TMP_PATH" "ROOT_PATH" "LOGS_PATH") +for var in "${required_vars[@]}"; do + if [[ -z "${!var}" ]]; then + echo "Ошибка: Переменная $var не установлена" + exit 1 + fi +done + PROJECT_NAME=$1 PROJECT_PATH=$2🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
tools/local-test/scripts/steps/run-filedb-test.sh (1)
10-14
: Улучшите обработку вывода логовЛогирование улучшено, но есть возможность для оптимизации:
- Нет проверки существования директории для логов
- Возможно переполнение лог-файла при многократном запуске
Предлагаю следующие изменения:
+if [ ! -d "$LOGS_PATH" ]; then + mkdir -p "$LOGS_PATH" +fi + +# Очистка старого лог-файла +> "$LOGS_PATH/$JOB_NAME.log" + echo "=========== Подготовка информационной базы ${BOLD}$JOB_NAME${RESET}" $ONEC_PATH/1cv8 CREATEINFOBASE File=$TEST_DB_PATH /DisableStartupDialogs /DisableStartupMessages /Out $LOGS_PATH/$JOB_NAME.log >> $LOGS_PATH/$JOB_NAME.log 2>&1tools/local-test/scripts/lib/print.sh (3)
9-15
: Добавьте документацию к функции print_stateФункция корректно обрабатывает статус выполнения команды, но требуется документация.
+# Выводит статус выполнения команды +# Аргументы: +# $1 - описание выполненной операции +# Возвращает: +# Ничего function print_state { if [[ $? -eq 0 ]]; then
18-34
: Добавьте проверку входных параметровФункции печати не проверяют наличие обязательного параметра сообщения.
Предлагаю добавить проверку, например для функции
print_success
:function print_success { + if [ -z "$1" ]; then + print_error "Отсутствует текст сообщения" + return 1 + fi echo -e " ${GREEN}🟢 ${RESET} $1" }Аналогичную проверку следует добавить в остальные функции печати.
1-34
: Рассмотрите возможность добавления тестовДля обеспечения надёжности библиотеки печати рекомендуется добавить модульные тесты.
Я могу помочь с написанием тестов для проверки:
- Корректности цветового оформления
- Обработки ошибочных ситуаций
- Форматирования вывода
Хотите, чтобы я создал issue для отслеживания этой задачи?
🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[warning] 5-5: NC appears unused. Verify use (or export if used externally).
(SC2034)
tools/local-test/scripts/lib/run-tests.sh (1)
28-29
: Рассмотрите добавление временных метокДля улучшения отладки и анализа производительности рекомендуется добавить временные метки к сообщениям о начале и завершении тестирования.
Предлагаемые изменения:
-print_run "=========== Тестирование ${BOLD}$JOB_NAME${RESET}" +print_run "=========== [$(date '+%Y-%m-%d %H:%M:%S')] Тестирование ${BOLD}$JOB_NAME${RESET}" $ONEC_PATH/$APP ENTERPRISE $CONNECTION_STRING /DisableSplash /DisableStartupDialogs /DisableStartupMessages $RUN_MODE /C "RunUnitTests=$CONFIG" >> $LOGS_PATH/$JOB_NAME.log 2>&1 RESULT=$(head -n 1 $RESULT_PATH/exit-code-$JOB_NAME.txt) RESULT=${RESULT:1:1} if [[ "$RESULT" == "0" ]]; then - print_success "Тестирование ${BOLD}$JOB_NAME${RESET} завершилось успешно" + print_success "[$(date '+%Y-%m-%d %H:%M:%S')] Тестирование ${BOLD}$JOB_NAME${RESET} завершилось успешно" else - print_error "Тестирование ${BOLD}$JOB_NAME${RESET} завершилось с ошибкой" + print_error "[$(date '+%Y-%m-%d %H:%M:%S')] Тестирование ${BOLD}$JOB_NAME${RESET} завершилось с ошибкой" fiAlso applies to: 35-37
tools/local-test/scripts/lib/prepare-db.sh (2)
4-6
: Проверьте существование print.sh перед использованиемДобавьте проверку существования файла print.sh перед его подключением для предотвращения ошибок выполнения.
-. $LIB_PATH/print.sh +if [ ! -f "$LIB_PATH/print.sh" ]; then + echo "Ошибка: Файл print.sh не найден в $LIB_PATH" + exit 1 +fi +. "$LIB_PATH/print.sh"
Line range hint
1-32
: Рекомендации по улучшению скрипта в целом
- Добавьте проверку входных параметров
- Используйте константы для часто используемых значений
- Добавьте очистку временных файлов
+#!/bin/bash +set -euo pipefail + +if [ $# -ne 2 ]; then + echo "Использование: $0 <строка подключения> <имя задания>" + exit 1 +fi + CONNECTION_STRING=$1 JOB_NAME=$2 + +# Очистка при выходе +trap 'rm -f "$LOGS_PATH/$JOB_NAME.log"' EXIT🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
tools/local-test/scripts/steps/build-artifacts.sh (2)
8-11
: Рекомендуется добавить обработку ошибокПроверка наличия конфигурации выполняется корректно, но желательно добавить обработку возможных ошибок при проверке файла.
Предлагаю следующие изменения:
-if [[ -f $BINARY_PATH/configuration.cf ]]; then +if [[ -f "$BINARY_PATH/configuration.cf" ]] && [[ -r "$BINARY_PATH/configuration.cf" ]]; then configuration_exists=1 print_success " Сборка конфигурации ${BOLD}не требуется${RESET}" +else + print_state " Проверка файла конфигурации ${BOLD}не удалась${RESET}" fi
Line range hint
13-21
: Добавить валидацию расширенийТекущая реализация обработки расширений работает корректно, но рекомендуется добавить дополнительные проверки.
Предлагаю добавить проверку корректности файлов расширений:
for key in "${extensions[@]}";do + if [[ ! -d "$BINARY_PATH" ]]; then + print_state " Директория ${BOLD}$BINARY_PATH${RESET} не существует" + exit 1 + fi if [[ -f $BINARY_PATH/$key.cfe ]]; then print_success " Сборка $key ${BOLD}не требуется${RESET}" else + if [[ ! -f "$EXPORT_PATH/$key" ]]; then + print_state " Исходный файл расширения ${BOLD}$key${RESET} не найден" + continue + fi extensions_set+=($key) fi done🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 19-19: Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a.
(SC2206)
exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1)
483-494
: Уточнить корректность проверки среды и добавляемых контекстов
Проверка «Если ОбычноеПриложение» может работать корректно в большинстве сценариев, но стоит убедиться, что при появлении других типов окружения (например, тонкий клиент, веб-клиент и т.д.) условие по-прежнему будет действовать корректно. Кроме того, если впоследствии понадобится учитывать дополнительные режимы, возможно, стоит вынести логику по определению контекстов в отдельную функцию или структуру для гибкости.exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2)
92-107
: Рекомендуется добавить очистку временных файловФункция создает временный файл с уникальным именем, но не предусматривает его удаление после использования. Рекомендуется добавить механизм очистки временных файлов.
139-146
: Рекомендуется добавить обработку ошибок при создании COM-объектаПри создании COM-объекта могут возникнуть ошибки. Рекомендуется добавить обработку исключений для более надежной работы.
#Если НЕ ВебКлиент Тогда + Попытка WshShell = Новый COMОбъект("WScript.Shell"); WshShell.CurrentDirectory = РабочийКаталог; Рез = WshShell.Run(ТекстКоманды, 0, -1); Возврат Рез; + Исключение + ВызватьИсключение "Ошибка при выполнении команды: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки #КонецЕслиtests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
108-140
: Рекомендуется добавить документацию к тестовым процедурамДля улучшения поддержки кода рекомендуется добавить описание назначения каждой тестовой процедуры и ожидаемых результатов.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
exts/yaxunit/src/CommonTemplates/ЮТV8UnpackWS/Template.bin
is excluded by!**/*.bin
📒 Files selected for processing (34)
exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl
(7 hunks)exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
(1 hunks)exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl
(7 hunks)exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
(2 hunks)exts/yaxunit/src/Configuration/Configuration.mdo
(1 hunks)exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
(1 hunks)tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
(2 hunks)tests/src/CommonModules/ТестовыеДанные/Module.bsl
(1 hunks)tests/src/Configuration/Configuration.mdo
(1 hunks)tools/local-test/scripts/lib/prepare-db.sh
(1 hunks)tools/local-test/scripts/lib/print.sh
(1 hunks)tools/local-test/scripts/lib/run-tests.sh
(1 hunks)tools/local-test/scripts/steps/build-artifacts.sh
(2 hunks)tools/local-test/scripts/steps/clean-outdated.sh
(1 hunks)tools/local-test/scripts/steps/convert-to-xml.sh
(1 hunks)tools/local-test/scripts/steps/run-filedb-test.sh
(1 hunks)tools/local-test/scripts/steps/run-serverdb-test.sh
(1 hunks)tools/local-test/scripts/test-it.sh
(2 hunks)tools/v8unpack/build-epf.bat
(1 hunks)tools/v8unpack/build-epf.sh
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- tools/v8unpack/build-epf.bat
🚧 Files skipped from review as they are similar to previous changes (10)
- tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
- exts/yaxunit/src/Configuration/Configuration.mdo
- tests/src/Configuration/Configuration.mdo
- exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
- exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
- exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/steps/run-serverdb-test.sh
[warning] 18-18: Quotes/backslashes in this variable will not be respected.
(SC2090)
[warning] 20-20: Quotes/backslashes in this variable will not be respected.
(SC2090)
tools/local-test/scripts/test-it.sh
[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
tools/local-test/scripts/steps/clean-outdated.sh
[warning] 19-19: Use "${var:?}" to ensure this never expands to / .
(SC2115)
tools/local-test/scripts/steps/build-artifacts.sh
[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
tools/local-test/scripts/lib/print.sh
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[warning] 5-5: NC appears unused. Verify use (or export if used externally).
(SC2034)
🔇 Additional comments (25)
tools/local-test/scripts/steps/clean-outdated.sh (1)
18-18
: Улучшенное форматирование сообщений
Изменения в форматировании сообщений улучшают читаемость вывода скрипта. Использование переменных ${BOLD}
и ${RESET}
делает статус более заметным.
Also applies to: 21-21, 23-23
tools/local-test/scripts/steps/run-serverdb-test.sh (1)
6-7
: Подключение библиотеки print.sh выполнено корректно
Корректное использование source для подключения функций логирования.
tools/local-test/scripts/test-it.sh (1)
41-43
: Структура логирования реализована корректно
Добавление централизованного пути для логов и создание соответствующей директории следует общему паттерну скрипта и улучшает организацию выходных данных.
tools/local-test/scripts/steps/convert-to-xml.sh (2)
4-4
: Подтверждаю добавление библиотеки печати
Добавление библиотеки print.sh улучшает согласованность вывода логов в системе.
7-7
: Улучшение форматирования вывода
Замена прямых echo на функции print_info и print_run улучшает читаемость и унифицирует вывод логов.
Also applies to: 9-9
tools/local-test/scripts/steps/run-filedb-test.sh (1)
6-7
: Проверьте наличие файла print.sh
Добавлена зависимость от файла print.sh. Убедитесь, что файл существует в указанном пути.
✅ Verification successful
Файл print.sh найден и содержит все необходимые функции
Файл print.sh
существует по пути tools/local-test/scripts/lib/print.sh
и содержит все требуемые функции для вывода сообщений:
print_state
- для вывода состоянияprint_error
- для вывода ошибокprint_info
- для вывода информационных сообщений
Импорт файла корректен и безопасен для использования.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check if print.sh exists and contains required functions
# Check if print.sh exists
if [ -f "$LIB_PATH/print.sh" ]; then
# Check for required functions
grep -E "print_(state|error|info)" "$LIB_PATH/print.sh"
fi
Length of output: 22
Script:
#!/bin/bash
# Search for print.sh file in the repository
fd "print.sh" --type f
# If found, check its content
fd "print.sh" --type f --exec cat {}
Length of output: 785
tools/v8unpack/build-epf.sh (1)
Line range hint 1-5
: Проверьте использование скрипта в CI/CD
Убедитесь, что все места вызова скрипта обновлены с учетом нового параметра.
tools/local-test/scripts/lib/run-tests.sh (2)
28-28
: Улучшение читаемости вывода с помощью форматирования
Хорошее улучшение с использованием выделения жирным шрифтом для названия задачи. Это повышает читаемость вывода при параллельном выполнении нескольких тестов.
Also applies to: 35-35, 37-37
29-29
: Проверьте ротацию лог-файлов
Перенаправление вывода в лог-файл - правильное решение, но стоит учесть:
- Возможное переполнение директории логов при частом запуске тестов
- Отсутствие механизма очистки старых логов
Рекомендуется добавить механизм очистки старых лог-файлов, например:
- Удаление логов старше N дней
- Ограничение максимального размера директории с логами
tools/local-test/scripts/lib/prepare-db.sh (1)
26-28
: Проверьте наличие файла DisableSafeMode.epf
Добавьте проверку существования файла DisableSafeMode.epf перед его выполнением.
+if [ ! -f "$LIB_PATH/DisableSafeMode.epf" ]; then
+ print_state "Ошибка: Файл DisableSafeMode.epf не найден в ${BOLD}$LIB_PATH${RESET}"
+ exit 1
+fi
$ONEC_PATH/1cv8 ENTERPRISE $BASE_ARGUMENTS /Execute $LIB_PATH/DisableSafeMode.epf >> $LOGS_PATH/$JOB_NAME.log 2>&1
SUCCESS=$?
+if [ $SUCCESS -ne 0 ]; then
+ print_state "Ошибка при снятии безопасного режима в ${BOLD}$JOB_NAME${RESET}"
+ exit $SUCCESS
+fi
print_state "Снятие безопасного режима ${BOLD}$JOB_NAME${RESET}"
✅ Verification successful
Файл DisableSafeMode.epf существует в нужной директории
Файл DisableSafeMode.epf
присутствует в директории tools/local-test/scripts/lib/
, которая соответствует переменной $LIB_PATH
в скрипте. Тем не менее, добавление проверки существования файла и обработки ошибок, как предложено в review comment, является хорошей практикой для повышения надежности скрипта.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверка наличия файла DisableSafeMode.epf
fd -t f "DisableSafeMode.epf" --exec file {}
Length of output: 82
Script:
#!/bin/bash
# Попробуем найти файл DisableSafeMode.epf без использования команды file
fd -t f "DisableSafeMode.epf"
# Также проверим с помощью find для надежности
find . -name "DisableSafeMode.epf" -type f
Length of output: 172
tests/src/CommonModules/ТестовыеДанные/Module.bsl (1)
38-38
: Убедиться в правильном вызове новой функции получения метаданных
Переход с «ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля()» на «ЮТФабрика.ОписаниеМетаданныеМодуля()» может влиять на контекст возвращаемых данных. Рекомендуется проверить, не изменился ли при этом формат самой структуры метаданных и корректно ли она используется при последующих операциях.
tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl (1)
117-117
: Проверить корректность переноса вызова «ОписаниеТиповЛюбаяСсылка»
Замена вызова «ЮТОбщий.ОписаниеТиповЛюбаяСсылка()» на «ЮТТипыДанныхСлужебный.ОписаниеТиповЛюбаяСсылка()» должна сохранять совместимость с предыдущей логикой. Убедитесь, что новый модуль возвращает ожидаемый набор типов, особенно при работе со ссылками на объекты метаданных.
tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl (1)
34-34
: Проверить использование «ОписаниеМетаданныеМодуля» в тестах
Изменение ссылки на «ЮТФабрика.ОписаниеМетаданныеМодуля()» предполагает новую точку получения данных о метаданных. Убедитесь, что тесты корректно инициализируются и что свойства метаданных (КлиентУправляемоеПриложение, КлиентОбычноеПриложение, Сервер) действительно соответствуют реальным условиям тестируемой среды.
exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1)
52-54
: Корректное использование возвращаемого значения функции
Правильное изменение: теперь имя файла явно возвращается из функции СобратьОбработку
и используется в вызывающем коде.
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
21-91
: Корректная структура тестовых сценариев
Тесты хорошо структурированы, включают проверку различных статусов выполнения (успешно, ошибка, сломан) и корректно используют утверждения.
tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (2)
152-152
: Проверить согласованность использования ЮТФабрика
Изменен источник метаданных с ЮТФабрикаСлужебный
на ЮТФабрика
. Необходимо проверить согласованность этого изменения во всей кодовой базе.
✅ Verification successful
Let me generate one more verification to check for any remaining references to the old factory:
Let's check the specific usage context in the files where we found references:
Изменение согласовано с кодовой базой
Анализ показал, что метод ОписаниеМетаданныеМодуля()
теперь последовательно используется через ЮТФабрика
во всей кодовой базе. Старых вызовов через ЮТФабрикаСлужебный
не обнаружено. Хотя модуль ЮТФабрикаСлужебный
все еще существует, он используется для других целей (создание описаний тестов, ошибок и т.д.).
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Поиск использования старого и нового способа получения метаданных
echo "Старый способ:"
rg "ЮТФабрикаСлужебный\.ОписаниеМетаданныеМодуля"
echo "Новый способ:"
rg "ЮТФабрика\.ОписаниеМетаданныеМодуля"
Length of output: 1830
Script:
#!/bin/bash
# Поиск любых упоминаний ЮТФабрикаСлужебный
rg "ЮТФабрикаСлужебный" -l
# Поиск определения модуля ЮТФабрикаСлужебный
fd "ЮТФабрикаСлужебный"
Length of output: 2877
Script:
#!/bin/bash
# Проверяем контекст использования ЮТФабрикаСлужебный в файлах
rg "ЮТФабрикаСлужебный" -B 2 -A 2 tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
rg "ЮТФабрикаСлужебный" -B 2 -A 2 tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl
rg "ЮТФабрикаСлужебный" -B 2 -A 2 tests/src/CommonModules/ОМ_ЮТИсполнительСлужебныйКлиент/Module.bsl
Length of output: 2433
93-93
: Необходимо подтвердить изменение количества тестов
Количество ожидаемых тестов увеличено с 41 до 42. Пожалуйста, подтвердите, что это изменение соответствует фактическому добавлению нового теста.
✅ Verification successful
Let's gather more specific information about the test procedures in the module under review.
Let's check the actual test methods in this module to verify the count.
Let's try to get the full content of the module to analyze all test methods, as they might have a different naming pattern.
Изменение количества тестов подтверждено
В процедуре ЗагрузитьТесты()
проверяется количество прочитанных наборов тестов из расширения tests:
Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
.ИмеетДлину(42);
Изменение с 41 на 42 теста является корректным, так как это отражает фактическое количество тестовых наборов в расширении tests.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверка количества тестовых процедур
rg -l "Процедура\s+.*\(\s*\)\s+Экспорт" tests/
Length of output: 2722
Script:
#!/bin/bash
# Поиск экспортных процедур в модуле ОМ_ЮТЧитательСлужебный
rg "Процедура\s+.*\(\s*\)\s+Экспорт" tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
Length of output: 430
Script:
#!/bin/bash
# Поиск тестовых методов в модуле
rg "Процедура\s+Тест.*\(\s*\)" tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
Length of output: 240
Script:
#!/bin/bash
# Получение содержимого модуля
cat tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
Length of output: 7353
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)
21-57
: Функция корректно обрабатывает контексты исполнения тестов.
Функция ИсполняемыйТестовыйМодуль
правильно проверяет доступность контекстов исполнения и корректно обрабатывает ошибки режимов выполнения.
tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl (1)
Line range hint 375-379
: Корректное изменение источника метаданных.
Переход с ЮТФабрикаСлужебный
на ЮТФабрика
для получения описания метаданных модуля является правильным архитектурным решением.
exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (2)
147-148
: Улучшение типизации метаданных модуля.
Добавление явного указания типа "ОбщийМодуль" улучшает типизацию и облегчает дальнейшую обработку метаданных.
161-172
: Добавлена поддержка метаданных внешних обработок.
Новая функция МетаданныеОбработки
корректно реализует получение метаданных для внешних обработок.
✅ Verification successful
Функция МетаданныеОбработки корректно используется в тестах
Функция МетаданныеОбработки
уже интегрирована в тестовый код и используется в модуле ОМ_ВыполнениеТестовОбработки
для получения метаданных внешней обработки в контексте серверного вызова. Реализация соответствует требованиям и подтверждена тестовым покрытием.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверка использования новой функции в тестах
# Поиск тестов для внешних обработок
rg -l "МетаданныеОбработки" tests/
Length of output: 234
Script:
#!/bin/bash
# Проверим содержимое файла с тестами, чтобы увидеть как используется функция
rg -A 5 -B 5 "МетаданныеОбработки" tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
Length of output: 837
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1)
184-184
: Улучшение архитектуры: перенос логики в общий модуль
Перенос создания исполняемого тестового модуля в общий клиент-серверный модуль - это правильное архитектурное решение, которое улучшает организацию кода и его поддерживаемость.
exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (2)
85-90
: Улучшение согласованности интерфейса обработчиков событий
Добавление параметра ТестовыйМодуль
во все обработчики событий улучшает:
- Типобезопасность за счет явной передачи тестового модуля
- Читаемость кода за счет явного указания зависимостей
- Поддерживаемость за счет стандартизации интерфейса
Also applies to: 97-103, 110-117, 124-131, 138-144, 151-156
Line range hint 278-296
: Улучшение механизма обработки событий
Доработка процедуры ВызватьОбработкуСобытияИсполненияТестов
улучшает:
- Поддержку обработчиков событий уровня тестового модуля
- Порядок выполнения обработчиков
- Обработку ошибок
Also applies to: 300-300
exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (1)
Line range hint 425-436
: Улучшение структуры метаданных модуля
Добавление поля Тип
в описание метаданных модуля улучшает:
- Типобезопасность за счет явного указания типа модуля
- Документацию за счет четкого указания поддерживаемых значений
- Расширяемость для будущих типов модулей
There was a problem hiding this 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
🔭 Outside diff range comments (1)
tools/local-test/scripts/steps/run-serverdb-test.sh (1)
Line range hint
1-7
: Улучшить безопасность и обработку ошибок при инициализацииНеобходимо добавить защиту от ошибок и корректную обработку переменных:
-MODE=$1 -JOB_NAME=${MODE}Application-Server -DB_NAME=DB_${MODE}Application -CONNECTION_STRING=/S\"localhost\\$DB_NAME\" +MODE="$1" +JOB_NAME="${MODE}Application-Server" +DB_NAME="DB_${MODE}Application" +CONNECTION_STRING="/S\"localhost\\$DB_NAME\"" +if [ ! -f "$LIB_PATH/print.sh" ]; then + echo "Ошибка: Файл print.sh не найден" + exit 1 +fi . $LIB_PATH/print.sh🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 4-4: Quotes/backslashes will be treated literally. Use an array.
(SC2089)
[warning] 18-18: Quotes/backslashes in this variable will not be respected.
(SC2090)
[warning] 20-20: Quotes/backslashes in this variable will not be respected.
(SC2090)
♻️ Duplicate comments (6)
tools/local-test/scripts/steps/clean-outdated.sh (1)
19-20
:⚠️ Potential issueНеобходимо обеспечить безопасное использование rm
Текущая реализация команды rm может быть небезопасной, если переменные
$EXPORT_PATH
или$PROJECT_NAME
окажутся пустыми или неопределенными.Предлагаю следующие изменения для повышения безопасности:
- rm -rf $EXPORT_PATH/$PROJECT_NAME - rm -rf $BINARY_PATH/$PROJECT_NAME.* + rm -rf "${EXPORT_PATH:?}/${PROJECT_NAME:?}" + rm -rf "${BINARY_PATH:?}/${PROJECT_NAME:?}."*🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 19-19: Use "${var:?}" to ensure this never expands to / .
(SC2115)
tools/local-test/scripts/test-it.sh (1)
53-53
:⚠️ Potential issueИсправьте небезопасную очистку директории логов
Текущая реализация может привести к катастрофическим последствиям, если переменная
$LOGS_PATH
окажется пустой.Необходимо применить следующее исправление:
-rm -rf $LOGS_PATH/* +rm -rf "${LOGS_PATH:?}"/*Это добавит проверку на пустое значение переменной и предотвратит потенциально опасное выполнение команды
rm -rf /*
.🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
tools/local-test/scripts/steps/run-serverdb-test.sh (2)
13-16
:⚠️ Potential issueИсправить код возврата при ошибке
Возврат значения 0 при ошибке создания базы данных может привести к некорректной работе CI/CD систем.
if [ $SUCCESS -ne 0 ]; then print_error "Не удалось создать базу ${BOLD}$JOB_NAME${RESET}" - exit 0 + exit 1 fi
18-23
:⚠️ Potential issueИсправить обработку переменных в командах
Текущая реализация может некорректно обрабатывать специальные символы в параметрах.
-if $LIB_PATH/prepare-db.sh $CONNECTION_STRING $JOB_NAME; then +if "$LIB_PATH/prepare-db.sh" "$CONNECTION_STRING" "$JOB_NAME"; then print_info "Подготовлена база для ${BOLD}$JOB_NAME${RESET}" - $LIB_PATH/run-tests.sh $MODE $CONNECTION_STRING $JOB_NAME + "$LIB_PATH/run-tests.sh" "$MODE" "$CONNECTION_STRING" "$JOB_NAME"🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 18-18: Quotes/backslashes in this variable will not be respected.
(SC2090)
[warning] 20-20: Quotes/backslashes in this variable will not be respected.
(SC2090)
tools/local-test/scripts/steps/build-artifacts.sh (2)
4-4
:⚠️ Potential issueНебезопасная операция удаления
Текущая реализация команды
rm -rf $TEMP_DB_PATH/*
может быть небезопасной, если переменнаяTEMP_DB_PATH
окажется пустой.-rm -rf $TEMP_DB_PATH/* +[[ -n "${TEMP_DB_PATH}" ]] && rm -rf "${TEMP_DB_PATH:?}/"*🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
29-42
:⚠️ Potential issueДобавить проверку результатов выполнения команд
Рекомендуется добавить проверку кодов возврата после выполнения команд ibcmd для корректной обработки ошибок.
-$ONEC_PATH/ibcmd infobase create --db-path=$TEMP_DB_PATH --import=$EXPORT_PATH/configuration --apply --force >> $LOGS_PATH/configuration.log 2>&1 +if ! $ONEC_PATH/ibcmd infobase create --db-path=$TEMP_DB_PATH --import=$EXPORT_PATH/configuration --apply --force >> $LOGS_PATH/configuration.log 2>&1; then + print_state "Ошибка создания информационной базы" + exit 1 +fi print_state 'Создание информационной базы' if [[ $configuration_exists -eq 0 ]]; then - $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH $BINARY_PATH/configuration.cf >> $LOGS_PATH/configuration.log 2>&1 + if ! $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH $BINARY_PATH/configuration.cf >> $LOGS_PATH/configuration.log 2>&1; then + print_state "Ошибка сохранения конфигурации" + exit 1 + fi print_state 'Сохрание тестовой конфигурации' fi
🧹 Nitpick comments (10)
tools/local-test/scripts/steps/clean-outdated.sh (1)
21-21
: Рекомендуется использовать кавычки при записи хешаДля предотвращения проблем с специальными символами, рекомендуется заключить переменную в кавычки.
- echo $current_hash > $hash_file_name + echo "$current_hash" > "$hash_file_name"tools/local-test/scripts/test-it.sh (1)
43-43
: Добавьте обработку ошибок при создании директорииХотя команда
mkdir -p
безопасна, рекомендуется добавить проверку успешности создания директории для логов.Предлагаю следующее улучшение:
-mkdir -p $LOGS_PATH +if ! mkdir -p "$LOGS_PATH"; then + >&2 echo "Не удалось создать директорию для логов: $LOGS_PATH" + exit 1 +fitools/local-test/scripts/steps/run-serverdb-test.sh (1)
Line range hint
1-23
: Добавить общие улучшения для скриптаРекомендуется добавить следующие улучшения для повышения надёжности скрипта:
- Добавить строгий режим в начало скрипта:
#!/bin/bash set -euo pipefail
- Добавить проверку обязательных переменных:
if [ -z "${LIB_PATH:-}" ] || [ -z "${ONEC_PATH:-}" ] || [ -z "${LOGS_PATH:-}" ]; then echo "Ошибка: Не установлены обязательные переменные окружения" echo "Требуются: LIB_PATH, ONEC_PATH, LOGS_PATH" exit 1 fi
- Добавить проверку наличия первого аргумента:
if [ $# -lt 1 ]; then echo "Использование: $0 <режим>" exit 1 fi🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 4-4: Quotes/backslashes will be treated literally. Use an array.
(SC2089)
[warning] 18-18: Quotes/backslashes in this variable will not be respected.
(SC2090)
[warning] 20-20: Quotes/backslashes in this variable will not be respected.
(SC2090)
tools/local-test/scripts/steps/build-artifacts.sh (2)
15-20
: Добавить обработку ошибок при проверке файловРекомендуется добавить проверку доступности директории и прав на чтение файлов.
for key in "${extensions[@]}";do + if [[ ! -d "$BINARY_PATH" ]]; then + print_state "Ошибка: директория $BINARY_PATH не существует" + exit 1 + fi if [[ -f $BINARY_PATH/$key.cfe ]]; then + if [[ ! -r "$BINARY_PATH/$key.cfe" ]]; then + print_state "Ошибка: нет прав на чтение файла $BINARY_PATH/$key.cfe" + exit 1 + fi print_success " Сборка $key ${BOLD}не требуется${RESET}" else extensions_set+=($key) fi done🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 19-19: Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a.
(SC2206)
1-3
: Улучшить базовую структуру скриптаРекомендуется добавить следующие улучшения для повышения надежности скрипта:
- Добавить shebang line
- Использовать кавычки для всех переменных
+#!/bin/bash -TEMP_DB_PATH=$TMP_PATH/file-db +TEMP_DB_PATH="${TMP_PATH}/file-db" -. $LIB_PATH/print.sh +. "${LIB_PATH}/print.sh"🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
tools/local-test/scripts/lib/print.sh (2)
1-34
: Улучшите совместимость с различными терминаламиТекущая реализация может иметь проблемы совместимости:
- Использование
echo -e
не является переносимым между разными оболочками- Юникод-символы могут некорректно отображаться в некоторых терминалах
Рекомендации:
- Используйте
printf
вместоecho -e
- Добавьте проверку поддержки Unicode в терминале
- Предусмотрите альтернативные ASCII-символы
Хотите, чтобы я предложил конкретную реализацию этих улучшений?
🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[warning] 5-5: NC appears unused. Verify use (or export if used externally).
(SC2034)
9-34
: Добавьте документацию к функциямДобавьте комментарии к функциям, описывающие их назначение, параметры и примеры использования.
Пример:
# Выводит статус выполнения команды # Параметры: # $1 - сообщение для вывода # Возвращает: # 0 - если предыдущая команда выполнилась успешно # 1 - если предыдущая команда завершилась с ошибкой # Пример: # ls /tmp && print_state "Чтение директории" function print_state {tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)
31-48
: Рекомендуется добавить негативные тесты.Текущие проверки охватывают только позитивные сценарии. Рекомендуется добавить тесты на:
- Некорректные входные данные
- Отсутствующие метаданные
- Ошибки при компиляции
108-140
: Рекомендуется вынести текст тестовой обработки в отдельный макет.Хранение текста обработки в коде усложняет его поддержку и читаемость.
-Текст = - "Процедура ИсполняемыеСценарии() Экспорт - | - | ЮТТесты - | .ДобавитьТест(""ТестУспешно"") - | .ДобавитьТест(""ТестОшибка"") - | .ДобавитьТест(""ТестСломан"") - | ; - | - |КонецПроцедуры - |..."; +Текст = ПолучитьМакет("МакетТестовойОбработки");exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (1)
416-445
: Рекомендуется упростить логику вызова обработчика.Метод
ВызватьОбработчикТестовогоМодуля
содержит сложную логику определения и вызова обработчика. Рекомендуется:
- Вынести логику разбора имени обработчика в отдельный метод
- Упростить условия вызова внешнего обработчика
-Процедура ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, ОбработчикСобытияПереопределен) +Процедура ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, ОбработчикСобытияПереопределен) + ОписаниеОбработчика = РазобратьИмяОбработчика(ОбработчикСобытия, ОписаниеСобытия); + + Если НЕ ОписаниеОбработчика.МетодСуществует Тогда + Если ОбработчикСобытияПереопределен Тогда + ВызватьИсключение СтрШаблон("Не найден обработчик тестового модуля %1.%2", + ОписаниеОбработчика.ПредставлениеОбъекта, + ОписаниеОбработчика.ИмяМетода); + КонецЕсли; + Возврат; + КонецЕсли; + + ВыполнитьОбработчик(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОписаниеОбработчика); +КонецПроцедуры
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
exts/yaxunit/src/CommonTemplates/ЮТV8UnpackWS/Template.bin
is excluded by!**/*.bin
📒 Files selected for processing (34)
exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl
(7 hunks)exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
(1 hunks)exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl
(7 hunks)exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
(2 hunks)exts/yaxunit/src/Configuration/Configuration.mdo
(1 hunks)exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
(1 hunks)tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
(2 hunks)tests/src/CommonModules/ТестовыеДанные/Module.bsl
(1 hunks)tests/src/Configuration/Configuration.mdo
(1 hunks)tools/local-test/scripts/lib/prepare-db.sh
(1 hunks)tools/local-test/scripts/lib/print.sh
(1 hunks)tools/local-test/scripts/lib/run-tests.sh
(1 hunks)tools/local-test/scripts/steps/build-artifacts.sh
(2 hunks)tools/local-test/scripts/steps/clean-outdated.sh
(1 hunks)tools/local-test/scripts/steps/convert-to-xml.sh
(1 hunks)tools/local-test/scripts/steps/run-filedb-test.sh
(1 hunks)tools/local-test/scripts/steps/run-serverdb-test.sh
(1 hunks)tools/local-test/scripts/test-it.sh
(2 hunks)tools/v8unpack/build-epf.bat
(1 hunks)tools/v8unpack/build-epf.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (22)
- tools/v8unpack/build-epf.bat
- tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
- tools/v8unpack/build-epf.sh
- tests/src/Configuration/Configuration.mdo
- tools/local-test/scripts/steps/convert-to-xml.sh
- exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
- tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
- tools/local-test/scripts/steps/run-filedb-test.sh
- tools/local-test/scripts/lib/run-tests.sh
- tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl
- exts/yaxunit/src/Configuration/Configuration.mdo
- tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl
- tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
- tools/local-test/scripts/lib/prepare-db.sh
- exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
- exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
- tests/src/CommonModules/ТестовыеДанные/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/lib/print.sh
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[warning] 5-5: NC appears unused. Verify use (or export if used externally).
(SC2034)
tools/local-test/scripts/steps/build-artifacts.sh
[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
tools/local-test/scripts/steps/clean-outdated.sh
[warning] 19-19: Use "${var:?}" to ensure this never expands to / .
(SC2115)
tools/local-test/scripts/steps/run-serverdb-test.sh
[warning] 18-18: Quotes/backslashes in this variable will not be respected.
(SC2090)
[warning] 20-20: Quotes/backslashes in this variable will not be respected.
(SC2090)
tools/local-test/scripts/test-it.sh
[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: SonarQualityGate / Проверка Sonar
🔇 Additional comments (13)
tools/local-test/scripts/steps/clean-outdated.sh (1)
18-18
: Форматирование сообщений выполнено корректноХорошее решение использовать переменные
${BOLD}
и${RESET}
для форматирования важных частей сообщений. Это улучшает читаемость вывода.Also applies to: 23-23
tools/local-test/scripts/test-it.sh (1)
41-41
: Корректное определение пути для логов!Экспорт переменной
LOGS_PATH
следует общему паттерну определения путей в скрипте и обеспечивает доступность в дочерних процессах.tools/local-test/scripts/lib/print.sh (1)
1-7
: Добавьте shebang и исправьте определение цветовТе же проблемы, что были отмечены ранее, всё ещё присутствуют в коде.
🧰 Tools
🪛 Shellcheck (0.10.0)
[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
(SC2148)
[warning] 5-5: NC appears unused. Verify use (or export if used externally).
(SC2034)
exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (2)
483-494
: Улучшенная реализация определения контекстов приложения!Рефакторинг улучшил код следующим образом:
- Использование
ЮТОкружение.ОписаниеОкружения()
для определения среды выполнения- Более чёткая и понятная логика добавления контекстов
- Улучшенная поддержка различных типов приложений
483-494
: Проверить корректность выполнения тестов во всех контекстахУбедитесь, что тесты корректно выполняются во всех контекстах после изменения логики определения контекстов приложения.
✅ Verification successful
Изменения в определении контекстов приложения корректны
Проверка показала, что изменения в функции КонтекстыПриложения() сохраняют правильную логику выполнения тестов во всех контекстах:
- Серверные контексты (Сервер, ВызовСервера) всегда доступны
- Клиентский контекст корректно выбирается в зависимости от типа приложения
- Все тесты правильно обрабатываются в соответствующих контекстах выполнения
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Описание: Поиск использования КонтекстыПриложения для проверки влияния изменений # Поиск вызовов функции rg -A 5 "КонтекстыПриложения\(\)" # Поиск тестов, использующих разные контексты ast-grep --pattern 'КонтекстВызова = $_'Length of output: 1925
Script:
#!/bin/bash # Поиск определений контекстов и их использования # Поиск определений контекстов rg -A 10 "КонтекстыВызова\(\)" # Поиск использования разных типов контекстов rg "Контексты\.(Сервер|КлиентОбычноеПриложение|КлиентУправляемоеПриложение|ВызовСервера)" -A 2Length of output: 12077
exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2)
52-54
: Улучшение возврата результата компиляции.Возврат имени скомпилированного файла позволяет лучше контролировать результат операции.
92-107
: Улучшение генерации имени файла обработки.Использование UUID для генерации уникального имени файла и возврат этого имени улучшает контроль над результатом сборки.
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
21-29
: Хорошая структура тестового набора.Тесты логически сгруппированы и выполняются в транзакции, что обеспечивает изоляцию тестов.
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (2)
59-108
: Необходимо снизить когнитивную сложность функции.Функция
ИсполняемыеНаборыМодуля
имеет высокую когнитивную сложность.
373-387
: Необходимо добавить обработку ошибок при получении формы.В функции
ТестовыйМодуль
используется небезопасный методПолучитьФорму
.exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1)
184-184
: Улучшение модульности кода.Перенос создания тестового модуля в отдельный сервис улучшает разделение ответственности.
exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2)
425-425
: Документация корректна и информативна!Подробное описание возвращаемого значения функции с указанием всех полей структуры и их типов.
Line range hint
436-444
: Реализация функции соответствует документации!Структура создается с правильным набором полей и корректными значениями по умолчанию для каждого поля.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🧹 Nitpick comments (5)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)
3-3
: Уточните дату окончания авторских правУказан 2025 год, что выходит за пределы текущей даты. Рекомендуется указать текущий год (2024) или использовать только начальный год.
- Copyright 2021-2025 BIA-Technologies Limited Liability Company + Copyright 2021-2024 BIA-Technologies Limited Liability Company
31-48
: Устраните дублирование кода проверокПроцедуры
ЗагрузитьТестыВременнойОбработки
иИсполняемыеСценарииВременнойОбработки
содержат идентичные проверки. Рекомендуется вынести повторяющиеся проверки в отдельную вспомогательную функцию.Функция ПроверитьСценарии(Сценарии) Возврат ЮТест.ОжидаетЧто(Сценарии) .Заполнено() .Свойство("Метаданные").Заполнено() .Свойство("Метаданные.Сервер").ЭтоИстина() .Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь() .Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь() .Свойство("НаборыТестов").Заполнено() .Свойство("НаборыТестов[0].Тесты").Заполнено() .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно") .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка") .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан") ; КонецФункцииAlso applies to: 50-67
tools/local-test/scripts/test-by-ibcmd.sh (3)
1-15
: Улучшить инициализацию скрипта для большей надежностиРекомендуется улучшить обработку ошибок при инициализации:
#!/bin/bash -export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +export SCRIPTPATH +cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1 +SCRIPTPATH=$(pwd -P)Это изменение:
- Предотвратит маскировку кода возврата
- Обеспечит корректное завершение скрипта при ошибке cd
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
31-41
: Оптимизировать объявление путейТекущая реализация может маскировать ошибки realpath:
-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath) -export ROOT_PATH=$(realpath $SCRIPTPATH/../../../) -export STEPS_PATH=$(realpath $SCRIPTPATH/steps) -export LIB_PATH=$(realpath $SCRIPTPATH/lib) +export WORK_PATH +export ROOT_PATH +export STEPS_PATH +export LIB_PATH + +WORK_PATH=$(realpath "$SCRIPTPATH/../workpath") || exit 1 +ROOT_PATH=$(realpath "$SCRIPTPATH/../../../") || exit 1 +STEPS_PATH=$(realpath "$SCRIPTPATH/steps") || exit 1 +LIB_PATH=$(realpath "$SCRIPTPATH/lib") || exit 1🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
57-59
: Улучшить создание конфигурационного файлаРекомендуется использовать quoted heredoc для большей безопасности:
-cat >~/.1cv8/1C/1cv8/conf/conf.cfg <<EOL +cat >~/.1cv8/1C/1cv8/conf/conf.cfg <<"EOL" DisableUnsafeActionProtection=.* EOL
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(2 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 54-54: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 55-55: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 61-61: SOURCES_HASH appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 63-63: projects appears unused. Verify use (or export if used externally).
(SC2034)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: SonarQualityGate / Проверка Sonar
🔇 Additional comments (6)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
1-142
: Тесты покрывают основные сценарииМодуль содержит хорошее покрытие различных сценариев выполнения тестов:
- Успешное выполнение
- Ошибка в проверке
- Сломанный тест
Это обеспечивает надежную проверку функциональности выполнения тестов из внешних обработок.
tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1)
3-3
: Обновление года в информации об авторских правахКорректное обновление диапазона лет в заголовке файла.
tools/local-test/scripts/test-by-ibcmd.sh (4)
18-29
: Корректная валидация путей установкиПроверки наличия установленных компонентов реализованы правильно, с понятными сообщениями об ошибках.
70-73
: Корректная конвертация исходниковЛогика конвертации реализована правильно, с хорошим разделением ответственности.
77-104
: Корректная настройка базы данных и расширенийПроцесс настройки базы данных и расширений реализован правильно:
- Понятное логирование действий
- Последовательное применение конфигураций
- Корректная настройка параметров безопасности
Line range hint
106-116
: Корректная конфигурация тестированияКонфигурация YAXUnit создана правильно, с четкими параметрами для отчетности и логирования.
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 54-54: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 55-55: Use "${var:?}" to ensure this never expands to /* .
(SC2115)
[warning] 61-61: SOURCES_HASH appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 63-63: projects appears unused. Verify use (or export if used externally).
(SC2034)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)
116-123
:⚠️ Potential issueУлучшить обработку ошибок при запуске тестов
Необходимо добавить проверку результатов выполнения команд для предотвращения молчаливых ошибок.
print_run "Запуск сервера" -$ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon -IBSRV_PID=$! +if ! $ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon; then + echo "Ошибка запуска сервера" >&2 + exit 1 +fi +IBSRV_PID=$! echo "IBSRV PID=$IBSRV_PID" print_run "Запуск тестирования" -$ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage +if ! $ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage; then + kill $IBSRV_PID + echo "Ошибка выполнения тестов" >&2 + exit 1 +fi
🧹 Nitpick comments (4)
tools/local-test/scripts/test-by-ibcmd.sh (3)
3-3
: Улучшить определение SCRIPTPATHТекущая реализация может маскировать ошибки выполнения команд. Рекомендуется разделить объявление и присваивание:
-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +export SCRIPTPATH +cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1 +SCRIPTPATH="$(pwd -P)"🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
31-34
: Улучшить определение путейРекомендуется разделить объявление и присваивание переменных для предотвращения маскировки ошибок:
-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath) -export ROOT_PATH=$(realpath $SCRIPTPATH/../../../) -export STEPS_PATH=$(realpath $SCRIPTPATH/steps) -export LIB_PATH=$(realpath $SCRIPTPATH/lib) +export WORK_PATH ROOT_PATH STEPS_PATH LIB_PATH +WORK_PATH=$(realpath "$SCRIPTPATH/../workpath") +ROOT_PATH=$(realpath "$SCRIPTPATH/../../../") +STEPS_PATH=$(realpath "$SCRIPTPATH/steps") +LIB_PATH=$(realpath "$SCRIPTPATH/lib")🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
97-102
: Вынести настройку расширений в отдельную функциюПредлагается создать функцию для устранения дублирования кода при настройке расширений:
+configure_extension() { + local name=$1 + $ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=$name --safe-mode=no --unsafe-action-protection=no + print_state "Установка свойств расширения $name" +} -$ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=Smoke --safe-mode=no --unsafe-action-protection=no -print_state "Установка свойств расширения Smoke" -$ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=tests --safe-mode=no --unsafe-action-protection=no -print_state "Установка свойств расширения tests" -$ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=YAXUNIT --safe-mode=no --unsafe-action-protection=no -print_state "Установка свойств расширения YAXUNIT" +configure_extension "Smoke" +configure_extension "tests" +configure_extension "YAXUNIT"tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
3-3
: Скорректируйте год в заголовке лицензииУказан диапазон лет 2021-2025, но текущий год - 2024. Рекомендуется указать актуальный диапазон лет.
- Copyright 2021-2025 BIA-Technologies Limited Liability Company + Copyright 2021-2024 BIA-Technologies Limited Liability Company
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
.github/workflows/step-run-tests.yml
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(1 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)tools/local-test/scripts/test-it.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tools/local-test/scripts/test-it.sh
- tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: SonarQualityGate / Проверка Sonar
- GitHub Check: Конвертация исходников / Конвертация
🔇 Additional comments (4)
tools/local-test/scripts/test-by-ibcmd.sh (2)
53-55
: LGTM: Безопасная очистка директорийРеализована безопасная очистка директорий с использованием
:?
для предотвращения случайного удаления при пустых переменных.
Line range hint
104-114
: LGTM: Корректная генерация конфигурационного файлаКонфигурация корректно определяет формат отчета, пути к файлам и настройки логирования.
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)
108-140
: Улучшите обработку ошибок и управление ресурсамиВ функции
Обработка
отсутствует:
- Обработка ошибок для файловых операций
- Очистка временных файлов
- Вынесение текста обработки в отдельный шаблон
Для проверки использования временных файлов выполните:
#!/bin/bash # Поиск других мест очистки временных файлов rg -l "УдалитьФайлы|DeleteFiles" --type bsl
110-132
: Хорошая структура тестовых сценариевТестовые сценарии корректно охватывают различные случаи (успех, ошибка, сломанный тест) и используют правильные утверждения фреймворка ЮТест.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🔭 Outside diff range comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)
Line range hint
116-125
: Добавить обработку ошибок при запуске сервера и тестовРекомендуется добавить проверку успешности запуска сервера и выполнения тестов.
print_run "Запуск сервера" $ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon IBSRV_PID=$! +if ! ps -p $IBSRV_PID > /dev/null; then + >&2 echo "Ошибка запуска сервера" + exit 1 +fi echo "IBSRV PID=$IBSRV_PID" print_run "Запуск тестирования" $ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage +TEST_RESULT=$? print_state "Тестирование" kill $IBSRV_PID +exit $TEST_RESULT
♻️ Duplicate comments (1)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
35-46
: 🛠️ Refactor suggestionУстраните дублирование кода проверок
Блоки проверок в процедурах
ЗагрузитьТестыВременнойОбработки
иИсполняемыеСценарииВременнойОбработки
идентичны. Рекомендуется вынести общую логику проверок в отдельную приватную функцию.Also applies to: 54-65
🧹 Nitpick comments (5)
tools/local-test/scripts/test-by-ibcmd.sh (4)
3-3
: Улучшить обработку ошибок при определении пути скриптаТекущая реализация может пропустить ошибки команды
cd
. Рекомендуется добавить проверку возврата.-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +export SCRIPTPATH +cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1 +SCRIPTPATH="$(pwd -P)"🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
31-34
: Улучшить обработку ошибок при определении путейТекущая реализация может маскировать ошибки команды realpath. Рекомендуется разделить объявление и присваивание.
-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath) -export ROOT_PATH=$(realpath $SCRIPTPATH/../../../) -export STEPS_PATH=$(realpath $SCRIPTPATH/steps) -export LIB_PATH=$(realpath $SCRIPTPATH/lib) +export WORK_PATH +export ROOT_PATH +export STEPS_PATH +export LIB_PATH +WORK_PATH=$(realpath "$SCRIPTPATH/../workpath") || exit 1 +ROOT_PATH=$(realpath "$SCRIPTPATH/../../../") || exit 1 +STEPS_PATH=$(realpath "$SCRIPTPATH/steps") || exit 1 +LIB_PATH=$(realpath "$SCRIPTPATH/lib") || exit 1🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
61-71
: Оптимизировать обработку расширенийРекомендуется вынести повторяющиеся операции с расширениями в отдельную функцию для улучшения поддерживаемости кода.
+process_source() { + local key=$1 + local path=$2 + $STEPS_PATH/clean-outdated.sh "$key" "$path" + $STEPS_PATH/convert-to-xml.sh "$key" "$path" +} declare -A SOURCE_PATHS=( ["yaxunit"]="exts/yaxunit" ["smoke"]="exts/smoke" ["tests"]="tests" ["configuration"]="fixtures/demo-configuration") echo "=========== Анализ исходников и конвертация ===========" for key in "${!SOURCE_PATHS[@]}"; do - $STEPS_PATH/clean-outdated.sh $key ${SOURCE_PATHS[$key]} -done - -echo "=========== Конвертация исходников ===========" -for key in "${!SOURCE_PATHS[@]}"; do - $STEPS_PATH/convert-to-xml.sh $key ${SOURCE_PATHS[$key]} + process_source "$key" "${SOURCE_PATHS[$key]}" done
Line range hint
1-125
: Общие рекомендации по улучшению структуры скриптаСкрипт выполняет все необходимые операции, но рекомендуется:
- Вынести повторяющиеся операции в функции
- Добавить обработку ошибок для всех критических операций
- Добавить функцию очистки (cleanup) для корректного завершения при ошибках
Могу помочь с реорганизацией скрипта в более модульную структуру. Хотите, чтобы я предложил полную реструктуризацию?
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
3-3
: Исправьте год в заголовке лицензииУказан некорректный диапазон лет в строке авторских прав. Год окончания (2025) находится в будущем.
- Copyright 2021-2025 BIA-Technologies Limited Liability Company + Copyright 2021-2024 BIA-Technologies Limited Liability Company
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
.github/workflows/step-run-tests.yml
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(1 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)tools/local-test/scripts/test-it.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- .github/workflows/step-run-tests.yml
- tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
- tools/local-test/scripts/test-it.sh
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: Конвертация исходников / Конвертация
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🔭 Outside diff range comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)
Line range hint
116-125
: Улучшить обработку процесса сервераНеобходимо обеспечить корректное завершение процесса сервера даже при ошибках выполнения тестов.
Предлагаю использовать trap для гарантированной очистки:
print_run "Запуск сервера" -$ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon -IBSRV_PID=$! +if ! $ONEC_PATH/ibsrv --db-path="$DB_PATH" --daemon; then + >&2 echo "Ошибка при запуске сервера" + exit 1 +fi +IBSRV_PID=$! + +cleanup() { + if [ -n "$IBSRV_PID" ]; then + kill "$IBSRV_PID" || true + fi +} +trap cleanup EXIT + echo "IBSRV PID=$IBSRV_PID" print_run "Запуск тестирования" -$ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage +if ! $ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage; then + >&2 echo "Ошибка при выполнении тестов" + exit 1 +fi print_state "Тестирование" -kill $IBSRV_PID
🧹 Nitpick comments (5)
.github/workflows/step-run-tests.yml (1)
65-65
: Удалите пробелы в конце строки.Обнаружены лишние пробелы в конце строки 65.
🧰 Tools
🪛 yamllint (1.35.1)
[error] 65-65: trailing spaces
(trailing-spaces)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)
21-29
: Добавьте обработку ошибок транзакцииРекомендуется добавить обработку ошибок при работе с транзакцией.
Процедура ИсполняемыеСценарии() Экспорт + Попытка ЮТТесты.ВТранзакции(Ложь) .ДобавитьТест("ЗагрузитьТестыВременнойОбработки") .ДобавитьТест("ИсполняемыеСценарииВременнойОбработки") .ДобавитьТест("ВыполнитьТестыВременнойОбработки") ; + Исключение + ЗаписьЖурналаРегистрации("ОшибкаДобавленияТестов", + УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; + КонецПопытки КонецПроцедуры
121-131
: Улучшите документацию и используйте константыТестовые методы требуют:
- Добавления документации с описанием назначения каждого теста
- Выноса тестовых значений в константы для лучшей поддерживаемости
+// Проверяет корректность сравнения равных значений Процедура ТестУспешно() Экспорт - ЮТест.ОжидаетЧто(1).Равно(1); + Перем ОжидаемоеЗначение = 1; + ЮТест.ОжидаетЧто(ОжидаемоеЗначение).Равно(ОжидаемоеЗначение); КонецПроцедуры +// Проверяет корректность обработки ошибки при неравных значениях Процедура ТестОшибка() Экспорт - ЮТест.ОжидаетЧто(1).Равно(2); + Перем ФактическоеЗначение = 1; + Перем ОжидаемоеЗначение = 2; + ЮТест.ОжидаетЧто(ФактическоеЗначение).Равно(ОжидаемоеЗначение); КонецПроцедурыtools/local-test/scripts/test-by-ibcmd.sh (2)
1-15
: Улучшить обработку ошибок при инициализации скриптаТекущая реализация может привести к скрытым ошибкам при определении пути к скрипту.
Предлагаю следующие улучшения:
#!/bin/bash -export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +SCRIPTPATH="" +if ! SCRIPTPATH="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 && pwd -P)"; then + >&2 echo "Ошибка при определении пути к скрипту" + exit 1 +fi +export SCRIPTPATH -source $SCRIPTPATH/../.env +if ! source "$SCRIPTPATH/../.env"; then + >&2 echo "Ошибка при загрузке файла .env" + exit 1 +fi🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
18-29
: Расширить информативность сообщений об ошибкахТекущие сообщения об ошибках можно сделать более информативными для упрощения диагностики проблем.
Предлагаю дополнить сообщения версиями компонентов:
if [[ ! -d "${EDT_PATH}" ]]; then - >&2 echo "Не найдена инсталяция ${EDT_PATH}" + >&2 echo "Не найдена инсталяция EDT версии ${EDT_VERSION} по пути ${EDT_PATH}" exit 1 fi if [[ ! -d "$ONEC_PATH" ]]; then - >&2 echo "Не найдена инсталяция ${ONEC_PATH}" + >&2 echo "Не найдена инсталяция 1C:Предприятия версии ${ONEC_VERSION} по пути ${ONEC_PATH}" exit 1 fi
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
.github/workflows/step-run-tests.yml
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(1 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)tools/local-test/scripts/test-it.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tools/local-test/scripts/test-it.sh
- tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml
62-62: shellcheck reported issue in this script: SC1001:info:1:24: This \1 will be a regular '1' in this context
(shellcheck)
62-62: shellcheck reported issue in this script: SC1001:info:1:27: This \1 will be a regular '1' in this context
(shellcheck)
62-62: shellcheck reported issue in this script: SC1001:info:1:32: This \c will be a regular 'c' in this context
(shellcheck)
62-62: shellcheck reported issue in this script: SC1001:info:2:54: This \1 will be a regular '1' in this context
(shellcheck)
62-62: shellcheck reported issue in this script: SC1001:info:2:57: This \1 will be a regular '1' in this context
(shellcheck)
62-62: shellcheck reported issue in this script: SC1001:info:2:62: This \c will be a regular 'c' in this context
(shellcheck)
62-62: shellcheck reported issue in this script: SC1001:info:2:67: This \c will be a regular 'c' in this context
(shellcheck)
🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml
[error] 65-65: trailing spaces
(trailing-spaces)
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
🔇 Additional comments (6)
.github/workflows/step-run-tests.yml (1)
58-59
: Проверьте безопасность отключения защиты небезопасных действий.Отключение защиты через
DisableUnsafeActionProtection=.*
может создать уязвимости безопасности. Рекомендуется:
- Документировать причину отключения защиты
- Рассмотреть возможность использования более строгого шаблона вместо
.*
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (4)
1-17
: Корректная лицензия и структура файлаФайл содержит правильно оформленную лицензию Apache 2.0 и корректную структуру областей.
89-89
: Некорректный порядок вызова событияСобытие
ПередКаждымТестом
вызывается после выполнения тестов, что противоречит его назначению. Рекомендуется перенести вызов события перед выполнением тестов.
78-78
: Добавьте обработку ошибокВызов
ВыполнитьГруппуНаборовТестов
может завершиться с ошибкой. Рекомендуется добавить обработку исключений.
134-138
: Добавьте очистку временных файловПосле компиляции и подключения внешней обработки, временный файл не удаляется. Это может привести к накоплению временных файлов в системе.
tools/local-test/scripts/test-by-ibcmd.sh (1)
57-71
: Добавить проверку результатов конвертации исходниковОтсутствует проверка результатов выполнения скриптов конвертации.
Предлагаю добавить проверку результатов:
echo "=========== Конвертация исходников ===========" for key in "${!SOURCE_PATHS[@]}"; do - $STEPS_PATH/convert-to-xml.sh $key ${SOURCE_PATHS[$key]} + if ! $STEPS_PATH/convert-to-xml.sh "$key" "${SOURCE_PATHS[$key]}"; then + >&2 echo "Ошибка при конвертации ${SOURCE_PATHS[$key]}" + exit 1 + fi done✅ Verification successful
Подтверждаю необходимость проверки результатов конвертации
Анализ скрипта
convert-to-xml.sh
показал, что команда конвертации через1cedtcli
выполняется без проверки кода возврата. Ошибки записываются только в лог-файл, но не обрабатываются. Предложенное решение корректно обработает ошибки конвертации и предотвратит продолжение выполнения с некорректными данными.🏁 Scripts executed
The following scripts were executed for the analysis:
Error: No shell scripts found
Script:
#!/bin/bash # Find and show content of the conversion scripts echo "=== Searching for convert-to-xml.sh ===" fd "convert-to-xml.sh" --type f --exec cat {} echo -e "\n=== Searching for clean-outdated.sh ===" fd "clean-outdated.sh" --type f --exec cat {}Length of output: 1448
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (7)
.github/workflows/step-run-tests.yml (1)
67-67
: Удалите лишние пробелы в конце строкиВ строке 67 содержатся лишние пробелы в конце строки.
🧰 Tools
🪛 yamllint (1.35.1)
[error] 67-67: trailing spaces
(trailing-spaces)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)
3-3
: Скорректируйте диапазон лет в заголовке лицензииДиапазон лет в заголовке лицензии включает будущий год (2025). Рекомендуется указать текущий год или диапазон до текущего года.
- Copyright 2021-2025 BIA-Technologies Limited Liability Company + Copyright 2021-2024 BIA-Technologies Limited Liability Company
33-46
: Устраните дублирование кода валидацииКод валидации в процедурах
ЗагрузитьТестыВременнойОбработки
иИсполняемыеСценарииВременнойОбработки
полностью идентичен. Рекомендуется вынести проверки в отдельную функцию.+Функция ПроверитьСценарии(Сценарии) + Возврат ЮТест.ОжидаетЧто(Сценарии) + .Заполнено() + .Свойство("Метаданные").Заполнено() + .Свойство("Метаданные.Сервер").ЭтоИстина() + .Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь() + .Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь() + .Свойство("НаборыТестов").Заполнено() + .Свойство("НаборыТестов[0].Тесты").Заполнено() + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно") + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка") + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан") + ; +КонецФункцииAlso applies to: 52-65
tools/local-test/scripts/test-by-ibcmd.sh (4)
3-3
: Улучшить определение SCRIPTPATHТекущая реализация может маскировать ошибки выполнения команд. Рекомендуется разделить объявление и присваивание:
-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +SCRIPTPATH="" +cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1 +SCRIPTPATH="$(pwd -P)" +export SCRIPTPATH🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
18-29
: Использовать кавычки последовательноРекомендуется использовать кавычки для всех переменных окружения для единообразия:
-export EDT_PATH=/opt/1C/1CE/components/1c-edt-$EDT_VERSION-x86_64 -export ONEC_PATH=/opt/1cv8/x86_64/$ONEC_VERSION +export EDT_PATH="/opt/1C/1CE/components/1c-edt-${EDT_VERSION}-x86_64" +export ONEC_PATH="/opt/1cv8/x86_64/${ONEC_VERSION}"
57-59
: Улучшить создание конфигурационного файлаРекомендуется использовать переменную для пути к файлу конфигурации и проверить успешность создания:
-cat >~/.1cv8/1C/1cv8/conf/conf.cfg <<EOL +CONFIG_DIR="${HOME}/.1cv8/1C/1cv8/conf" +mkdir -p "$CONFIG_DIR" || { >&2 echo "Ошибка создания директории конфигурации"; exit 1; } +cat >"${CONFIG_DIR}/conf.cfg" <<EOL DisableUnsafeActionProtection=.* EOL
Line range hint
103-115
: Проверить валидность JSON конфигурацииРекомендуется добавить проверку созданного JSON файла:
+CONFIG_FILE="$WORK_PATH/yaxunit-config.json" cat >$WORK_PATH/yaxunit-config.json <<EOL { "reportFormat": "jUnit", "reportPath": "$WORK_PATH/report.xml", "closeAfterTests": true, "exitCode": "$WORK_PATH/exit-code.txt", "logging": { "console": true } } EOL + +# Проверка валидности JSON +if ! jq empty "$CONFIG_FILE" >/dev/null 2>&1; then + >&2 echo "Ошибка в файле конфигурации JSON" + exit 1 +fi🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
.github/workflows/step-run-tests.yml
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(1 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)tools/local-test/scripts/test-it.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tools/local-test/scripts/test-it.sh
- tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml
64-64: shellcheck reported issue in this script: SC1001:info:1:24: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:1:27: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:1:32: This \c will be a regular 'c' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:54: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:57: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:62: This \c will be a regular 'c' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:67: This \c will be a regular 'c' in this context
(shellcheck)
🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml
[error] 67-67: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: Конвертация исходников / Конвертация
🔇 Additional comments (5)
.github/workflows/step-run-tests.yml (2)
58-61
: Добавьте документацию о последствиях отключения защитыОтключение
DisableUnsafeActionProtection
может иметь последствия для безопасности. Рекомендуется:
- Добавить комментарий, объясняющий необходимость отключения этой защиты
- Документировать потенциальные риски
65-66
: Используйте двойные кавычки для путей WindowsСоздание директории через
mkdir -p
может завершиться с ошибкой, если в пути%LOCALAPPDATA%
содержатся пробелы. Рекомендуется:- mkdir -p %LOCALAPPDATA%\1C\1cv8\conf + mkdir -p "%LOCALAPPDATA%\1C\1cv8\conf" - echo DisableUnsafeActionProtection=.*> %LOCALAPPDATA%\1C\1cv8\conf\conf.cfg + echo DisableUnsafeActionProtection=.*> "%LOCALAPPDATA%\1C\1cv8\conf\conf.cfg"tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (3)
78-78
: Добавьте обработку ошибокВызов
ВыполнитьГруппуНаборовТестов
может завершиться с ошибкой. Рекомендуется добавить обработку исключений.
89-89
: Некорректный порядок вызова событияСобытие
ПередКаждымТестом
вызывается после выполнения тестов, что противоречит его назначению. Рекомендуется перенести вызов события перед выполнением тестов.
134-138
: Добавьте очистку временных файловПосле компиляции и подключения внешней обработки, временный файл не удаляется. Это может привести к накоплению временных файлов в системе.
There was a problem hiding this 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
🔭 Outside diff range comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)
Line range hint
104-114
: Добавить проверку создания конфигурационного файлаНеобходимо проверить успешность создания файла конфигурации тестов.
+CONFIG_FILE="$WORK_PATH/yaxunit-config.json" +if ! cat >"$CONFIG_FILE" <<EOL { "reportFormat": "jUnit", "reportPath": "$WORK_PATH/report.xml", "closeAfterTests": true, "exitCode": "$WORK_PATH/exit-code.txt", "logging": { "console": true } } EOL +then + >&2 echo "Ошибка при создании файла конфигурации: $CONFIG_FILE" + exit 1 +fi🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
♻️ Duplicate comments (1)
.github/workflows/step-run-tests.yml (1)
65-66
:⚠️ Potential issueИспользуйте двойные кавычки для путей Windows
Создание директории через
mkdir -p
может завершиться с ошибкой, если в пути%LOCALAPPDATA%
содержатся пробелы.Примените следующие изменения:
- mkdir -p %LOCALAPPDATA%\1C\1cv8\conf + mkdir -p "%LOCALAPPDATA%\1C\1cv8\conf" - "DisableUnsafeActionProtection=.*" | Out-File -FilePath %LOCALAPPDATA%\1C\1cv8\conf\conf.cfg -Encoding UTF8 + "DisableUnsafeActionProtection=.*" | Out-File -FilePath "%LOCALAPPDATA%\1C\1cv8\conf\conf.cfg" -Encoding UTF8
🧹 Nitpick comments (5)
.github/workflows/step-run-tests.yml (1)
67-67
: Удалите лишние пробелы в конце строкиОбнаружены лишние пробелы в конце строки 67.
🧰 Tools
🪛 yamllint (1.35.1)
[error] 67-67: trailing spaces
(trailing-spaces)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)
35-46
: Добавьте проверку на пустые значенияПеред проверкой свойств объекта
Сценарии
рекомендуется добавить базовые проверки на неопределенность и пустые значения.+ЮТест.ОжидаетЧто(Сценарии).Существует(); +ЮТест.ОжидаетЧто(Сценарии.НаборыТестов).Существует(); +ЮТест.ОжидаетЧто(Сценарии.НаборыТестов.Количество()).БольшеНуля(); ЮТест.ОжидаетЧто(Сценарии) .Заполнено() .Свойство("Метаданные").Заполнено()
110-132
: Используйте форматированную строкуДля улучшения читаемости и поддерживаемости кода рекомендуется использовать форматированную строку вместо конкатенации.
- Текст = - "Процедура ИсполняемыеСценарии() Экспорт - | - | ЮТТесты - | .ДобавитьТест(""ТестУспешно"") - | .ДобавитьТест(""ТестОшибка"")" + ... ; + Текст = + ФорматированнаяСтрока( + "Процедура ИсполняемыеСценарии() Экспорт + | + | ЮТТесты + | .ДобавитьТест(""%1"") + | .ДобавитьТест(""%2"") + | .ДобавитьТест(""%3"") + | ; + | + |КонецПроцедуры", + "ТестУспешно", + "ТестОшибка", + "ТестСломан");tools/local-test/scripts/test-by-ibcmd.sh (2)
7-15
: Улучшить проверку переменных окруженияРекомендуется добавить проверку корректности значений переменных окружения, а не только их наличия.
if [[ -z "${EDT_VERSION}" ]]; then >&2 echo 'Не установлена переменная $EDT_VERSION' exit 1 +elif ! [[ "${EDT_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + >&2 echo "Некорректный формат версии EDT: ${EDT_VERSION}" + exit 1 fi if [[ -z "$ONEC_VERSION" ]]; then >&2 echo 'Не установлена переменная $ONEC_VERSION' exit 1 +elif ! [[ "${ONEC_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + >&2 echo "Некорректный формат версии 1C: ${ONEC_VERSION}" + exit 1 fi
21-29
: Улучшить проверку инсталляцийРекомендуется добавить проверку наличия необходимых исполняемых файлов.
if [[ ! -d "${EDT_PATH}" ]]; then >&2 echo "Не найдена инсталяция ${EDT_PATH}" exit 1 +elif [[ ! -x "${EDT_PATH}/ring" ]]; then + >&2 echo "Не найден исполняемый файл ring в ${EDT_PATH}" + exit 1 fi if [[ ! -d "$ONEC_PATH" ]]; then >&2 echo "Не найдена инсталяция ${ONEC_PATH}" exit 1 +elif [[ ! -x "${ONEC_PATH}/ibcmd" ]] || [[ ! -x "${ONEC_PATH}/1cv8c" ]]; then + >&2 echo "Не найдены необходимые исполняемые файлы в ${ONEC_PATH}" + exit 1 fi
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
.github/workflows/step-run-tests.yml
(1 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(1 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)tools/local-test/scripts/test-it.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- tools/local-test/scripts/test-it.sh
- tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml
64-64: shellcheck reported issue in this script: SC1001:info:1:24: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:1:27: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:1:32: This \c will be a regular 'c' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:71: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:74: This \1 will be a regular '1' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:79: This \c will be a regular 'c' in this context
(shellcheck)
64-64: shellcheck reported issue in this script: SC1001:info:2:84: This \c will be a regular 'c' in this context
(shellcheck)
🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml
[error] 67-67: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms (7)
- GitHub Check: Тест (8.3.21.1895, ru_RU, ubuntu-22.04) / Тестирование
- GitHub Check: Тест (8.3.21.1895, ru_RU, windows-latest) / Тестирование
- GitHub Check: Тест (8.3.21.1895, en_US, ubuntu-22.04) / Тестирование
- GitHub Check: Тест (8.3.21.1895, en_US, ubuntu-22.04) / Тестирование
- GitHub Check: Тест (8.3.21.1895, ru_RU, ubuntu-22.04) / Тестирование
- GitHub Check: Тест (8.3.21.1895, ru_RU, windows-latest) / Тестирование
- GitHub Check: Тест (8.3.21.1895, en_US, windows-latest) / Тестирование
🔇 Additional comments (11)
.github/workflows/step-run-tests.yml (1)
58-61
: Добавьте документацию о последствиях отключения защитыОтключение
DisableUnsafeActionProtection
может иметь последствия для безопасности. Рекомендуется:
- Добавить комментарий, объясняющий необходимость отключения этой защиты
- Документировать потенциальные риски
- Рассмотреть возможность более избирательного подхода к настройкам безопасности
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (4)
1-17
: Корректная структура файла и лицензияФайл имеет правильную структуру и содержит актуальную лицензию Apache 2.0.
78-78
: Добавьте обработку ошибокВызов
ВыполнитьГруппуНаборовТестов
может завершиться с ошибкой. Рекомендуется добавить обработку исключений.
89-89
: Некорректный порядок вызова событияСобытие
ПередКаждымТестом
вызывается после выполнения тестов, что противоречит его назначению.
134-138
: Добавьте очистку временных файловПосле компиляции и подключения внешней обработки, временный файл не удаляется.
tools/local-test/scripts/test-by-ibcmd.sh (6)
5-5
: Добавить проверку наличия файла .envНеобходимо проверить существование файла перед его подключением.
31-34
: Улучшить обработку результатов realpathТекущая реализация не проверяет успешность получения путей.
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
64-71
: Добавить обработку ошибок в циклахНеобходимо добавить проверку результатов выполнения скриптов.
75-102
: Добавить проверку результатов операций с информационной базойОтсутствует проверка результатов выполнения команд ibcmd.
116-124
: Улучшить обработку процесса сервераРекомендуется добавить проверку запуска сервера и обработку сигналов.
45-56
: 🛠️ Refactor suggestionУлучшить обработку операций с директориями
Необходимо добавить проверку результатов создания директорий и безопасную очистку.
+cleanup_dir() { + local dir="$1" + if [[ -d "$dir" ]]; then + if ! rm -rf "${dir:?}/"*; then + >&2 echo "Ошибка при очистке директории: $dir" + return 1 + fi + fi +} +for dir in "$LOGS_PATH" "$DB_PATH" "$EXPORT_PATH" "$BINARY_PATH" "$TMP_PATH" "$RESULT_PATH"; do + if ! mkdir -p "$dir"; then + >&2 echo "Ошибка при создании директории: $dir" + exit 1 + fi +done +if ! cleanup_dir "$TMP_PATH" || \ + ! cleanup_dir "$RESULT_PATH" || \ + ! cleanup_dir "$LOGS_PATH"; then + exit 1 +fiLikely invalid or redundant comment.
There was a problem hiding this 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 (3)
exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (1)
180-185
: 🛠️ Refactor suggestionНеобходимо вынести магическое число в именованную константу
Значение отступа (4) следует объявить как именованную константу в начале модуля для улучшения читаемости и обслуживаемости кода.
Пример:
+#Область ПрограммныеКонстанты +Перем КоличествоСимволовОтступа Экспорт; +КоличествоСимволовОтступа = 4; +#КонецОбласти Функция Отступ(Уровень) - КоличествоПробелов = 4; - Возврат ЮТСтроки.СтрокаСимволов(" ", Уровень * КоличествоПробелов); + Возврат ЮТСтроки.СтрокаСимволов(" ", Уровень * КоличествоСимволовОтступа);tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)
89-89
:⚠️ Potential issueНекорректный порядок вызова события.
Событие
ПередКаждымТестом
вызывается после выполнения тестов.exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)
381-381
:⚠️ Potential issueНе рекомендуется использовать метод ПолучитьФорму.
Использование метода
ПолучитьФорму
может привести к проблемам производительности и утечкам памяти.Рекомендуется использовать альтернативный подход:
- Возврат ПолучитьФорму(СтрШаблон("ВнешняяОбработка.%1.Форма", ОписаниеТестовогоОбъекта.Метаданные.Имя)); + Возврат ВнешниеОбработки.Создать(ОписаниеТестовогоОбъекта.Метаданные.Имя);
🧹 Nitpick comments (3)
exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (1)
105-148
: Функция корректно обрабатывает различные типы данныхЛогика обработки типов реализована правильно. Рекомендации по улучшению:
- Добавить документацию функции с описанием параметров и возвращаемого значения
- Рассмотреть добавление обработки типа УникальныйИдентификатор
tools/local-test/scripts/test-by-ibcmd.sh (2)
7-15
: Улучшить проверку переменных окруженияРекомендуется объединить проверки переменных окружения в одну функцию для лучшей поддерживаемости:
+check_env_var() { + local var_name="$1" + if [[ -z "${!var_name}" ]]; then + >&2 echo "Не установлена переменная $var_name" + exit 1 + fi +} + +for var in EDT_VERSION ONEC_VERSION; do + check_env_var "$var" +done -if [[ -z "${EDT_VERSION}" ]]; then - >&2 echo 'Не установлена переменная $EDT_VERSION' - exit 1 -fi - -if [[ -z "$ONEC_VERSION" ]]; then - >&2 echo 'Не установлена переменная $ONEC_VERSION' - exit 1 -fi
18-29
: Улучшить проверку путей установкиРекомендуется создать функцию для проверки путей установки:
+check_installation_path() { + local path="$1" + local description="$2" + if [[ ! -d "$path" ]]; then + >&2 echo "Не найдена инсталяция: $description ($path)" + exit 1 + fi +} + +check_installation_path "$EDT_PATH" "EDT" +check_installation_path "$ONEC_PATH" "1C:Предприятие" -if [[ ! -d "${EDT_PATH}" ]]; then - >&2 echo "Не найдена инсталяция ${EDT_PATH}" - exit 1 -fi - -if [[ ! -d "$ONEC_PATH" ]]; then - >&2 echo "Не найдена инсталяция ${ONEC_PATH}" - exit 1 -fi
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
.github/workflows/step-run-tests.yml
(1 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl
(8 hunks)exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
(5 hunks)tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl
(1 hunks)tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
(2 hunks)tools/local-test/scripts/test-by-ibcmd.sh
(2 hunks)tools/local-test/scripts/test-it.sh
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- tools/local-test/scripts/test-it.sh
- tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh
[warning] 3-3: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml
64-64: shellcheck reported issue in this script: SC2016:info:2:1: Expressions don't expand in single quotes, use double quotes for that
(shellcheck)
🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml
[error] 67-67: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: Конвертация исходников / Конвертация
- GitHub Check: Конвертация исходников / Конвертация
🔇 Additional comments (14)
exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (2)
3-3
: Корректное обновление года в уведомлении об авторских правахОбновление диапазона лет с 2021-2025 соответствует текущему году.
154-178
: Корректная реализация вспомогательных функцийФункции ПредставлениеСтруктуры и ПредставлениеМассива реализованы логично и последовательно. Рекурсивные вызовы и форматирование обрабатываются правильно.
tools/local-test/scripts/test-by-ibcmd.sh (6)
5-5
: Добавить проверку наличия файла .env
45-56
: Добавить проверку результатов создания директорий
64-71
: Добавить обработку ошибок в циклах
75-102
: Добавить проверку результатов операций с информационной базой
116-124
: Улучшить обработку процесса сервера
31-34
:⚠️ Potential issueИсправить маскировку кодов возврата при экспорте путей
Необходимо разделить объявление и присваивание переменных:
-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath) -export ROOT_PATH=$(realpath $SCRIPTPATH/../../../) -export STEPS_PATH=$(realpath $SCRIPTPATH/steps) -export LIB_PATH=$(realpath $SCRIPTPATH/lib) +WORK_PATH="" +ROOT_PATH="" +STEPS_PATH="" +LIB_PATH="" + +if ! WORK_PATH=$(realpath "$SCRIPTPATH/../workpath"); then + >&2 echo "Ошибка при определении WORK_PATH" + exit 1 +fi +if ! ROOT_PATH=$(realpath "$SCRIPTPATH/../../../"); then + >&2 echo "Ошибка при определении ROOT_PATH" + exit 1 +fi +if ! STEPS_PATH=$(realpath "$SCRIPTPATH/steps"); then + >&2 echo "Ошибка при определении STEPS_PATH" + exit 1 +fi +if ! LIB_PATH=$(realpath "$SCRIPTPATH/lib"); then + >&2 echo "Ошибка при определении LIB_PATH" + exit 1 +fi + +export WORK_PATH ROOT_PATH STEPS_PATH LIB_PATHLikely invalid or redundant comment.
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 31-31: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 32-32: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 33-33: Declare and assign separately to avoid masking return values.
(SC2155)
[warning] 34-34: Declare and assign separately to avoid masking return values.
(SC2155)
.github/workflows/step-run-tests.yml (2)
58-61
: LGTM!Корректная настройка конфигурации для Linux.
65-66
:⚠️ Potential issueИспользуйте двойные кавычки для путей Windows и улучшите форматирование PowerShell.
Текущая реализация может привести к ошибкам при наличии пробелов в путях.
Примените следующие изменения:
- mkdir -p "C:\Program Files\1cv8\conf" - 'DisableUnsafeActionProtection=.*`r`n' | Out-File -FilePath "C:\Program Files\1cv8\conf\conf.cfg" -Encoding utf8 -Append + New-Item -Path """C:\Program Files\1cv8\conf""" -ItemType Directory -Force + Set-Content -Path """C:\Program Files\1cv8\conf\conf.cfg""" -Value "DisableUnsafeActionProtection=.*" -Encoding UTF8Likely invalid or redundant comment.
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (3)
21-29
: LGTM!Корректная реализация основной процедуры с использованием транзакций.
31-48
: LGTM!Процедура корректно проверяет наличие и валидность тестов.
69-91
:⚠️ Potential issueДобавьте обработку ошибок при выполнении тестов.
Выполнение тестов может завершиться с ошибкой, но обработка исключений отсутствует.
Примените следующие изменения:
Процедура ВыполнитьТестыВременнойОбработки() Экспорт ТестовыйМодуль = ЮТест.ОписаниеТекущегоТестовогоМодуля(); Набор = ЮТест.ОписаниеТекущегоТестовогоНабора(); Тест = ЮТест.ОписаниеТекущегоТеста(); Сценарии = СценарииОбработки(); ИсполняемыеСценарии = ЮТИсполнительСлужебныйКлиентСервер.ИсполняемыйТестовыйМодуль(Сценарии); СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); + Попытка Результат = ЮТИсполнительСлужебныйКлиентСервер.ВыполнитьГруппуНаборовТестов( ИсполняемыеСценарии.НаборыТестов, ИсполняемыеСценарии ); + Исключение + ЮТЛогирование.Ошибка(ОписаниеОшибки()); + ВызватьИсключение; + КонецПопытки;Likely invalid or redundant comment.
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)
59-108
: 🛠️ Refactor suggestionУменьшите когнитивную сложность функции.
Функция
ИсполняемыеНаборыМодуля
имеет высокую когнитивную сложность (21), что затрудняет понимание и поддержку кода.Рекомендуется разделить функцию на более мелкие:
- Создание набора для контекста
- Обработка тестов набора
- Формирование результата
Пример рефакторинга:
+Функция СоздатьНаборДляКонтекста(ТестовыйНабор, Контекст) + ИсполняемыйНабор = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоНабораТестов(ТестовыйНабор); + ИсполняемыйНабор.Режим = Контекст; + Возврат ИсполняемыйНабор; +КонецФункции + +Процедура ОбработатьТестНабора(Тест, ИсполняемыйНабор, ТестовыйМодуль) + ИсполняемыйТест = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТеста(Тест, ИсполняемыйНабор.Режим, ТестовыйМодуль); + + Если Тест.Свойство("Ошибки") И Тест.Ошибки.Количество() > 0 Тогда + ИсполняемыйТест.Ошибки = ЮТКоллекции.СкопироватьМассив(Тест.Ошибки); + ИсполняемыйТест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); + ИсполняемыйТест.Длительность = 0; + КонецЕсли; + + ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест); +КонецПроцедурыLikely invalid or redundant comment.
Описание изменений
Close #467
Summary by CodeRabbit
ИсполняемыеСценарии
,ЗагрузитьТестыВременнойОбработки
,ИсполняемыеСценарииВременнойОбработки
,ВыполнитьТестыВременнойОбработки
.МетаданныеОбработки
для получения метаданных обработки модулей.СобратьОбработку
, теперь возвращает имя создаваемого файла.ПослеИнициализации
для обработки событий.