Необходимо написать метод на Ruby который разбирает log файл
1 000 руб. за проект
Необходимо написать метод на 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...
Сам файл скину.
Реализовать в виде обычного метода (далее будет интегрироваться в 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...
Сам файл скину.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.