Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Analysis of compilation log
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
test_files
README.txt
log_analysis.rb

README.txt

h2. Введение

В статье описан метод работы со скриптом, сравнивающим 2 файла лога компиляции (старый и новый).

h2. Возможности скрипта

Предположим, что у вас есть старый файл лога компиляции (log1.txt) и файл лога, который вы сами только что сохранили (log2.txt). Требуется сравнить эти два файла, чтобы определить, не добавилось ли новых ошибок в новой версии или патче.

Сделать это можно руками или с помощью небольшого скрипта log_analysis.rb.

Этот скрипт сравнит 2 файла и покажет:
* Сколько ошибок было в старом логе
* Сколько ошибок стало в новом логе
* Насколько уменьшилось/увеличилось общее кол-во ошибок
* Сколько новых ошибок появилось
* А также отобразит контекст появившихся ошибок

| *Примечание:* \\
Следует сказать, что некоторые логи могут содержать больше чем один блок итогов компиляции. В таком случае, сравниваться будут только последние блоки. |

h1. Установка

Скрипт написан на языке Ruby, поэтому для запуска скрипта надо сначала установить среду Ruby. Делается это просто, с помощью обычного установщика. Установщик не требует прав администратора.

| *Примечание:* \\
Файлы установщика и самого скрипта прикреплены к данной странице.|
Во время установки укажите папку для установки, на запись в которую у вас есть доступ, например D:\Ruby192. Также во время установки разрешите установщику добавить путь до экзешника руби в PATH.

Теперь скачайте сам скрипт и запустите его таким образом:

{code}
ruby <путь до скрипта> <путь до старого лога> <путь до нового лога>
{code}

Например:
{code}
D:\projects\log_analysis> ruby log_analysis.rb D:\COMP@CNN_TEST_230611_112656.log D:\COMP@CNN_TEST_230611_123519.log
{code}

h1. Использование

Чтобы сравнить два файла лога, нужно запустить скрипт через командную строку, передав в качестве параметров сначала путь до старого лога, а затем путь до нового:

{code}
ruby log_analysis.rb log1.txt log2.txt
{code}

Скрипт запуститься и выведет информацию схожую со следующей:

{code}
D:\projects\log_analysis>ruby log_analysis.rb D:\COMP@CNN_TEST_230611_112656.log D:\COMP@CNN_TEST_230611_123519.log

Сравниваю файлы...

Старый лог: D:\COMP@CNN_TEST_230611_112656.log
Новый лог : D:\COMP@CNN_TEST_230611_123519.log

Количество блоков компиляции:
    В старом логе: 1
    В новом логе : 1
Далее будут учитываться только последние блоки компиляции

Ошибок в старом файле : 433
Ошибок в новом файле  : 260
Всего устранено ошибок: 173

Появилось новых ошибок: 5

Новые ошибки:
  1: Операция SYSTEM.CLOSE_106
  2: Операция SYSTEM.CLOSE_LDZ
  3: Операция SYSTEM.CLOSE_SOVET
  4: Операция SYSTEM.CLOSE_UVKX
  5: Операция SYSTEM.CLOSE_UZD

Контекст ошибок:

======== Контекст ошибки #1 (строка 831) ========
         185: Операция SYSTEM.CLOSE_106
                Имеет ошибки

======== Контекст ошибки #2 (строка 833) ========
         186: Операция SYSTEM.CLOSE_LDZ
                Имеет ошибки

======== Контекст ошибки #3 (строка 837) ========
         188: Операция SYSTEM.CLOSE_SOVET
                Имеет ошибки

======== Контекст ошибки #4 (строка 839) ========
         189: Операция SYSTEM.CLOSE_UVKX
                Имеет ошибки

======== Контекст ошибки #5 (строка 841) ========
         190: Операция SYSTEM.CLOSE_UZD
                Имеет ошибки
{code}

Как видно из приведенного выше ответа скрипта, в новом логе присутствует 5 ранее отсутствовавших ошибок. Однако общее количество ошибок уменьшилось на 173.

Сначала перечислены сами ошибки, затем дается более подробный контекст ошибки, с указание номера строки из файла лога, содержашего ошибку.


h1. Известные проблемы

Существует несколько известных проблем:
# Путь до файлов лога не должен включать кириллические символы
# Из-за отсутствия поддержки командной строкой кодировки utf-8, все выводимые данные кодируются в кодировке cp866 (IBM866), т.ч. при перенаправлении вывода в файл (> log.rb log1.txt log2.txt > output.txt) его кодировка будет cp866.

h2. Обратная связь

Обо всех найденных ошибках и т.д. сообщайте на адрес mailto:g.bragin@ftc.ru. Также о багах можно отписать на [github|https://github.com/BlackFoks/log_analysis].
Something went wrong with that request. Please try again.