Skip to content

Commit

Permalink
Исправлены замечания сонар + тест паузы
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed Aug 22, 2023
1 parent 5a0b015 commit cd2bc49
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 53 deletions.
51 changes: 43 additions & 8 deletions exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@

#Область ПрограммныйИнтерфейс

// Возвращает внешнюю компоненту, реализующую паузу
//
// Возвращаемое значение:
// ВнешнийОбъект
Функция Пауза() Экспорт

Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза());
Expand All @@ -28,34 +32,65 @@

#Область СлужебныйПрограммныйИнтерфейс

// Создает внешнюю компоненту по описанию
//
// Параметры:
// ОписаниеКомпоненты - см. ОписаниеКомпоненты
//
// Возвращаемое значение:
// ВнешнийОбъект
Функция СоздатьКомпоненту(ОписаниеКомпоненты) Экспорт

ПодключитьКомпоненту(ОписаниеКомпоненты.ИмяМакета, ОписаниеКомпоненты.ИмяКомпоненты, Истина);
Возврат Новый (ОписаниеКомпоненты.ИмяКласса);
Если ПодключитьКомпоненту(ОписаниеКомпоненты.ИмяМакета, ОписаниеКомпоненты.ИмяКомпоненты, Истина) Тогда
Возврат Новый (ОписаниеКомпоненты.ИмяКласса);
Иначе
ВызватьИсключение "Не удалось подключить внешнюю компоненту " + ОписаниеКомпоненты.ИмяКласса;
КонецЕсли;

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

// Подключает внещнюю компоненту из макета
//
// Параметры:
// ИмяМакета - Строка - Имя макета, в котором хранится компонента
// ИмяКомпоненты - Строка - Имя компоненты
// Кэшировать - Булево - Кэшировать создание компоненты
//
// Возвращаемое значение:
// Булево - Успешность подключения
Функция ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты, Кэшировать) Экспорт

Если Кэшировать Тогда
Возврат ЮТПовторногоИспользования.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты)
Возврат ЮТПовторногоИспользования.ПодключитьКомпоненту(ИмяМакета, ИмяКомпоненты);
КонецЕсли;

Возврат ПодключитьВнешнююКомпоненту(ИмяМакета, ИмяКомпоненты, ТипВнешнейКомпоненты.Native);

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// Описание компоненты реализующей паузу.
//
// Возвращаемое значение:
// см. ОписаниеКомпоненты
Функция ОписаниеКомпонентыПауза() Экспорт

Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Sleep");

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

Функция ОписаниеКомпоненты(ИмяМакета, ИмяКомпоненты, ИмяКласса)
// Описание внешней компоненты.
//
// Параметры:
// ИмяМакета - Строка - Имя макета, в котором хранится компонента
// ИмяКомпоненты - Строка -Имя компоненты
// ИмяКласса - Строка - Имя класса, по которому создается компонента
//
// Возвращаемое значение:
// ФиксированнаяСтруктура - Описание компоненты:
// * ИмяМакета - Строка - Имя макета, в котором хранится компонента
// * ИмяКомпоненты - Строка -Имя компоненты
// * ИмяКласса - Строка - Имя класса
Функция ОписаниеКомпоненты(ИмяМакета, ИмяКомпоненты, ИмяКласса) Экспорт

Описание = Новый Структура;
Описание.Вставить("ИмяМакета", ИмяМакета);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
ИмяФайлаКомпоненты = ИмяФайлаКомпоненты(ЧтениеАрхива, ОперационнаяСистема, Архитектура);

Если ИмяФайлаКомпоненты = Неопределено Тогда
ВызватьИсключение "Компонента не поддреживает клиентское окружение";
ВызватьИсключение "Компонента не поддерживает клиентское окружение";
КонецЕсли;

Данные = ДвоичныеДанныеЭлемента(ЧтениеАрхива, ИмяФайлаКомпоненты);
Expand Down Expand Up @@ -55,30 +55,9 @@

Пока ЧтениеXML.Прочитать() Цикл

Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И СтрСравнить(ЧтениеXML.Имя, "component") = 0 Тогда

ОперационнаяСистемаУзла = Неопределено;
АрхитектураУзла = Неопределено;
ПутьУзла = Неопределено;

Для Инд = 0 По ЧтениеXML.КоличествоАтрибутов() - 1 Цикл

ИмяАтрибута = ЧтениеXML.ЛокальноеИмяАтрибута(Инд);
Если СтрСравнить(ИмяАтрибута, "os") = 0 Тогда
ОперационнаяСистемаУзла = ЧтениеXML.ЗначениеАтрибута(Инд);
ИначеЕсли СтрСравнить(ИмяАтрибута, "path") = 0 Тогда
ПутьУзла = ЧтениеXML.ЗначениеАтрибута(Инд);
ИначеЕсли СтрСравнить(ИмяАтрибута, "arch") = 0 Тогда
АрхитектураУзла = ЧтениеXML.ЗначениеАтрибута(Инд);
КонецЕсли;

КонецЦикла;

