Skip to content
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

Merged
merged 13 commits into from
May 6, 2024
Merged

Conversation

IT-Nick
Copy link
Contributor

@IT-Nick IT-Nick commented Apr 18, 2024

Изменена структура файлов и папок. Добавлены тесты vanessa и yaxunit. Добавлен конфигурационный файл yaxunit.

Summary by CodeRabbit

  • New Features

    • Added support for yaxunit, bdd, and telegram in job configurations.
    • Introduced a new HTTP connector module for testing HTTP requests.
    • Enhanced server modules for number type descriptions and date table retrieval.
  • Enhancements

    • Updated source directory paths to "src/cf" for better organization.
    • Enhanced testing capabilities with Mockito framework.
  • Documentation

    • Published a comprehensive guide on writing tests with YAxUnit.
  • Bug Fixes

    • Adjusted .gitignore settings to correctly exclude and manage new file paths.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

@ivanmolodec
Copy link
Member

Сейчас дженкинс-либ дымовые тесты прогнал вместе с расширением яксюнита, что привело к ошибкам в сборке. По шагу БДД пока дебажу. Сам шаг яксюнита отработал штатно, это супер

Copy link

coderabbitai bot commented Apr 23, 2024

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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.
Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.
Please see our FAQ for further information.

Commits Files that changed from the base of the PR and between 3926275 and b651702.

Walkthrough

The recent updates focus on enhancing testing frameworks by adding support for yaxunit, bdd, and telegram in the job configuration. Source directories have been updated, and new functionalities for HTTP connectors and server-related testing are introduced. Overall, these changes aim to improve the testing capabilities and configuration management of the system.

Changes

Files Change Summary
jobConfiguration.json Added support for new testing frameworks, updated source directory, modified sections for initialization and reporting configurations.
sonar-project.properties Updated path to source directory.
src/... Various files introducing and extending testing functionalities using YAXUnit and Mockito frameworks.
docs/Руководство по написанию тестов YAxUnit.md Guide on writing tests using YAxUnit.
.gitignore Adjusted paths for ConfigDumpInfo.xml and dumplist.txt.

🐇🌟
In the land of code and wire,
Changes brew in the heart of the pyre.
YAXUnit's might, now unfolds,
With tales of tests that the rabbit told.
Hop and cheer, for the new dawn is bright, 🌅
In the realm of bits, we leap to new heights!
🚀🐰


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?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 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.

Comment on lines +81 to +119
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт

ПрерватьВыполнение = Ложь;

Если НЕ Включен() Тогда
Возврат Неопределено;
КонецЕсли;

Настройки = Настройки();

Если НЕ ЗначениеЗаполнено(Настройки.Перехват) Или Настройки.ТипыПерехватываемыхОбъектов[ТипЗнч(Объект)] = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

ПараметрыПерехвата = ДанныеПерехвата(Объект, Настройки);

Если ПараметрыПерехвата = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

РежимыРаботы = РежимыРаботы();

СтруктураВызоваМетода = СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыМетода);

Если Настройки.Режим = РежимыРаботы.Обучение ИЛИ Настройки.Режим = РежимыРаботы.Проверка Тогда

ПрерватьВыполнение = Истина;
Возврат СтруктураВызоваМетода;

ИначеЕсли Настройки.Режим = РежимыРаботы.Тестирование Тогда

ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода);
Возврат ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение);

КонецЕсли;

Возврат Неопределено;

КонецФункции
Copy link

@coderabbitai coderabbitai bot Apr 23, 2024

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.

Suggested change
Функция АнализВызова(Объект, ИмяМетода, ПараметрыМетода, ПрерватьВыполнение) Экспорт
ПрерватьВыполнение = Ложь;
Если НЕ Включен() Тогда
Возврат Неопределено;
КонецЕсли;
Настройки = Настройки();
Если НЕ ЗначениеЗаполнено(Настройки.Перехват) Или Настройки.ТипыПерехватываемыхОбъектов[ТипЗнч(Объект)] = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыПерехвата = ДанныеПерехвата(Объект, Настройки);
Если ПараметрыПерехвата = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
РежимыРаботы = РежимыРаботы();
СтруктураВызоваМетода = СтруктураВызоваМетода(Объект, ИмяМетода, ПараметрыМетода);
Если Настройки.Режим = РежимыРаботы.Обучение ИЛИ Настройки.Режим = РежимыРаботы.Проверка Тогда
ПрерватьВыполнение = Истина;
Возврат СтруктураВызоваМетода;
ИначеЕсли Настройки.Режим = РежимыРаботы.Тестирование Тогда
ЗарегистрироватьВызовМетода(Настройки, ПараметрыПерехвата, СтруктураВызоваМетода);
Возврат ПерехватитьВызовМетода(ПараметрыПерехвата, СтруктураВызоваМетода, ПрерватьВыполнение);
КонецЕсли;
Возврат Неопределено;
КонецФункции

