Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/1294 canonical keywords in query #1878

Draft
wants to merge 6 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions docs/diagnostics/CanonicalSpellingKeywordsInQuery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# Проверка канонического написания ключевых слов в запросе (CanonicalSpellingKeywordsInQuery)

| Тип | Поддерживаются<br>языки | Важность | Включена<br>по умолчанию | Время на<br>исправление (мин) | Теги |
|:-------------:|:-----------------------------:|:----------------:|:------------------------------:|:-----------------------------------:|:----------:|
| `Дефект кода` | `BSL` | `Информационный` | `Да` | `1` | `standard` |

<!-- Блоки выше заполняются автоматически, не трогать -->
## Описание диагностики

В запросах ключевые слова пишутся канонически - заглавными буквами.

### Ключевые слова

| RU | EN |
|-------------------|-------------------|
|NULL |NULL |
|--- |OF |
|ПО |ON |
|АВТОНОМЕРЗАПИСИ |RECORDAUTONUMBER |
|АВТОУПОРЯДОЧИВАНИЕ |AUTOORDER |
|БУЛЕВО |BOOLEAN |
|В |IN |
|ВНЕШНЕЕ |OUTER |
|ВНУТРЕННЕЕ |INNER |
|ВОЗР |ASC |
|ВСЕ |ALL |
|ВЫБОР |CASE |
|ВЫБРАТЬ |SELECT |
|ВЫРАЗИТЬ |CAST |
|ГДЕ |WHERE |
|ГОД |YEAR |
|ГРУППИРУЮЩИМ |GROUPING |
|ДАТА |DATE |
|ДАТАВРЕМЯ |DATETIME |
|ДЕКАДА |TENDAYS |
|ДЕНЬ |DAY |
|ДЕНЬГОДА |DAYOFYEAR |
|ДЕНЬНЕДЕЛИ |WEEKDAY |
|ДЛЯ |EN |
|ДОБАВИТЬКДАТЕ |DATEADD |
|ЕСТЬ |IS |
|ЕСТЬNULL |ISNULL |
|ЗНАЧЕНИЕ |VALUE |
|И |AND |
|ИЕРАРХИИ |HIERARCHY |
|ИЕРАРХИЯ |HIERARCHY |
|ИЗ |FROM |
|ИЗМЕНЕНИЯ |UPDATE |
|ИЛИ |OR |
|ИМЕЮЩИЕ |HAVING |
|ИНАЧЕ |ELSE |
|ИНДЕКСИРОВАТЬ |INDEX |
|ИТОГИ |TOTALS |
|Истина |TRUE |
|КАК |AS |
|КВАРТАЛ |QUARTER |
|КОГДА |WHEN |
|КОЛИЧЕСТВО |COUNT |
|КОНЕЦ |END |
|КОНЕЦПЕРИОДА |ENDOFPERIOD |
|ЛЕВОЕ |LEFT |
|Ложь |FALSE |
|МАКСИМУМ |MAX |
|МЕЖДУ |BETWEEN |
|МЕСЯЦ |MONTH |
|МИНИМУМ |MIN |
|МИНУТА |MINUTE |
|НАБОРАМ |SETS |
|НАЧАЛОПЕРИОДА |BEGINOFPERIOD |
|НЕ |NOT |
|НЕДЕЛЯ |WEEK |
|НЕОПРЕДЕЛЕНО |UNDEFINED |
|ОБЩИЕ |OVERALL |
|ОБЪЕДИНИТЬ |UNION |
|ПЕРВЫЕ |TOP |
|ПЕРИОДАМИ |PERIODS |
|ПОДОБНО |LIKE |
|ПОДСТРОКА |SUBSTRING |
|ПОЛНОЕ |FULL |
|ПОЛУГОДИЕ |HALFYEAR |
|ПОМЕСТИТЬ |INTO |
|ПРАВОЕ |RIGHT |
|ПРЕДСТАВЛЕНИЕ |PRESENTATION |
|ПРЕДСТАВЛЕНИЕССЫЛКИ|REFPRESENTATION |
|ПУСТАЯТАБЛИЦА |EMPTYTABLE |
|РАЗЛИЧНЫЕ |DISTINCT |
|РАЗНОСТЬДАТ |DATEDIFF |
|РАЗРЕШЕННЫЕ |ALLOWED |
|СГРУППИРОВАНОПО |GROUPEDBY |
|СГРУППИРОВАТЬ |GROUP |
|СЕКУНДА |SECOND |
|СОЕДИНЕНИЕ |JOIN |
|СПЕЦСИМВОЛ |ESCAPE |
|СРЕДНЕЕ |AVG |
|ССЫЛКА |REFS |
|СТРОКА |STRING |
|СУММА |SUM |
|ТИП |TYPE |
|ТИПЗНАЧЕНИЯ |VALUETYPE |
|ТОГДА |THEN |
|ТОЛЬКО |ONLY |
|УБЫВ |DESC |
|УНИЧТОЖИТЬ |DROP |
|УПОРЯДОЧИТЬ |ORDER |
|ЧАС |HOUR |
|ЧИСЛО |NUMBER |