Если ОперационнаяСистема = ОперационнаяСистемаУзла И Архитектура = АрхитектураУзла Тогда
ИмяФайлаКомпоненты = ПутьУзла;
Прервать;
КонецЕсли;

Если ЭтоПодходящийУзел(ЧтениеXML, ОперационнаяСистема, Архитектура) Тогда
ИмяФайлаКомпоненты = ЧтениеXML.ЗначениеАтрибута("path");
Прервать;
КонецЕсли;

КонецЦикла;
Expand All @@ -89,6 +68,19 @@

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

Функция ЭтоПодходящийУзел(ЧтениеXML, ОперационнаяСистема, Архитектура)

Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ СтрСравнить(ЧтениеXML.Имя, "component") <> 0 Тогда
Возврат Ложь;
КонецЕсли;

ОперационнаяСистемаУзла = ЧтениеXML.ЗначениеАтрибута("os");
АрхитектураУзла = ЧтениеXML.ЗначениеАтрибута("arch");

Возврат ОперационнаяСистема = ОперационнаяСистемаУзла И Архитектура = АрхитектураУзла;

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

Функция ДвоичныеДанныеЭлемента(ЧтениеАрхива, ИмяФайла)

ЭлементФайла = Неопределено;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,26 +44,32 @@
ОперационнаяСистема = Неопределено;
Архитектура = Неопределено;

Linux = "Linux";
Windows = "Windows";
MacOS = "MacOS";
x86 = "i386";
x64 = "x86_64";

ТипКлиентскойПлатформы = Информация.ТипПлатформы;

Если ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86 Тогда
ОперационнаяСистема = "Linux";
Архитектура = "i386";
ОперационнаяСистема = Linux;
Архитектура = x86;
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Linux_x86_64 Тогда
ОперационнаяСистема = "Linux";
Архитектура = "x86_64";
ОперационнаяСистема = Linux;
Архитектура = x64;
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86 Тогда
ОперационнаяСистема = "Windows";
Архитектура = "i386";
ОперационнаяСистема = Windows;
Архитектура = x86;
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.Windows_x86_64 Тогда
ОперационнаяСистема = "Windows";
Архитектура = "x86_64";
ОперационнаяСистема = Windows;
Архитектура = x64;
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86 Тогда
ОперационнаяСистема = "MacOS";
Архитектура = "x86_64";
ОперационнаяСистема = MacOS;
Архитектура = x86;
ИначеЕсли ТипКлиентскойПлатформы = ТипПлатформы.MacOS_x86_64 Тогда
ОперационнаяСистема = "MacOS";
Архитектура = "x86_64";
ОперационнаяСистема = MacOS;
Архитектура = x64;
Иначе
ВызватьИсключение "Неподдерживаемый тип платформы";
КонецЕсли;
Expand All @@ -82,7 +88,7 @@

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

Функция ЗаписатьВРеестр(ФайлРеестра, ИмяФайла)
Процедура ЗаписатьВРеестр(ФайлРеестра, ИмяФайла)

Данные = Новый ДвоичныеДанные(ФайлРеестра);
Текст = ПолучитьСтрокуИзДвоичныхДанных(Данные);
Expand All @@ -93,7 +99,7 @@
| <component path=""%1"" type=""native""/>
|</registry>", ИмяФайла);
ИначеЕсли СтрНайти(Текст, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрированна
Возврат Неопределено;
Возврат;
Иначе // Добавляем компоненту
Запись = СтрШаблон(" <component path=""%1"" type=""native""/>", ИмяФайла);
Текст = СтрЗаменить(Текст, "</registry>", Запись + Символы.ПС + "</registry>");
Expand All @@ -102,6 +108,6 @@
Данные = ПолучитьДвоичныеДанныеИзСтроки(Текст, КодировкаТекста.UTF8, Истина);
Данные.Записать(ФайлРеестра);

КонецФункции
КонецПроцедуры

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
Макет = Менеджер.ПолучитьМакет(ЧастиИмени[2]);
ИндексОбласти = 3;
Иначе
ВызватьИсключение СтрШаблон("Некорреткное имя макета `%1`", ИмяМакета);
ВызватьИсключение СтрШаблон("Некорректное имя макета `%1`", ИмяМакета);
КонецЕсли;

Если ЧастиИмени.Количество() > ИндексОбласти Тогда
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
<key>ru</key>
<value>ЮТYax unit add in</value>
</synonym>
<templateType>BinaryData</templateType>
<templateType>AddIn</templateType>
</mdclass:CommonTemplate>
10 changes: 7 additions & 3 deletions tests/src/CommonModules/ОМ_Общий/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,14 @@

Процедура Пауза() Экспорт

ЮТОбщий.Пауза(0.001);
ЮТОбщий.Пауза(0.01);
ЮТОбщий.Пауза(0.1);
Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
ЮТОбщий.Пауза(1);
ЮТОбщий.Пауза(1);
ЮТОбщий.Пауза(1);
Дельта = ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало;

ЮТест.ОжидаетЧто(Дельта)
.МеждуИсключаяГраницы(3010, 3050);

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

Expand Down

0 comments on commit cd2bc49

Please sign in to comment.