diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" index 071e004..d84668d 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" @@ -27,7 +27,7 @@ // Функция ВерсияПродукта() Экспорт - Версия = "1.2"; + Версия = "1.2.1"; Возврат Версия; КонецФункции // ВерсияПродукта() diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\320\275\320\260\321\200.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\320\275\320\260\321\200.os" index dc80d85..fee2007 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\320\275\320\260\321\200.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\320\275\320\260\321\200.os" @@ -37,7 +37,7 @@ Ответ = ВыполнитьЗапрос(АдресСервера, Токен, URL, "GET"); Для Каждого ОписаниеПроекта Из Ответ.components Цикл - + НовыйПроект = Новый Структура(); НовыйПроект.Вставить("Идентификатор", ОписаниеПроекта.id); НовыйПроект.Вставить("Код", ОписаниеПроекта.key); @@ -48,13 +48,13 @@ Если БольшеНетДанных(Ответ) Тогда Прервать; КонецЕсли; - + НомерСтраницы = НомерСтраницы + 1; - + КонецЦикла; Возврат Проекты; - + КонецФункции // ПолучитьЗамечанияПроекта @@ -114,11 +114,11 @@ URL = СтрШаблон(URLШаблон, КлючКомпонента, "&onComponentOnly=true"); Ответ = ВыполнитьЗапрос(АдресСервера, Токен, URL + Формат(НомерСтраницы, "ЧГ="), "GET"); КонецЕсли; - + Для Каждого ОписаниеОшибки Из Ответ.issues Цикл ПутьКФайлу = СтрЗаменить(ОписаниеОшибки.component, ОписаниеПроекта.Код + ":", ""); - + Если ИзEDTВКонфигуратор Тогда ПутьКФайлу = СтрЗаменить(ПутьКФайлу, "configuration/src/", "src/configuration/"); ПутьКФайлу = СтрЗаменить(ПутьКФайлу, "/ManagerModule.bsl", "/Ext/ManagerModule.bsl"); @@ -139,7 +139,7 @@ НовоеОписаниеОшибки.Вставить("КоличествоВсего", 1); Хэш = ПолучитьХэшЗамечания(ОписаниеОшибки); НовоеОписаниеОшибки.Вставить("Хэш", Хэш); - + ТекущийМодуль = Замечания.Получить(ПутьКФайлу); Если ТекущийМодуль = Неопределено Тогда ТекущийМодуль = Новый Структура("ПутьКФайлу, Правила, Ключ", ПутьКФайлу, Новый Соответствие(), ОписаниеОшибки.component); @@ -156,21 +156,21 @@ ТекущаяОшибка.Количество = ТекущаяОшибка.Количество + 1; ТекущаяОшибка.КоличествоВсего = ТекущаяОшибка.КоличествоВсего + 1; КонецЕсли; - + ТекущееПравило.Ошибки.Вставить(ТекущаяОшибка.Хэш, ТекущаяОшибка); ТекущийМодуль.Правила.Вставить(ТекущееПравило.Правило, ТекущееПравило); Замечания.Вставить(ПутьКФайлу, ТекущийМодуль); - + КонецЦикла; Если БольшеНетДанных(Ответ) Тогда Прервать; КонецЕсли; - + НомерСтраницы = НомерСтраницы + 1; - + КонецЦикла; - + КонецЦикла; Возврат Замечания; @@ -191,10 +191,10 @@ Для Каждого Замечание Из Правило.Значение.Ошибки Цикл Замечание.Значение.КоличествоВсего = 0; КонецЦикла; - + URL = СтрШаблон(URLШаблон, Файл.Значение.Ключ, Правило.Значение.Правило); НомерСтраницы = 1; - + Пока Истина Цикл Ответ = ВыполнитьЗапрос(АдресСервера, Токен, URL + Формат(НомерСтраницы, "ЧГ="), "GET"); Для Каждого ОписаниеОшибки Из Ответ.issues Цикл @@ -211,7 +211,7 @@ Если БольшеНетДанных(Ответ) Тогда Прервать; КонецЕсли; - + НомерСтраницы = НомерСтраницы + 1; КонецЦикла; @@ -236,8 +236,8 @@ Функция ПолучитьЗакрываемыеЗамечания(АдресСервера, Токен, ОписаниеПроекта, ЗамечанияРодительскогоПроекта) Экспорт Замечания = Новый Соответствие(); - Статусы = СтрРазделить("OPEN,CONFIRMED,REOPENED", ",", ЛОЖЬ); - + Статусы = СтрРазделить("OPEN,CONFIRMED,REOPENED", ",", Ложь); + URLШаблон = "issues/search?componentKeys=%1&rules=%2&ps=500&p="; Для Каждого Файл Из ЗамечанияРодительскогоПроекта Цикл Для Каждого Правило Из Файл.Значение.Правила Цикл @@ -263,7 +263,7 @@ ТекущаяОшибка.Вставить("РодительскоеЗамечание", РодительскоеЗамечание); ТекущаяОшибка.Вставить("Ключи", Новый Массив()); КонецЕсли; - + ТекущаяОшибка.КоличествоВсего = ТекущаяОшибка.КоличествоВсего + 1; Если Статусы.Найти(ОписаниеОшибки.status) <> Неопределено Тогда ТекущаяОшибка.Количество = ТекущаяОшибка.Количество + 1; @@ -271,7 +271,7 @@ КонецЕсли; Замечания.Вставить(КлючОшибки, ТекущаяОшибка); - + КонецЦикла; Если БольшеНетДанных(Ответ) Тогда @@ -313,7 +313,7 @@ URL = СтрШаблон("issues/bulk_change?do_transition=wontfix&comment=%1&issues=", Комментарий); URLДобавленияТегов = СтрШаблон("issues/bulk_change?add_tags=%1&issues=", Теги); - + ЗамечанияДляОбработки = Новый Массив(); Для Каждого Замечание Из ЗакрываемыеЗамечания Цикл @@ -357,10 +357,10 @@ Для Каждого Метрика Из ТребуемыеМетрики Цикл МетрикиСтрокой = МетрикиСтрокой + ?(ПустаяСтрока(МетрикиСтрокой), "", ",") + Метрика.Ключ; КонецЦикла; - + Метрики = Новый Структура(); ДоступныеМетрики = ДоступныеМетрики(); - + URL = "measures/component?metricKeys=" + МетрикиСтрокой + "&component=" + ОписаниеПроекта.Код; Ответ = ВыполнитьЗапрос(АдресСервера, Токен, URL, "GET"); @@ -389,7 +389,7 @@ КонецЦикла; Возврат Метрики; - + КонецФункции // ДоступныеМетрики @@ -428,9 +428,9 @@ Результат.Вставить("new_minor_violations", "Незначительные замечания в новом коде"); Результат.Вставить("duplicated_blocks", "Дублирующиеся участки кода"); Результат.Вставить("new_duplicated_blocks", "Дублирующиеся участки в новом коде"); - + Возврат Результат; - + КонецФункции /////////////////////////////////////////////////////////////////// @@ -440,7 +440,7 @@ Функция БольшеНетДанных(ОтветСервера) Возврат ОтветСервера.paging.pageSize * ОтветСервера.paging.pageIndex >= ОтветСервера.paging.total; - + КонецФункции Функция ПолучитьХэшЗамечания(ОписаниеОшибки) @@ -450,17 +450,31 @@ Возврат Хэш + ОписаниеОшибки.hash + ?(ОписаниеОшибки.Свойство("line"), ОписаниеОшибки.line, ""); Иначе Возврат Хэш + ?(ОписаниеОшибки.Свойство("textRange"), - "" + ОписаниеОшибки.textRange.startLine + ОписаниеОшибки.textRange.endLine - + ОписаниеОшибки.textRange.startOffset + ОписаниеОшибки.textRange.endOffset, - ""); + "" + ОписаниеОшибки.textRange.startLine + ОписаниеОшибки.textRange.endLine + + ОписаниеОшибки.textRange.startOffset + ОписаниеОшибки.textRange.endOffset, + ""); КонецЕсли; - + КонецФункции -Функция ВыполнитьЗапрос(АдресСервера, Токен, URL, Операция) +Функция ВыполнитьЗапрос(Знач АдресСервера, Токен, URL, Операция) + + Префикс = "/"; + Если СтрНайти(АдресСервера, "/") > 2 Тогда + ЭлементыАдреса = СтрРазделить(АдресСервера, "/", Истина); + АдресСервера = ЭлементыАдреса[0] + "/" + ЭлементыАдреса[1] + "/" + ЭлементыАдреса[2]; + Для Ит = 3 По ЭлементыАдреса.Количество() - 1 Цикл + Если НЕ ЗначениеЗаполнено(ЭлементыАдреса[Ит]) Тогда + Продолжить; + КонецЕсли; + + Префикс = Префикс + ЭлементыАдреса[Ит] + "/"; + КонецЦикла; + КонецЕсли; HTTPЗапрос = Новый HTTPЗапрос; - HTTPЗапрос.АдресРесурса = "/api/" + URL; + HTTPЗапрос.АдресРесурса = Префикс + "api/" + URL; + Сообщить(HTTPЗапрос.АдресРесурса); HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json"); HTTP = Новый HTTPСоединение(АдресСервера, , Токен); @@ -473,14 +487,13 @@ Если ОтветHTTP.КодСостояния = 200 Тогда json = Новый ЧтениеJSON(); json.УстановитьСтроку(ОтветHTTP.ПолучитьТелоКакСтроку()); - // Сообщить(ОтветHTTP.ПолучитьТелоКакСтроку()); Возврат ПрочитатьJson(json); КонецЕсли; ТекстИсключения = СтрШаблон("Код ответа: %1 - |Ответ: %2 - |URL: %3", - ОтветHTTP.КодСостояния, ОтветHTTP.ПолучитьТелоКакСтроку(), URL); + |Ответ: %2 + |URL: %3", + ОтветHTTP.КодСостояния, ОтветHTTP.ПолучитьТелоКакСтроку(), URL); ВызватьИсключение ТекстИсключения; КонецФункции @@ -494,13 +507,13 @@ URL = URL + "&statuses=" + СтатусыСтрокой; КонецЕсли; ОтветСервера = ВыполнитьЗапрос(АдресСервера, Токен, URL, "GET"); - + Возврат ОтветСервера.total; - + КонецФункции Функция ПолучитьКлючиКомпонентов(АдресСервера, Токен, КлючКомпонента, СтатусыСтрокой, ТолькоКаталоги = Истина) - + КлючиКомпонент = Новый СписокЗначений(); КоличествоЗамечанийПроекта = ПолучитьКоличествоЗамечанийКомпонента(АдресСервера, Токен, КлючКомпонента, СтатусыСтрокой); Если КоличествоЗамечанийПроекта > МаксимальныйРазмерПорцииДанных Тогда