-
Notifications
You must be signed in to change notification settings - Fork 7
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
Добавлены тесты YaxUnit и Vanessa #51
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Сейчас дженкинс-либ дымовые тесты прогнал вместе с расширением яксюнита, что привело к ошибкам в сборке. По шагу БДД пока дебажу. Сам шаг яксюнита отработал штатно, это супер |
Warning Rate Limit Exceeded@ivanmolodec has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 15 minutes and 58 seconds before requesting another review. How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. WalkthroughThe recent updates focus on enhancing testing frameworks by adding support for Changes
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 as PR comments)
Additionally, you can add CodeRabbit Configration 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.
Actionable comments posted: 11
Out of diff range and nitpick comments (11)
src/cfe/YAXUnit/CommonModules/ЮТКомпонентыСлужебныйКлиент/Ext/Module.bsl (3)
21-48
: Ensure proper error handling in theТихаяУстановкаКомпонент
procedure.While the procedure orchestrates several asynchronous handlers, it lacks explicit error handling mechanisms. Consider implementing try-catch blocks or equivalent error handling to manage exceptions that may occur during the execution of the handlers.
150-162
: Check for potential data races inТихаяУстановкаВнешнихКомпонент
.This procedure reads and writes to the registry file in a loop. Ensure that appropriate locking mechanisms are in place to prevent data races when accessing the file system.
164-187
: Ensure thread safety inПодключениеВнешнихКомпонент
.Given that this procedure modifies a shared data structure (
ПодключенныеКомпоненты
), confirm that thread safety measures such as mutexes or locks are used to prevent concurrent modification issues.src/cfe/YAXUnit/CommonModules/ЮТЗапросыСлужебныйВызовСервера/Ext/Module.bsl (2)
21-28
: Ensure proper error handling in theРезультатЗапроса
function.Consider adding error handling for the database query execution to manage exceptions or unexpected results gracefully.
111-132
: Consider adding type checks inЗначенияРеквизитовЗаписи
.The function assumes the type of
Запись
without validation. Adding type checks can prevent runtime errors and ensure the function handles different types correctly.src/cfe/YAXUnit/CommonModules/ЮТКоллекции/Ext/Module.bsl (2)
21-44
: Validate input parameters inЗначениеСтруктуры
.Add checks to ensure that
ИсходнаяСтруктура
is indeed a structure andИмяПоля
is a non-empty string to prevent runtime errors.
52-58
: Ensure thread safety inДополнитьСтруктуру
.If this code is used in a multi-threaded environment, ensure that the
Приемник
structure is accessed in a thread-safe manner to avoid potential data corruption.src/cfe/YAXUnit/CommonModules/ЮТИсполнительСлужебныйКлиент/Ext/Module.bsl (3)
21-38
: Ensure consistent naming for procedures and their functionalities.The procedure
ВыполнитьМодульноеТестирование
is named as if it performs module testing, but it primarily sets up a chain of handlers for different stages of the testing process. Consider renaming it to reflect its role in initializing the testing chain, such asИнициализироватьЦепочкуТестирования
.
40-52
: Ensure that procedures that are similar have consistent parameter handling.The procedure
ВыполнитьМодульноеТестированиеПоНастройке
should consistently handle its parameters likeВыполнитьМодульноеТестирование
. It currently does not useПараметрыЗапуска
directly but passes it to other handlers. Consider refactoring to improve consistency and clarity.
116-118
: Simplify error handling by using a more descriptive error message.The procedure
ОбработкаОшибки
uses a generic error message. Consider enhancing the error handling by including more context or specific error codes, which can help in debugging and maintenance.src/cfe/YAXUnit/CommonModules/МокитоСлужебный/Ext/Module.bsl (1)
532-536
: Consider implications of global state changes inИнициализироватьНастройки
.This procedure initializes global settings which might affect the application state broadly. Review the impact of this initialization on other parts of the application, especially in a multi-threaded environment.
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт | ||
|
||
ПрерватьВыполнение = Ложь; | ||
|
||
Если НЕ Включен() Тогда | ||
Возврат Неопределено; | ||
КонецЕсли; | ||
|
||
Настройки = Настройки(); | ||
|
||
Если НЕ ЗначениеЗаполнено(Настройки.Перехват) Или Настройки.ТипыПерехватываемыхОбъектов[ТипЗнч(Объект)] = Неопределено Тогда | ||
Возврат Неопределено; | ||
КонецЕсли; | ||
|
||
ПараметрыПерехвата = ДанныеПерехвата(Объект, Настройки); | ||
|
||
Если ПараметрыПерехвата = Неопределено Тогда | ||
Возврат Неопределено; | ||
КонецЕсли; | ||
|
||
РежимыРаботы = РежимыРаботы(); | ||
|
||
СтруктураВызоваМетода = СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыМетода); | ||
|
||
Если Настройки.Режим = РежимыРаботы.Обучение ИЛИ Настройки.Режим = РежимыРаботы.Проверка Тогда | ||
|
||
ПрерватьВыполнение = Истина; | ||
Возврат СтруктураВызоваМетода; | ||
|
||
ИначеЕсли Настройки.Режим = РежимыРаботы.Тестирование Тогда | ||
|
||
ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода); | ||
Возврат ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение); | ||
|
||
КонецЕсли; | ||
|
||
Возврат Неопределено; | ||
|
||
КонецФункции |
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.
Refactor АнализВызова
to improve readability and maintainability.
This function is complex and handles multiple conditions and scenarios. Consider breaking it down into smaller, more manageable functions or methods to improve readability and maintainability.
- Existing complex function code
+ Suggested refactored smaller functions
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт | |
ПрерватьВыполнение = Ложь; | |
Если НЕ Включен() Тогда | |
Возврат Неопределено; | |
КонецЕсли; | |
Настройки = Настройки(); | |
Если НЕ ЗначениеЗаполнено(Настройки.Перехват) Или Настройки.ТипыПерехватываемыхОбъектов[ТипЗнч(Объект)] = Неопределено Тогда | |
Возврат Неопределено; | |
КонецЕсли; | |
ПараметрыПерехвата = ДанныеПерехвата(Объект, Настройки); | |
Если ПараметрыПерехвата = Неопределено Тогда | |
Возврат Неопределено; | |
КонецЕсли; | |
РежимыРаботы = РежимыРаботы(); | |
СтруктураВызоваМетода = СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыМетода); | |
Если Настройки.Режим = РежимыРаботы.Обучение ИЛИ Настройки.Режим = РежимыРаботы.Проверка Тогда | |
ПрерватьВыполнение = Истина; | |
Возврат СтруктураВызоваМетода; | |
ИначеЕсли Настройки.Режим = РежимыРаботы.Тестирование Тогда | |
ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода); | |
Возврат ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение); | |
КонецЕсли; | |
Возврат Неопределено; | |
КонецФункции |
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.
@coderabbitai никогда не проверяй код в каталоге src/cfe/YAXUnit т.к. он является отдельным фреймворком
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.
@ivanmolodec, спасибо за уточнение. Я запомню это и больше не буду проверять код в каталоге src/cfe/YAXUnit
.
🤔
New Learnings Added
User: ivanmolodec
PR: firstBitSportivnaya/PSSL#51
File: src/cfe/YAXUnit/CommonModules/МокитоСлужебный/Ext/Module.bsl:81-119
Timestamp: 2024-04-24T11:24:56.162Z
Learning: Code in the directory `src/cfe/YAXUnit` is part of a separate framework and should not be reviewed.
Note: Learnings are effective only in the context of specific code segments. To apply general coding guidelines, please configure review instructions.
Функция ПроверитьПараметр(Параметр, Условие) Экспорт | ||
|
||
ТипыУсловий = ТипыУсловийПараметров(); | ||
Совпадает = Ложь; | ||
|
||
Если Условие.Режим = ТипыУсловий.Любой Тогда | ||
|
||
Совпадает = Истина; | ||
|
||
ИначеЕсли Условие.Режим = ТипыУсловий.Значение Тогда | ||
|
||
Совпадает = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Условие.Значение, Параметр); | ||
|
||
ИначеЕсли Условие.Режим = ТипыУсловий.Тип Тогда | ||
|
||
Совпадает = Условие.Тип = ТипЗнч(Параметр); | ||
|
||
ИначеЕсли Условие.Режим = ТипыУсловий.ОписаниеТипа Тогда | ||
|
||
Совпадает = Условие.Тип.СодержитТип(ТипЗнч(Параметр)); | ||
|
||
ИначеЕсли Условие.Режим = ТипыУсловий.Предикат Тогда | ||
|
||
Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат); | ||
Совпадает = Результат.Успешно; | ||
|
||
КонецЕсли; | ||
|
||
Возврат Совпадает; | ||
|
||
КонецФункции |
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.
Optimize ПроверитьПараметр
by reducing complexity.
This function has multiple conditional branches and performs various checks, which increases its complexity. Consider using a strategy pattern or similar to handle different types of conditions more cleanly and extensibly.
- Current complex conditional structure
+ Strategy pattern implementation
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Функция ПроверитьПараметр(Параметр, Условие) Экспорт | |
ТипыУсловий = ТипыУсловийПараметров(); | |
Совпадает = Ложь; | |
Если Условие.Режим = ТипыУсловий.Любой Тогда | |
Совпадает = Истина; | |
ИначеЕсли Условие.Режим = ТипыУсловий.Значение Тогда | |
Совпадает = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Условие.Значение, Параметр); | |
ИначеЕсли Условие.Режим = ТипыУсловий.Тип Тогда | |
Совпадает = Условие.Тип = ТипЗнч(Параметр); | |
ИначеЕсли Условие.Режим = ТипыУсловий.ОписаниеТипа Тогда | |
Совпадает = Условие.Тип.СодержитТип(ТипЗнч(Параметр)); | |
ИначеЕсли Условие.Режим = ТипыУсловий.Предикат Тогда | |
Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат); | |
Совпадает = Результат.Успешно; | |
КонецЕсли; | |
Возврат Совпадает; | |
КонецФункции | |
Функция ПроверитьПараметр(Параметр, Условие) Экспорт | |
ТипыУсловий = ТипыУсловийПараметров(); | |
Совпадает = Ложь; | |
# Strategy pattern implementation | |
Возврат Совпадает; | |
КонецФункции |
Функция ПараметрыИсполнения() Экспорт | ||
|
||
Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки(); | ||
Параметры.Вставить("АргументыЗапуска"); | ||
Параметры.Вставить("ПараметрыЗапуска"); | ||
Параметры.Вставить("ИсполняемыеТестовыеМодули"); | ||
Параметры.Вставить("РезультатыТестирования"); | ||
|
||
Возврат Параметры; | ||
|
||
КонецФункции |
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.
Optimize function by reducing redundant code.
The function ПараметрыИсполнения
initializes a new instance of ЦепочкаАсинхроннойОбработки
and inserts several keys. This can be optimized by creating a dedicated constructor or initializer in ЮТАсинхроннаяОбработкаСлужебныйКлиент
that sets these keys by default.
- Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
- Параметры.Вставить("АргументыЗапуска");
- Параметры.Вставить("ПараметрыЗапуска");
- Параметры.Вставить("ИсполняемыеТестовыеМодули");
- Параметры.Вставить("РезультатыТестирования");
+ Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.НоваяЦепочкаАсинхроннойОбработкиСПараметрами();
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Функция ПараметрыИсполнения() Экспорт | |
Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки(); | |
Параметры.Вставить("АргументыЗапуска"); | |
Параметры.Вставить("ПараметрыЗапуска"); | |
Параметры.Вставить("ИсполняемыеТестовыеМодули"); | |
Параметры.Вставить("РезультатыТестирования"); | |
Возврат Параметры; | |
КонецФункции | |
Функция ПараметрыИсполнения() Экспорт | |
Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.НоваяЦепочкаАсинхроннойОбработкиСПараметрами(); | |
Возврат Параметры; | |
КонецФункции |
Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт | ||
|
||
ЮТКонтекстСлужебный.ИнициализироватьКонтекст(); | ||
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings); | ||
// Повторно сохраним для передачи на сервер | ||
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения()); | ||
|
||
ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска); | ||
|
||
КонецПроцедуры |
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.
Refactor initialization procedure to reduce redundancy.
The procedure ВыполнитьИнициализацию
redundantly sets global settings twice. This could be streamlined to improve performance and reduce potential for errors.
- ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings);
- ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения());
+ ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings);
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт | |
ЮТКонтекстСлужебный.ИнициализироватьКонтекст(); | |
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings); | |
// Повторно сохраним для передачи на сервер | |
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения()); | |
ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска); | |
КонецПроцедуры | |
Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт | |
ЮТКонтекстСлужебный.ИнициализироватьКонтекст(); | |
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings); | |
ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска); | |
КонецПроцедуры |
Функция ПараметрыТихойУстановки() | ||
|
||
ПараметрыТихойУстановки = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки(); | ||
ПараметрыТихойУстановки.Вставить("Компоненты", Новый Массив()); | ||
ПараметрыТихойУстановки.Вставить("РабочийКаталог", ""); | ||
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", ""); | ||
ПараметрыТихойУстановки.Вставить("Архитектура", ""); | ||
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", ""); | ||
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь); | ||
ПараметрыТихойУстановки.Вставить("ПодключенныеКомпоненты", Новый Массив()); | ||
|
||
Возврат ПараметрыТихойУстановки; | ||
|
||
КонецФункции |
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.
Refactor ПараметрыТихойУстановки
to improve maintainability.
The function initializes a complex data structure with multiple properties. To enhance readability and maintainability, consider using a constructor or a dedicated class to encapsulate these properties.
- ПараметрыТихойУстановки = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
- ПараметрыТихойУстановки.Вставить("Компоненты", Новый Массив());
+ ПараметрыТихойУстановки = Новый ПараметрыТихойУстановки(); // Assuming a constructor is defined
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Функция ПараметрыТихойУстановки() | |
ПараметрыТихойУстановки = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки(); | |
ПараметрыТихойУстановки.Вставить("Компоненты", Новый Массив()); | |
ПараметрыТихойУстановки.Вставить("РабочийКаталог", ""); | |
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", ""); | |
ПараметрыТихойУстановки.Вставить("Архитектура", ""); | |
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", ""); | |
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь); | |
ПараметрыТихойУстановки.Вставить("ПодключенныеКомпоненты", Новый Массив()); | |
Возврат ПараметрыТихойУстановки; | |
КонецФункции | |
Функция ПараметрыТихойУстановки() | |
ПараметрыТихойУстановки = Новый ПараметрыТихойУстановки(); // Assuming a constructor is defined | |
ПараметрыТихойУстановки.Вставить("РабочийКаталог", ""); | |
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", ""); | |
ПараметрыТихойУстановки.Вставить("Архитектура", ""); | |
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", ""); | |
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь); | |
ПараметрыТихойУстановки.Вставить("ПодключенныеКомпоненты", Новый Массив()); | |
Возврат ПараметрыТихойУстановки; | |
КонецФункции |
Процедура УстановитьПараметрыОкружения(Результат, ПараметрыТихойУстановки) Экспорт | ||
|
||
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", ".."); | ||
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT"); | ||
|
||
ПараметрыТихойУстановки.РабочийКаталог = КаталогКомпонент; | ||
Информация = Новый СистемнаяИнформация(); | ||
ОперационнаяСистема = Неопределено; | ||
Архитектура = Неопределено; | ||
|
||
Linux = "Linux"; | ||
Windows = "Windows"; | ||
MacOS = "MacOS"; | ||
|
||
//@skip-check bsl-variable-name-invalid | ||
x86 = "i386"; | ||
//@skip-check bsl-variable-name-invalid | ||
x64 = "x86_64"; | ||
|
||
ТипКлиентскойПлатформы = Информация.ТипПлатформы; | ||
|
||
Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда | ||
ОперационнаяСистема = Linux; | ||
Архитектура = x86; | ||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда | ||
ОперационнаяСистема = Linux; | ||
Архитектура = x64; | ||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86 Тогда | ||
ОперационнаяСистема = Windows; | ||
Архитектура = x86; | ||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86_64 Тогда | ||
ОперационнаяСистема = Windows; | ||
Архитектура = x64; | ||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86 Тогда | ||
ОперационнаяСистема = MacOS; | ||
Архитектура = x86; | ||
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86_64 Тогда | ||
ОперационнаяСистема = MacOS; | ||
Архитектура = x64; | ||
Иначе | ||
ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы"); | ||
КонецЕсли; | ||
|
||
ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема; | ||
ПараметрыТихойУстановки.Архитектура = Архитектура; | ||
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки); | ||
|
||
КонецПроцедуры |
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.
Optimize platform type checks in УстановитьПараметрыОкружения
.
The procedure uses multiple conditional statements to determine the operating system and architecture. This can be simplified using a dictionary or map for direct lookup, reducing the complexity and improving the performance.
- Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда
- ОперационнаяСистема = Linux;
- Архитектура = x86;
- ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда
+ platformMap = {
+ ТипПлатформы.Linux_x86: { "OS": Linux, "Arch": x86 },
+ ТипПлатформы.Linux_x86_64: { "OS": Linux, "Arch": x64 },
+ };
+ platformInfo = platformMap[ТипКлиентскойПлатформы];
+ ОперационнаяСистема = platformInfo["OS"];
+ Архитектура = platformInfo["Arch"];
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Процедура УстановитьПараметрыОкружения(Результат, ПараметрыТихойУстановки) Экспорт | |
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", ".."); | |
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT"); | |
ПараметрыТихойУстановки.РабочийКаталог = КаталогКомпонент; | |
Информация = Новый СистемнаяИнформация(); | |
ОперационнаяСистема = Неопределено; | |
Архитектура = Неопределено; | |
Linux = "Linux"; | |
Windows = "Windows"; | |
MacOS = "MacOS"; | |
//@skip-check bsl-variable-name-invalid | |
x86 = "i386"; | |
//@skip-check bsl-variable-name-invalid | |
x64 = "x86_64"; | |
ТипКлиентскойПлатформы = Информация.ТипПлатформы; | |
Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда | |
ОперационнаяСистема = Linux; | |
Архитектура = x86; | |
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда | |
ОперационнаяСистема = Linux; | |
Архитектура = x64; | |
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86 Тогда | |
ОперационнаяСистема = Windows; | |
Архитектура = x86; | |
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86_64 Тогда | |
ОперационнаяСистема = Windows; | |
Архитектура = x64; | |
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86 Тогда | |
ОперационнаяСистема = MacOS; | |
Архитектура = x86; | |
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86_64 Тогда | |
ОперационнаяСистема = MacOS; | |
Архитектура = x64; | |
Иначе | |
ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы"); | |
КонецЕсли; | |
ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема; | |
ПараметрыТихойУстановки.Архитектура = Архитектура; | |
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки); | |
КонецПроцедуры | |
Процедура УстановитьПараметрыОкружения(Результат, ПараметрыТихойУстановки) Экспорт | |
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", ".."); | |
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT"); | |
ПараметрыТихойУстановки.РабочийКаталог = КаталогКомпонент; | |
Информация = Новый СистемнаяИнформация(); | |
ОперационнаяСистема = Неопределено; | |
Архитектура = Неопределено; | |
Linux = "Linux"; | |
Windows = "Windows"; | |
MacOS = "MacOS"; | |
//@skip-check bsl-variable-name-invalid | |
x86 = "i386"; | |
//@skip-check bsl-variable-name-invalid | |
x64 = "x86_64"; | |
ТипКлиентскойПлатформы = Информация.ТипПлатформы; | |
platformMap = { | |
ТипПлатформы.Linux_x86: { "OS": Linux, "Arch": x86 }, | |
ТипПлатформы.Linux_x86_64: { "OS": Linux, "Arch": x64 }, | |
}; | |
platformInfo = platformMap[ТипКлиентскойПлатформы]; | |
ОперационнаяСистема = platformInfo["OS"]; | |
Архитектура = platformInfo["Arch"]; | |
ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема; | |
ПараметрыТихойУстановки.Архитектура = Архитектура; | |
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки); | |
КонецПроцедуры |
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт | ||
|
||
Если ОднаЗапись Тогда | ||
ОписаниеЗапроса.КоличествоЗаписей = 1; | ||
КонецЕсли; | ||
|
||
Запрос = Запрос(ОписаниеЗапроса); | ||
РезультатЗапроса = Запрос.Выполнить(); | ||
|
||
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина); | ||
|
||
Если НЕ ОднаЗапись Тогда | ||
Возврат Записи; | ||
ИначеЕсли Записи.Количество() Тогда | ||
Возврат Записи[0]; | ||
Иначе | ||
Возврат Неопределено; | ||
КонецЕсли; | ||
|
||
КонецФункции |
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.
Refactor Записи
function to improve clarity and reduce complexity.
- Если ОднаЗапись Тогда
- ОписаниеЗапроса.КоличествоЗаписей = 1;
- КонецЕсли;
+ ОписаниеЗапроса.КоличествоЗаписей = ОднаЗапись ? 1 : ОписаниеЗапроса.КоличествоЗаписей;
This change simplifies the conditional logic by using a ternary operator, making the code more concise and easier to read.
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт | |
Если ОднаЗапись Тогда | |
ОписаниеЗапроса.КоличествоЗаписей = 1; | |
КонецЕсли; | |
Запрос = Запрос(ОписаниеЗапроса); | |
РезультатЗапроса = Запрос.Выполнить(); | |
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина); | |
Если НЕ ОднаЗапись Тогда | |
Возврат Записи; | |
ИначеЕсли Записи.Количество() Тогда | |
Возврат Записи[0]; | |
Иначе | |
Возврат Неопределено; | |
КонецЕсли; | |
КонецФункции | |
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт | |
ОписаниеЗапроса.КоличествоЗаписей = ОднаЗапись ? 1 : ОписаниеЗапроса.КоличествоЗаписей; | |
Запрос = Запрос(ОписаниеЗапроса); | |
РезультатЗапроса = Запрос.Выполнить(); | |
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина); | |
Если НЕ ОднаЗапись Тогда | |
Возврат Записи; | |
ИначеЕсли Записи.Количество() Тогда | |
Возврат Записи[0]; | |
Иначе | |
Возврат Неопределено; | |
КонецЕсли; | |
КонецФункции |
Функция СкопироватьРекурсивно(Источник) Экспорт | ||
|
||
Перем Приемник; | ||
|
||
СкопироватьПрисвоением = Ложь; | ||
|
||
ТипИсточника = ТипЗнч(Источник); | ||
|
||
Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипИсточника) Тогда | ||
Приемник = СкопироватьСтруктуру(Источник); | ||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипИсточника) Тогда | ||
Приемник = СкопироватьСоответствие(Источник); | ||
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипИсточника) Тогда | ||
Приемник = СкопироватьМассив(Источник); | ||
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда | ||
Приемник = СкопироватьСписокЗначений(Источник); | ||
Иначе | ||
|
||
СкопироватьПрисвоением = Истина; | ||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда | ||
|
||
Если ТипИсточника = Тип("ТаблицаЗначений") Или ТипИсточника = Тип("ДеревоЗначений") Тогда | ||
|
||
СкопироватьПрисвоением = Ложь; | ||
Приемник = Источник.Скопировать(); | ||
|
||
КонецЕсли; | ||
#КонецЕсли | ||
|
||
КонецЕсли; | ||
|
||
Если СкопироватьПрисвоением Тогда | ||
Приемник = Источник; | ||
КонецЕсли; | ||
|
||
Возврат Приемник; | ||
|
||
КонецФункции |
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.
Refactor СкопироватьРекурсивно
to improve maintainability.
Consider breaking down this function into smaller, more focused functions. This can improve maintainability and make the code easier to understand and test.
Функция ЗначениеВМассиве(Значение, | ||
Значение2 = "_!%*", | ||
Значение3 = "_!%*", | ||
Значение4 = "_!%*", | ||
Значение5 = "_!%*", | ||
Значение6 = "_!%*", | ||
Значение7 = "_!%*", | ||
Значение8 = "_!%*", | ||
Значение9 = "_!%*", | ||
Значение10 = "_!%*") Экспорт | ||
|
||
Значения = Новый Массив; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение2) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение3) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение4) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение5) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение6) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение7) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение8) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение9) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Если Не ДобавитьНеПоследнее(Значения, Значение10) Тогда | ||
Возврат Значения; | ||
КонецЕсли; | ||
|
||
Возврат Значения; | ||
|
||
КонецФункции |
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.
Reduce complexity in ЗначениеВМассиве
.
This function has a high complexity due to multiple conditional checks. Consider simplifying the logic or breaking the function into smaller parts.
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры) | ||
|
||
ДанныеФайла = ЮТКомпонентыСлужебныйВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура); | ||
|
||
Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда | ||
Параметры.ИзмененРеестр = Истина; | ||
КонецЕсли; | ||
|
||
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, ДанныеФайла.ИмяФайла); | ||
ДанныеФайла.Данные.Записать(ФайлКомпоненты); | ||
|
||
КонецПроцедуры |
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.
Refactor ТихаяУстановкаВнешнейКомпоненты
to enhance clarity.
This procedure performs multiple operations which can be modularized into separate functions for better clarity and reusability.
- ДанныеФайла = ЮТКомпонентыСлужебныйВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура);
- Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда
+ fileInfo = retrieveComponentFileInfo(Компонента, Параметры);
+ if (registerComponent(fileInfo, Параметры)) {
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры) | |
ДанныеФайла = ЮТКомпонентыСлужебныйВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура); | |
Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда | |
Параметры.ИзмененРеестр = Истина; | |
КонецЕсли; | |
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, ДанныеФайла.ИмяФайла); | |
ДанныеФайла.Данные.Записать(ФайлКомпоненты); | |
КонецПроцедуры | |
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры) | |
fileInfo = retrieveComponentFileInfo(Компонента, Параметры); | |
if (registerComponent(fileInfo, Параметры)) { | |
Параметры.ИзмененРеестр = Истина; | |
КонецЕсли; | |
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, fileInfo.ИмяФайла); | |
fileInfo.Данные.Записать(ФайлКомпоненты); | |
КонецПроцедуры |
Публикация в формате Allure шагов yaxunit и smoke
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
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
Review Details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files ignored due to path filters (1)
src/cf/Catalogs/__НастройкиОтбораОбъектов/Forms/ФормаВыбораОбъектаМетаданных/Ext/Form/Items/Дерево/RowsPicture.bmp
is excluded by!**/*.bmp
Files selected for processing (1)
- .gitignore (1 hunks)
Files skipped from review due to trivial changes (1)
- .gitignore
This comment has been minimized.
This comment has been minimized.
1 similar comment
This comment has been minimized.
This comment has been minimized.
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
Review Details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (1)
- jobConfiguration.json (1 hunks)
Files skipped from review as they are similar to previous changes (1)
- jobConfiguration.json
…исаниюТестовYAxUnit.md
This comment has been minimized.
This comment has been minimized.
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: 9
Review Details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (1)
- docs/РуководствоПоНаписаниюТестовYAxUnit.md (1 hunks)
Additional Context Used
LanguageTool (1)
docs/РуководствоПоНаписаниюТестовYAxUnit.md (1)
Near line 47: Избыточные определения. В правильно составленном предложении не должно быть больше одного придаточного определения.
Context: ...айте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для наше...
git clone https://github.com/firstBitSportivnaya/PSSL.git | ||
``` | ||
|
||
## Шаг 2: Загрузка конфигурации |
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.
Ensure headings are surrounded by blank lines for better readability.
+
## Шаг 2: Загрузка конфигурации
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
## Шаг 2: Загрузка конфигурации | |
## Шаг 2: Загрузка конфигурации | |
```bash | ||
PSSL/src/cf/ | ||
``` | ||
## Шаг 3: Добавление расширения конфигурации |
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.
Ensure headings are surrounded by blank lines for better readability.
+
## Шаг 3: Добавление расширения конфигурации
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
## Шаг 3: Добавление расширения конфигурации | |
## Шаг 3: Добавление расширения конфигурации | |
``` | ||
После добавления расширения в режиме 1С:Предприятие должна появиться панель управления YAxUnit, которая отображается в виде подсистемы. | ||
|
||
## Шаг 4: Создание тестов |
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.
Ensure headings are surrounded by blank lines for better readability.
+
## Шаг 4: Создание тестов
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
## Шаг 4: Создание тестов | |
## Шаг 4: Создание тестов | |
``` | ||
В данном примере рассмотрим написание тестов для этой функции. | ||
|
||
### Составление тестового набора |
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.
Ensure headings are surrounded by blank lines for better readability.
+
### Составление тестового набора
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
### Составление тестового набора |
Составление тестового набора
</details>
<!-- suggestion_end -->
<!-- This is an auto-generated comment by CodeRabbit -->
| 100 | Четное | | ||
| 99 | Нечетное | | ||
|
||
### Создание модуля для тестов |
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.
Ensure headings are surrounded by blank lines for better readability.
+
### Создание модуля для тестов
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
### Создание модуля для тестов |
Создание модуля для тестов
</details>
<!-- suggestion_end -->
<!-- This is an auto-generated comment by CodeRabbit -->
### Создание модуля для тестов | ||
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**. | ||
|
||
### Написание теста |
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.
Ensure headings are surrounded by blank lines for better readability.
+
### Написание теста
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
### Написание теста |
Написание теста
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 99, Ложь)); | ||
КонецПроцедуры | ||
``` | ||
#### Структура процедуры ИсполняемыеСценарии() |
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.
Ensure headings are surrounded by blank lines for better readability.
+
#### Структура процедуры ИсполняемыеСценарии()
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
#### Структура процедуры ИсполняемыеСценарии() | |
#### Структура процедуры ИсполняемыеСценарии() | |
#### Структура процедуры ИсполняемыеСценарии() | ||
Процедура обычно содержит вызовы методов для добавления тестов. Основной метод — **ДобавитьТестовыйНабор()**, который создает группу тестов. В каждую группу затем добавляются конкретные тесты с помощью метода **ДобавитьТест()**. Эти тесты могут иметь параметры, задаваемые через метод **СПараметрами()**. | ||
|
||
#### Написание самого теста |
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.
Ensure headings are surrounded by blank lines for better readability.
+
#### Написание самого теста
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
#### Написание самого теста | |
#### Написание самого теста |
| 99 | Нечетное | | ||
|
||
### Создание модуля для тестов | ||
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**. |
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.
Consider simplifying the sentence to avoid redundancy.
- Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.
+ Создайте новый модуль в расширении YAxUnit, названный по объекту, содержащему тестируемую функцию. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**. | |
Создайте новый модуль в расширении YAxUnit, названный по объекту, содержащему тестируемую функцию. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**. |
Изменена структура файлов и папок. Добавлены тесты vanessa и yaxunit. Добавлен конфигурационный файл yaxunit.
Summary by CodeRabbit
New Features
yaxunit
,bdd
, andtelegram
in job configurations.Enhancements
Documentation
Bug Fixes
.gitignore
settings to correctly exclude and manage new file paths.