Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • C CodeChecker
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 3
    • Issues 3
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • IU7-Projects
  • CodeChecker
  • Wiki
  • rules

rules · Changes

Page history
hotik created page: rules authored Feb 18, 2017 by Avagyan Ashot's avatar Avagyan Ashot
Hide whitespace changes
Inline Side-by-side
rules.md 0 → 100644
View page @ d4b8332e
Правила:
Программа осуществляет проверку используя заданный набор правил. Правила задаются в файле 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
Clone repository
  • add rules
  • Home
  • install
  • main
  • rules
  • type list