-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
91 lines (57 loc) · 4.16 KB
/
Copy pathREADME
File metadata and controls
91 lines (57 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Описание.
Этот перловый скрипт предназначен для простой проверки синтаксиса
файла с конфигурацией модели. Файл моделей это шаблон m4, по которому
создаётся файл radsh, используемый при импорте в TBSM (IBM
продукт). Описание см. проект model-creator
https://github.com/VIl1aIn/model-creator
Скрипт просто проверяет по словарю и базовый синтаксис, не более.
Сделано, ну или будет:
Проверяем только:
- Орфографию слов по словарю
- Минимальную корректность синтаксиса
По результату проверки выдаст "OK" либо строку и слово, которое не
понравилось.
Вызов.
скрипт проверки файлов шаблонов на орфографию
вызов так:
check-srv-syntax.pl [<имя mc файла> [<имя словаря>]]
Файл словаря ищется в текущем каталоге. Если не задан, то используется
имя dictionary.txt
Описание начинки.
Функция *okOut*
Форматированный вывод в случае отсутствия ошибок в проверяемом файле
Функция *errOut*
Форматированный вывод трех параметров из массива @result:
- Номер строки где есть ошибка
- Слово где есть ошибка
- Целиком ошибочная строка
Функции *thinCheck*
Выполняет "тонкую" проверку слов по алгоритму:
Меняем символы в проверяемом слове на "@" по маске слова из словаря.
Подсчитываем кол-во совпадений. Если совпадений нет или их меньше
порога, считаем что это комментарий и ошибки нет. Иначе высока
вероятность, что это ошибка в слове.
Дополнительно проверяем длины слова и слова из словаря, чтобы исключить
реакцию на создаваемые макросы типа: _template_AlertKey
Функция *checkComment*
Пропускает строки, не подлежащие проверке.
Сейчас это:
- Комментарии "# Text", "dnl Comment".
- Пустые и незначимые строки
- Строки, начинающиеся макросами, созданными внутри документа. По
внутреннему соглашению это строки начинающиеся с "__" (двух
подчеркиваний).
Функция *checkSyntax*
Получает на вход строку из файла шаблона и выполняет такие шаги:
- Выделяет из строки первое и последнее слово по символам "(", ")",
при этом дополнительно последнюю фразу делит на слова по символам "
". Требуется для проверки конструкции типа:
dnl Здесь текст комментария
MACROS(val1,val2,...,valN)dnl Тоже комментарии
- Прогоняет слова на соответсвие словам из словаря. Если соответствия
не найдено, то использует процедуру тонкой проверки *thinCheck*
Возвращает строку:
- "OK" если все нормально, ошибок нет
- Ошибочные слово(а) в формате "[первое слово:][последнее слово]"
(c) VIl
19.08.2016