Необходимо написать метод на Ruby который разбирает log файл

1 000 руб. за проект
23 июня 2022, 11:42 • 4 отклика • 30 просмотров
Необходимо написать метод на Ruby который разбирает log файл.

Реализовать в виде обычного метода (далее будет интегрироваться в fastlane), без использования сторонних библиотек.

На вход передается путь к файлу. На выходе хочется получить массив из элементов вида:

item = {
"file" => Имя файла
"time" => Время (ms)
"column" => Столбац
"line" => Строка
"place" => Место warning в коде
}

def generate_analytics(xcodebuild_log_path)
results = Array.new()

...
end

///////////////////////////////////////////////////////

Примеры структуры лог файла:

...

/Path/A/B/ActionsModelBuilder.swift:21:23: warning: expression took 19ms to type-check (limit: 10ms)
guard actions.isNotEmpty else { return nil }
~~~~~~~~^~~~~~~~~~

...

Получаем item:

item = {
"file" => "/Path/A/B/ActionsModelBuilder.swift"
"time" => 19,
"column" => 21,
"line" => 23,
"place" => "guard actions.isNotEmpty else { return nil }"
}

...

/Path/A/B/LocalizableStrings.swift:199:23: warning: static method 'tr' took 36ms to type-check (limit: 10ms)
private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {
^
item = {
"file" => "/Path/A/B/LocalizableStrings.swift"
"time" => 36,
"column" => 21,
"line" => 23,
"place" => "private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {"
}

///////////////////////////////////////////////////////

К чему можно привязаться?

1. Имя файла всегда оканчивается на .swift, есть всегда
2. Потом идет столбец:строка, есть всегда
3. took NNNNNms (число+ms) есть всегда
4. (limit: ZZZZms) - ZZZZ число, может меняься, есть всегда
5. Место возникновения warning - следующая строка.

Примерная реализация:

https://github.com/Tinkoff/fastlane-plugin-compila...

Сам файл скину.
Отзывы
R50 53279a78543875cd0ca0cebf421b057d
Заказчик
Все отлично, могу рекомендовать.
2 года назад
R50 a52b543fe64b2d2f4ac507b248015e34
Фрилансер
адекватный заказчик, легко и продуктивно
2 года назад