## Источники

* Источник: [Стандарт: Оформление текстов запросов](https://its.1c.ru/db/v8std#content:437:hdoc)

## Сниппеты

<!-- Блоки ниже заполняются автоматически, не трогать -->
### Экранирование кода

```bsl
// BSLLS:CanonicalSpellingKeywordsInQuery-off
// BSLLS:CanonicalSpellingKeywordsInQuery-on
```

### Параметр конфигурационного файла

```json
"CanonicalSpellingKeywordsInQuery": false
```
2 changes: 1 addition & 1 deletion docs/diagnostics/CodeOutOfRegion.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
#КонецОбласти
```

Таблица соответствия английских имён (полный список в [исходном коде](https://github.com/1c-syntax/bsl-language-server/blob/develop/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Keywords.java#L255)):
Таблица соответствия английских имён (полный список в [исходном коде](https://github.com/1c-syntax/bsl-language-server/blob/develop/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/BSLKeywords.java#L255)):
| русск. | англ. |
| ------------- | ------------- |
| ПрограммныйИнтерфейс | Public |
Expand Down
3 changes: 2 additions & 1 deletion docs/diagnostics/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Диагностики
# Диагностики

Используются для проверки кода на соответствие стандартам кодирования и для поиска возможных ошибок.

Expand All @@ -24,6 +24,7 @@
[BeginTransactionBeforeTryCatch](BeginTransactionBeforeTryCatch.md) | Нарушение правил работы с транзакциями для метода 'НачатьТранзакцию' | Да | Важный | Ошибка | `standard`
[CachedPublic](CachedPublic.md) | Кеширование программного интерфейса | Да | Важный | Дефект кода | `standard`<br>`design`
[CanonicalSpellingKeywords](CanonicalSpellingKeywords.md) | Каноническое написание ключевых слов | Да | Информационный | Дефект кода | `standard`
[CanonicalSpellingKeywordsInQuery](CanonicalSpellingKeywordsInQuery.md) | Проверка канонического написания ключевых слов в запросе | Да | Информационный | Дефект кода | `standard`
[CodeAfterAsyncCall](CodeAfterAsyncCall.md) | После вызова асинхронного метода есть строки кода | Нет | Важный | Дефект кода | `suspicious`
[CodeBlockBeforeSub](CodeBlockBeforeSub.md) | Определения методов должны размещаться перед операторами тела модуля | Да | Блокирующий | Ошибка | `error`
[CodeOutOfRegion](CodeOutOfRegion.md) | Код расположен вне области | Да | Информационный | Дефект кода | `standard`
Expand Down
2 changes: 1 addition & 1 deletion docs/en/diagnostics/CanonicalSpellingKeywords.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ A built-in language constructs, keywords must be written canonically.
| Функция | Function |
| Экспорт | Export |

### Preprocessor instrutions
### Preprocessor instructions

| RU | EN |
| ---------------------------------- | ------------------------------ |
Expand Down
125 changes: 125 additions & 0 deletions docs/en/diagnostics/CanonicalSpellingKeywordsInQuery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Checking the canonical spelling of keywords in a query (CanonicalSpellingKeywordsInQuery)

| Type | Scope | Severity | Activated<br>by default | Minutes<br>to fix | Tags |
|:------------:|:-----:|:--------:|:-----------------------------:|:-----------------------:|:----------:|
| `Code smell` | `BSL` | `Info` | `Yes` | `1` | `standard` |

<!-- Блоки выше заполняются автоматически, не трогать -->
## Description

### Keywords

| RU | EN |
|-------------------|-------------------|
|NULL |NULL |
|--- |OF |
|ПО |ON |
|АВТОНОМЕРЗАПИСИ |RECORDAUTONUMBER |
|АВТОУПОРЯДОЧИВАНИЕ |AUTOORDER |
|БУЛЕВО |BOOLEAN |
|В |IN |
|ВНЕШНЕЕ |OUTER |
|ВНУТРЕННЕЕ |INNER |
|ВОЗР |ASC |
|ВСЕ |ALL |
|ВЫБОР |CASE |
|ВЫБРАТЬ |SELECT |
|ВЫРАЗИТЬ |CAST |
|ГДЕ |WHERE |
|ГОД |YEAR |
|ГРУППИРУЮЩИМ |GROUPING |
|ДАТА |DATE |
|ДАТАВРЕМЯ |DATETIME |
|ДЕКАДА |TENDAYS |
|ДЕНЬ |DAY |
|ДЕНЬГОДА |DAYOFYEAR |
|ДЕНЬНЕДЕЛИ |WEEKDAY |
|ДЛЯ |EN |
|ДОБАВИТЬКДАТЕ |DATEADD |
|ЕСТЬ |IS |
|ЕСТЬNULL |ISNULL |
|ЗНАЧЕНИЕ |VALUE |
|И |AND |
|ИЕРАРХИИ |HIERARCHY |
|ИЕРАРХИЯ |HIERARCHY |
|ИЗ |FROM |
|ИЗМЕНЕНИЯ |UPDATE |
|ИЛИ |OR |
|ИМЕЮЩИЕ |HAVING |
|ИНАЧЕ |ELSE |
|ИНДЕКСИРОВАТЬ |INDEX |
|ИТОГИ |TOTALS |
|Истина |TRUE |
|КАК |AS |
|КВАРТАЛ |QUARTER |
|КОГДА |WHEN |
|КОЛИЧЕСТВО |COUNT |
|КОНЕЦ |END |
|КОНЕЦПЕРИОДА |ENDOFPERIOD |
|ЛЕВОЕ |LEFT |
|Ложь |FALSE |
|МАКСИМУМ |MAX |
|МЕЖДУ |BETWEEN |
|МЕСЯЦ |MONTH |
|МИНИМУМ |MIN |
|МИНУТА |MINUTE |
|НАБОРАМ |SETS |
|НАЧАЛОПЕРИОДА |BEGINOFPERIOD |
|НЕ |NOT |
|НЕДЕЛЯ |WEEK |
|НЕОПРЕДЕЛЕНО |UNDEFINED |
|ОБЩИЕ |OVERALL |
|ОБЪЕДИНИТЬ |UNION |
|ПЕРВЫЕ |TOP |
|ПЕРИОДАМИ |PERIODS |
|ПОДОБНО |LIKE |
|ПОДСТРОКА |SUBSTRING |
|ПОЛНОЕ |FULL |
|ПОЛУГОДИЕ |HALFYEAR |
|ПОМЕСТИТЬ |INTO |
|ПРАВОЕ |RIGHT |
|ПРЕДСТАВЛЕНИЕ |PRESENTATION |
|ПРЕДСТАВЛЕНИЕССЫЛКИ|REFPRESENTATION |
|ПУСТАЯТАБЛИЦА |EMPTYTABLE |
|РАЗЛИЧНЫЕ |DISTINCT |
|РАЗНОСТЬДАТ |DATEDIFF |
|РАЗРЕШЕННЫЕ |ALLOWED |
|СГРУППИРОВАНОПО |GROUPEDBY |
|СГРУППИРОВАТЬ |GROUP |
|СЕКУНДА |SECOND |
|СОЕДИНЕНИЕ |JOIN |
|СПЕЦСИМВОЛ |ESCAPE |
|СРЕДНЕЕ |AVG |
|ССЫЛКА |REFS |
|СТРОКА |STRING |
|СУММА |SUM |
|ТИП |TYPE |
|ТИПЗНАЧЕНИЯ |VALUETYPE |
|ТОГДА |THEN |
|ТОЛЬКО |ONLY |
|УБЫВ |DESC |
|УНИЧТОЖИТЬ |DROP |
|УПОРЯДОЧИТЬ |ORDER |
|ЧАС |HOUR |
|ЧИСЛО |NUMBER |

## Sources
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики -->

* Источник: [Стандарт: Оформление текстов запросов](https://its.1c.ru/db/v8std#content:437:hdoc)

## Snippets

<!-- Блоки ниже заполняются автоматически, не трогать -->
### Diagnostic ignorance in code

```bsl
// BSLLS:CanonicalSpellingKeywordsInQuery-off
// BSLLS:CanonicalSpellingKeywordsInQuery-on
```

### Parameter for config

```json
"CanonicalSpellingKeywordsInQuery": false
```
2 changes: 1 addition & 1 deletion docs/en/diagnostics/CodeOutOfRegion.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Correct:
#EndRegion
```

Name matching table (full in [source code](https://github.com/1c-syntax/bsl-language-server/blob/develop/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/Keywords.java#L255)):
Name matching table (full in [source code](https://github.com/1c-syntax/bsl-language-server/blob/develop/src/main/java/com/github/_1c_syntax/bsl/languageserver/utils/BSLKeywords.java#L255)):
| RU | EN |
| --------------------------------------- | ---------------------------- |
| ПрограммныйИнтерфейс | Public |
Expand Down
3 changes: 2 additions & 1 deletion docs/en/diagnostics/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Diagnostics
# Diagnostics

Used for code analysis to meet coding standards and search for possible errors.

Expand All @@ -24,6 +24,7 @@ Total: **157**
[BeginTransactionBeforeTryCatch](BeginTransactionBeforeTryCatch.md) | Violating transaction rules for the 'BeginTransaction' method | Yes | Major | Error | `standard`
[CachedPublic](CachedPublic.md) | Cached public methods | Yes | Major | Code smell | `standard`<br>`design`
[CanonicalSpellingKeywords](CanonicalSpellingKeywords.md) | Canonical keyword writing | Yes | Info | Code smell | `standard`
[CanonicalSpellingKeywordsInQuery](CanonicalSpellingKeywordsInQuery.md) | Checking the canonical spelling of keywords in a query | Yes | Info | Code smell | `standard`
[CodeAfterAsyncCall](CodeAfterAsyncCall.md) | Lines of code after the asynchronous method call | No | Major | Code smell | `suspicious`
[CodeBlockBeforeSub](CodeBlockBeforeSub.md) | Method definitions must be placed before the module body operators | Yes | Blocker | Error | `error`
[CodeOutOfRegion](CodeOutOfRegion.md) | Code out of region | Yes | Info | Code smell | `standard`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
*/
package com.github._1c_syntax.bsl.languageserver.diagnostics;

import com.github._1c_syntax.bsl.languageserver.utils.Keywords;
import com.github._1c_syntax.bsl.languageserver.utils.BSLKeywords;
import com.github._1c_syntax.bsl.parser.BSLParser;
import com.github._1c_syntax.utils.CaseInsensitivePattern;
import org.antlr.v4.runtime.tree.ParseTree;
Expand All @@ -32,7 +32,7 @@
abstract class AbstractExecuteExternalCodeDiagnostic extends AbstractVisitorDiagnostic {

private static final Pattern EVAL_METHOD_NAME = CaseInsensitivePattern.compile(
String.format("^(%s|%s)$", Keywords.EVAL_EN, Keywords.EVAL_RU));
String.format("^(%s|%s)$", BSLKeywords.EVAL_EN, BSLKeywords.EVAL_RU));

@Override
public ParseTree visitExecuteStatement(BSLParser.ExecuteStatementContext ctx) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity;
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag;
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType;
import com.github._1c_syntax.bsl.languageserver.utils.Keywords;
import com.github._1c_syntax.bsl.languageserver.utils.BSLKeywords;
import com.github._1c_syntax.mdclasses.mdo.MDCommonModule;
import com.github._1c_syntax.mdclasses.mdo.support.ModuleType;
import com.github._1c_syntax.mdclasses.mdo.support.ReturnValueReuse;
Expand All @@ -52,7 +52,7 @@
public class CachedPublicDiagnostic extends AbstractDiagnostic {

private static final Pattern PUBLIC = CaseInsensitivePattern.compile(
String.format("^(%s|%s)$", Keywords.PUBLIC_REGION_RU, Keywords.PUBLIC_REGION_EN));
String.format("^(%s|%s)$", BSLKeywords.PUBLIC_REGION_RU, BSLKeywords.PUBLIC_REGION_EN));

@Override
protected void check() {
Expand Down
Loading