Copy link
Member

Choose a reason for hiding this comment

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

@coderabbitai никогда не проверяй код в каталоге src/cfe/YAXUnit т.к. он является отдельным фреймворком

Copy link

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.

Comment on lines +198 to +228
Функция ПроверитьПараметр(Параметр, Условие) Экспорт

ТипыУсловий = ТипыУсловийПараметров();
Совпадает = Ложь;

Если Условие.Режим = ТипыУсловий.Любой Тогда

Совпадает = Истина;

ИначеЕсли Условие.Режим = ТипыУсловий.Значение Тогда

Совпадает = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Условие.Значение, Параметр);

ИначеЕсли Условие.Режим = ТипыУсловий.Тип Тогда

Совпадает = Условие.Тип = ТипЗнч(Параметр);

ИначеЕсли Условие.Режим = ТипыУсловий.ОписаниеТипа Тогда

Совпадает = Условие.Тип.СодержитТип(ТипЗнч(Параметр));

ИначеЕсли Условие.Режим = ТипыУсловий.Предикат Тогда

Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат);
Совпадает = Результат.Успешно;

КонецЕсли;

Возврат Совпадает;

КонецФункции
Copy link

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.

Suggested change
Функция ПроверитьПараметр(Параметр, Условие) Экспорт
ТипыУсловий = ТипыУсловийПараметров();
Совпадает = Ложь;
Если Условие.Режим = ТипыУсловий.Любой Тогда
Совпадает = Истина;
ИначеЕсли Условие.Режим = ТипыУсловий.Значение Тогда
Совпадает = ЮТСравнениеСлужебныйКлиентСервер.ЗначенияРавны(Условие.Значение, Параметр);
ИначеЕсли Условие.Режим = ТипыУсловий.Тип Тогда
Совпадает = Условие.Тип = ТипЗнч(Параметр);
ИначеЕсли Условие.Режим = ТипыУсловий.ОписаниеТипа Тогда
Совпадает = Условие.Тип.СодержитТип(ТипЗнч(Параметр));
ИначеЕсли Условие.Режим = ТипыУсловий.Предикат Тогда
Результат = ЮТПредикатыСлужебныйКлиентСервер.ПроверитьПредикаты(Параметр, Условие.Предикат);
Совпадает = Результат.Успешно;
КонецЕсли;
Возврат Совпадает;
КонецФункции
Функция ПроверитьПараметр(Параметр, Условие) Экспорт
ТипыУсловий = ТипыУсловийПараметров();
Совпадает = Ложь;
# Strategy pattern implementation
Возврат Совпадает;
КонецФункции

Comment on lines +54 to +64
Функция ПараметрыИсполнения() Экспорт

Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
Параметры.Вставить("АргументыЗапуска");
Параметры.Вставить("ПараметрыЗапуска");
Параметры.Вставить("ИсполняемыеТестовыеМодули");
Параметры.Вставить("РезультатыТестирования");

Возврат Параметры;

КонецФункции
Copy link

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.

Suggested change
Функция ПараметрыИсполнения() Экспорт
Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
Параметры.Вставить("АргументыЗапуска");
Параметры.Вставить("ПараметрыЗапуска");
Параметры.Вставить("ИсполняемыеТестовыеМодули");
Параметры.Вставить("РезультатыТестирования");
Возврат Параметры;
КонецФункции
Функция ПараметрыИсполнения() Экспорт
Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.НоваяЦепочкаАсинхроннойОбработкиСПараметрами();
Возврат Параметры;
КонецФункции

Comment on lines +120 to +129
Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт

ЮТКонтекстСлужебный.ИнициализироватьКонтекст();
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings);
// Повторно сохраним для передачи на сервер
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения());

ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска);

КонецПроцедуры
Copy link

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.

Suggested change
Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт
ЮТКонтекстСлужебный.ИнициализироватьКонтекст();
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings);
// Повторно сохраним для передачи на сервер
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения());
ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска);
КонецПроцедуры
Процедура ВыполнитьИнициализацию(ПараметрыЗапуска) Экспорт
ЮТКонтекстСлужебный.ИнициализироватьКонтекст();
ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ПараметрыЗапуска.settings);
ЮТСобытияСлужебный.Инициализация(ПараметрыЗапуска);
КонецПроцедуры

Comment on lines +54 to +67
Функция ПараметрыТихойУстановки()

ПараметрыТихойУстановки = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
ПараметрыТихойУстановки.Вставить("Компоненты", Новый Массив());
ПараметрыТихойУстановки.Вставить("РабочийКаталог", "");
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", "");
ПараметрыТихойУстановки.Вставить("Архитектура", "");
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", "");
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь);
ПараметрыТихойУстановки.Вставить("ПодключенныеКомпоненты", Новый Массив());

