|
|
Правила:
|
|
|
Программа осуществляет проверку используя заданный набор правил. Правила задаются в файле Rules.txt.
|
|
|
Для задания правил необходимо воспользоваться следующим шаблоном:
|
|
|
|
|
|
```
|
|
|
# T= T1, T2, ... [ TB= TB1, TB2, … ] [ TA= TA1, TA2, … ]
|
|
|
{
|
|
|
…
|
|
|
}
|
|
|
```
|
|
|
|
|
|
T - типы лексем, к которым будет применено правило.
|
|
|
B - типы лексем перед лексемами T.
|
|
|
TA - типы лексем после T.
|
|
|
TB и TA являются необязательными аргументами, их можно не указывать, тогда правило будет применено при любых TB и TA.
|
|
|
Описание правила начинается с символа “#”. В блоке { } задаются условия, которые необходимо соблюдать, для этого правила.
|
|
|
|
|
|
При указании типов лексем можно применять оператор "!" (отрицание), правило будет применено ко всем типам лексем кроме этого).
|
|
|
При указании условий можно применять оператор "||" (или), правило будет успешно пройдено, если не нарушено хотя бы одно из условий.
|
|
|
|
|
|
Новые правила для одной и той же лексемы накладываются на ранее заданные.
|
|
|
|
|
|
[Список поддерживаемых лексем](http://git.iu7.bmstu.ru/IU7-Projects/CodeChecker/wikis/type-list)
|
|
|
|
|
|
|
|
|
Существующие условия:
|
|
|
|
|
|
| Условие | Описание|
|
|
|
| :--: | :--: |
|
|
|
|SpacesBefore= |Пробелы до|
|
|
|
|SpacesAfter= |Пробелы после|
|
|
|
|LinesBefore= |Пустые строки до|
|
|
|
|LinesAfter= |Пустые строки после|
|
|
|
|MaxLength= |Максимальная длина лексемы|
|
|
|
|FirstSymbolRegister= |Регистр первого символа|
|
|
|
|CanBe_= |Допускается ли наличие нижнего подчеркивания в лексеме|
|
|
|
|Register= |Регистр лексемы (полностью нижний или верхний) |
|
|
|
|FirstSymbolIs= |Первый символ лексемы |
|
|
|
|FirstSymbolIsNot= |Первый символ лексемы не |
|
|
|
|
|
|
|
|
|
Примеры:
|
|
|
|
|
|
|
|
|
Условие "пробел после" задается для оператора return, если за ним не стоит ;
|
|
|
```
|
|
|
# T= T_RETURN TA= !T_TERMINATOR
|
|
|
{
|
|
|
SpacesAfter=1
|
|
|
}
|
|
|
```
|
|
|
Условие "пробел до" или " пустая строка до" задаются для } при инициализации. При выполнении любого из условий правило будет соблюдено.
|
|
|
|
|
|
```
|
|
|
# T= T_INIT_LIST_CLOSE
|
|
|
{
|
|
|
SpacesBefore=1 || LinesBefore=1
|
|
|
}
|
|
|
```
|
|
|
Условие "конец строки до " и "конец строки после" задаются для { блоков, структур, конструкции switch-case и перечислений.
|
|
|
|
|
|
```
|
|
|
# T= T_BLOCK_OPEN_BRACE, T_STRUCT_OPEN_BRACE, T_SWITCH_OPEN_BLOCK, T_ENUM_OPEN_BRACE
|
|
|
{
|
|
|
LinesBefore=1
|
|
|
LinesAfter=1
|
|
|
}
|
|
|
```
|
|
|
|
|
|
[ Добавление новых условий ](http://git.iu7.bmstu.ru/IU7-Projects/CodeChecker/wikis/add-rules) |
|
|
\ No newline at end of file |