Возврат ПараметрыТихойУстановки;

КонецФункции
Copy link

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.

Suggested change
Функция ПараметрыТихойУстановки()
ПараметрыТихойУстановки = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
ПараметрыТихойУстановки.Вставить("Компоненты", Новый Массив());
ПараметрыТихойУстановки.Вставить("РабочийКаталог", "");
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", "");
ПараметрыТихойУстановки.Вставить("Архитектура", "");
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", "");
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь);
ПараметрыТихойУстановки.Вставить("ПодключенныеКомпоненты", Новый Массив());
Возврат ПараметрыТихойУстановки;
КонецФункции
Функция ПараметрыТихойУстановки()
ПараметрыТихойУстановки = Новый ПараметрыТихойУстановки(); // Assuming a constructor is defined
ПараметрыТихойУстановки.Вставить("РабочийКаталог", "");
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", "");
ПараметрыТихойУстановки.Вставить("Архитектура", "");
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", "");
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь);
ПараметрыТихойУстановки.Вставить("ПодключенныеКомпоненты", Новый Массив());
Возврат ПараметрыТихойУстановки;
КонецФункции

Comment on lines +69 to +116
Процедура УстановитьПараметрыОкружения(Результат, ПараметрыТихойУстановки) Экспорт

КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", "..");
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "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;
Иначе
ЮТИсполнительСлужебныйКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы");
КонецЕсли;

ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема;
ПараметрыТихойУстановки.Архитектура = Архитектура;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки);

КонецПроцедуры
Copy link

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.

Suggested change
Процедура УстановитьПараметрыОкружения(Результат, ПараметрыТихойУстановки) Экспорт
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", "..");
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "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"];
ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема;
ПараметрыТихойУстановки.Архитектура = Архитектура;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки);
КонецПроцедуры

Comment on lines +80 to +99
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт

Если ОднаЗапись Тогда
ОписаниеЗапроса.КоличествоЗаписей = 1;
КонецЕсли;

Запрос = Запрос(ОписаниеЗапроса);
РезультатЗапроса = Запрос.Выполнить();

Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);

Если НЕ ОднаЗапись Тогда
Возврат Записи;
ИначеЕсли Записи.Количество() Тогда
Возврат Записи[0];
Иначе
Возврат Неопределено;
КонецЕсли;

КонецФункции
Copy link

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.

Suggested change
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт
Если ОднаЗапись Тогда
ОписаниеЗапроса.КоличествоЗаписей = 1;
КонецЕсли;
Запрос = Запрос(ОписаниеЗапроса);
РезультатЗапроса = Запрос.Выполнить();
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);
Если НЕ ОднаЗапись Тогда
Возврат Записи;
ИначеЕсли Записи.Количество() Тогда
Возврат Записи[0];
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция Записи(Знач ОписаниеЗапроса, Знач ОднаЗапись) Экспорт
ОписаниеЗапроса.КоличествоЗаписей = ОднаЗапись ? 1 : ОписаниеЗапроса.КоличествоЗаписей;
Запрос = Запрос(ОписаниеЗапроса);
РезультатЗапроса = Запрос.Выполнить();
Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);
Если НЕ ОднаЗапись Тогда
Возврат Записи;
ИначеЕсли Записи.Количество() Тогда
Возврат Записи[0];
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции

Comment on lines +83 to +120
Функция СкопироватьРекурсивно(Источник) Экспорт

Перем Приемник;

СкопироватьПрисвоением = Ложь;

ТипИсточника = ТипЗнч(Источник);

Если ЮТТипыДанныхСлужебный.ЭтоСтруктура(ТипИсточника) Тогда
Приемник = СкопироватьСтруктуру(Источник);
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоСоответствие(ТипИсточника) Тогда
Приемник = СкопироватьСоответствие(Источник);
ИначеЕсли ЮТТипыДанныхСлужебный.ЭтоМассива(ТипИсточника) Тогда
Приемник = СкопироватьМассив(Источник);
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
Приемник = СкопироватьСписокЗначений(Источник);
Иначе

СкопироватьПрисвоением = Истина;
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Если ТипИсточника = Тип("ТаблицаЗначений") Или ТипИсточника = Тип("ДеревоЗначений") Тогда

СкопироватьПрисвоением = Ложь;
Приемник = Источник.Скопировать();

КонецЕсли;
#КонецЕсли

КонецЕсли;

Если СкопироватьПрисвоением Тогда
Приемник = Источник;
КонецЕсли;

Возврат Приемник;

КонецФункции
Copy link

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.

Comment on lines +275 to +330
Функция ЗначениеВМассиве(Значение,
Значение2 = "_!%*",
Значение3 = "_!%*",
Значение4 = "_!%*",
Значение5 = "_!%*",
Значение6 = "_!%*",
Значение7 = "_!%*",
Значение8 = "_!%*",
Значение9 = "_!%*",
Значение10 = "_!%*") Экспорт

Значения = Новый Массив;

Если Не ДобавитьНеПоследнее(Значения, Значение) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение2) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение3) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение4) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение5) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение6) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение7) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение8) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение9) Тогда
Возврат Значения;
КонецЕсли;

Если Не ДобавитьНеПоследнее(Значения, Значение10) Тогда
Возврат Значения;
КонецЕсли;

Возврат Значения;

КонецФункции
Copy link

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.

Comment on lines +189 to +200
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры)

ДанныеФайла = ЮТКомпонентыСлужебныйВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура);

Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда
Параметры.ИзмененРеестр = Истина;
КонецЕсли;

ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, ДанныеФайла.ИмяФайла);
ДанныеФайла.Данные.Записать(ФайлКомпоненты);

КонецПроцедуры
Copy link

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.

Suggested change
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры)
ДанныеФайла = ЮТКомпонентыСлужебныйВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура);
Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда
Параметры.ИзмененРеестр = Истина;
КонецЕсли;
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, ДанныеФайла.ИмяФайла);
ДанныеФайла.Данные.Записать(ФайлКомпоненты);
КонецПроцедуры
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры)
fileInfo = retrieveComponentFileInfo(Компонента, Параметры);
if (registerComponent(fileInfo, Параметры)) {
Параметры.ИзмененРеестр = Истина;
КонецЕсли;
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, fileInfo.ИмяФайла);
fileInfo.Данные.Записать(ФайлКомпоненты);
КонецПроцедуры

This comment has been minimized.

This comment has been minimized.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review Details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits Files that changed from the base of the PR and between c0fa6ec and b96f8f6.
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.

1 similar comment

This comment has been minimized.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review Details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits Files that changed from the base of the PR and between b96f8f6 and 0d33ac9.
Files selected for processing (1)
  • jobConfiguration.json (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • jobConfiguration.json

This comment has been minimized.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

Review Details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits Files that changed from the base of the PR and between 0d33ac9 and 3926275.
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: Загрузка конфигурации
Copy link

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.

Suggested change
## Шаг 2: Загрузка конфигурации
## Шаг 2: Загрузка конфигурации

```bash
PSSL/src/cf/
```
## Шаг 3: Добавление расширения конфигурации
Copy link

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.

Suggested change
## Шаг 3: Добавление расширения конфигурации
## Шаг 3: Добавление расширения конфигурации

```
После добавления расширения в режиме 1С:Предприятие должна появиться панель управления YAxUnit, которая отображается в виде подсистемы.

## Шаг 4: Создание тестов
Copy link

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.

Suggested change
## Шаг 4: Создание тестов
## Шаг 4: Создание тестов

```
В данном примере рассмотрим написание тестов для этой функции.

### Составление тестового набора
Copy link

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.

Suggested change
### Составление тестового набора

Составление тестового набора


</details>
<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->

| 100 | Четное |
| 99 | Нечетное |

### Создание модуля для тестов
Copy link

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.

Suggested change
### Создание модуля для тестов

Создание модуля для тестов


</details>
<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->

### Создание модуля для тестов
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.

### Написание теста
Copy link

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.

Suggested change
### Написание теста

Написание теста

.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 99, Ложь));
КонецПроцедуры
```
#### Структура процедуры ИсполняемыеСценарии()
Copy link

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.

Suggested change
#### Структура процедуры ИсполняемыеСценарии()
#### Структура процедуры ИсполняемыеСценарии()

#### Структура процедуры ИсполняемыеСценарии()
Процедура обычно содержит вызовы методов для добавления тестов. Основной метод — **ДобавитьТестовыйНабор()**, который создает группу тестов. В каждую группу затем добавляются конкретные тесты с помощью метода **ДобавитьТест()**. Эти тесты могут иметь параметры, задаваемые через метод **СПараметрами()**.

#### Написание самого теста
Copy link

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.

Suggested change
#### Написание самого теста
#### Написание самого теста

| 99 | Нечетное |

### Создание модуля для тестов
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.
Copy link

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.

Suggested change
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.
Создайте новый модуль в расширении YAxUnit, названный по объекту, содержащему тестируемую функцию. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.

Copy link

Passed

Analysis Details

0 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 0 Code Smells

Coverage and Duplications

  • Coverage No coverage information (0.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.50% Estimated after merge)

Project ID: PSSL

View in SonarQube

@ivanmolodec ivanmolodec merged commit 45faad3 into develop May 6, 2024
3 of 4 checks passed
@ivanmolodec ivanmolodec deleted the va_yax_tests branch May 6, 2024 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
2 participants