-
Notifications
You must be signed in to change notification settings - Fork 105
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a9ac745
commit 09032f7
Showing
11 changed files
with
262 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# Ошибка разбора текста запроса (BrokenQuery) | ||
|
||
| Тип | Поддерживаются<br>языки | Важность | Включена<br>по умолчанию | Время на<br>исправление (мин) | Теги | | ||
|:-------------:|:-----------------------------:|:--------:|:------------------------------:|:-----------------------------------:|:------------------------------------------------:| | ||
| `Дефект кода` | `BSL` | `Важный` | `Да` | `5` | `standard`<br>`sql`<br>`badpractice` | | ||
|
||
<!-- Блоки выше заполняются автоматически, не трогать --> | ||
## Описание диагностики | ||
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу --> | ||
|
||
При написании текста запроса необходимо следовать следующему правилу: текст запроса должен быть написан таким образом, что бы он мог быть открыт конструктором запросов. | ||
|
||
Следование этому правилу позволяет осуществлять быструю проверку корректности синтаксиса запроса, а также доработку и сопровождение. | ||
|
||
## Примеры | ||
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию --> | ||
|
||
Неправильно | ||
|
||
```bsl | ||
ТекстЗапроса = "ВЫБРАТЬ | ||
| Номенклатура.Наименование КАК Наименование , | ||
| Номенклатура. " + ИмяПоляКод + " КАК КодАртикул | ||
|ИЗ | ||
| Справочник.Номенклатура КАК Номенклатура"; | ||
``` | ||
|
||
Правильно | ||
|
||
```bsl | ||
ТекстЗапроса = "ВЫБРАТЬ | ||
| Номенклатура.Наименование КАК Наименование , | ||
| &ИмяПоляЗапроса КАК КодАртикул | ||
|ИЗ | ||
| Справочник.Номенклатура КАК Номенклатура"; | ||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, | ||
"&ИмяПоляКод", | ||
"Номенклатура." + ИмяПоляКод); | ||
``` | ||
|
||
## Источники | ||
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики --> | ||
<!-- Примеры источников | ||
* Источник: [Стандарт: Тексты модулей](https://its.1c.ru/db/v8std#content:456:hdoc) | ||
* Полезная информация: [Отказ от использования модальных окон](https://its.1c.ru/db/metod8dev#content:5272:hdoc) | ||
* Источник: [Cognitive complexity, ver. 1.4](https://www.sonarsource.com/docs/CognitiveComplexity.pdf) --> | ||
|
||
* [Стандарт: Работа с запросами. Оформление текстов запросов](https://its.1c.ru/db/v8std#content:437:hdoc) | ||
|
||
## Сниппеты | ||
|
||
<!-- Блоки ниже заполняются автоматически, не трогать --> | ||
### Экранирование кода | ||
|
||
```bsl | ||
// BSLLS:BrokenQuery-off | ||
// BSLLS:BrokenQuery-on | ||
``` | ||
|
||
### Параметр конфигурационного файла | ||
|
||
```json | ||
"BrokenQuery": false | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# Query text parsing error (BrokenQuery) | ||
|
||
| Type | Scope | Severity | Activated<br>by default | Minutes<br>to fix | Tags | | ||
|:------------:|:-----:|:--------:|:-----------------------------:|:-----------------------:|:------------------------------------------------:| | ||
| `Code smell` | `BSL` | `Major` | `Yes` | `5` | `standard`<br>`sql`<br>`badpractice` | | ||
|
||
<!-- Блоки выше заполняются автоматически, не трогать --> | ||
## Description | ||
<!-- Описание диагностики заполняется вручную. Необходимо понятным языком описать смысл и схему работу --> | ||
|
||
## Examples | ||
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию --> | ||
|
||
## Sources | ||
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики --> | ||
<!-- Примеры источников | ||
* Источник: [Стандарт: Тексты модулей](https://its.1c.ru/db/v8std#content:456:hdoc) | ||
* Полезная информация: [Отказ от использования модальных окон](https://its.1c.ru/db/metod8dev#content:5272:hdoc) | ||
* Источник: [Cognitive complexity, ver. 1.4](https://www.sonarsource.com/docs/CognitiveComplexity.pdf) --> | ||
|
||
## Snippets | ||
|
||
<!-- Блоки ниже заполняются автоматически, не трогать --> | ||
### Diagnostic ignorance in code | ||
|
||
```bsl | ||
// BSLLS:BrokenQuery-off | ||
// BSLLS:BrokenQuery-on | ||
``` | ||
|
||
### Parameter for config | ||
|
||
```json | ||
"BrokenQuery": false | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
...main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BrokenQueryDiagnostic.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* This file is a part of BSL Language Server. | ||
* | ||
* Copyright (c) 2018-2021 | ||
* Alexey Sosnoviy <labotamy@gmail.com>, Nikita Gryzlov <nixel2007@gmail.com> and contributors | ||
* | ||
* SPDX-License-Identifier: LGPL-3.0-or-later | ||
* | ||
* BSL Language Server is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU Lesser General Public | ||
* License as published by the Free Software Foundation; either | ||
* version 3.0 of the License, or (at your option) any later version. | ||
* | ||
* BSL Language Server is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* Lesser General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Lesser General Public | ||
* License along with BSL Language Server. | ||
*/ | ||
package com.github._1c_syntax.bsl.languageserver.diagnostics; | ||
|
||
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata; | ||
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticScope; | ||
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.Trees; | ||
import com.github._1c_syntax.bsl.parser.SDBLParser; | ||
import org.antlr.v4.runtime.tree.ParseTree; | ||
|
||
@DiagnosticMetadata( | ||
type = DiagnosticType.CODE_SMELL, | ||
severity = DiagnosticSeverity.MAJOR, | ||
minutesToFix = 5, | ||
tags = { | ||
DiagnosticTag.STANDARD, | ||
DiagnosticTag.SQL, | ||
DiagnosticTag.BADPRACTICE | ||
}, | ||
scope = DiagnosticScope.BSL | ||
) | ||
public class BrokenQueryDiagnostic extends AbstractSDBLVisitorDiagnostic { | ||
|
||
@Override | ||
// анализируем каждый запрос пакета | ||
public ParseTree visitQueries(SDBLParser.QueriesContext ctx) { | ||
if (Trees.treeContainsErrors(ctx)) { | ||
diagnosticStorage.addDiagnostic(ctx); | ||
} | ||
return ctx; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
.../com/github/_1c_syntax/bsl/languageserver/diagnostics/BrokenQueryDiagnostic_en.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
diagnosticMessage=Query text must be correct | ||
diagnosticName=Query text parsing error |
2 changes: 2 additions & 0 deletions
2
.../com/github/_1c_syntax/bsl/languageserver/diagnostics/BrokenQueryDiagnostic_ru.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
diagnosticMessage=Текст запроса должен быть корректным и открываться конструктором запросов | ||
diagnosticName=Ошибка разбора текста запроса |
49 changes: 49 additions & 0 deletions
49
.../java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BrokenQueryDiagnosticTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
/* | ||
* This file is a part of BSL Language Server. | ||
* | ||
* Copyright (c) 2018-2021 | ||
* Alexey Sosnoviy <labotamy@gmail.com>, Nikita Gryzlov <nixel2007@gmail.com> and contributors | ||
* | ||
* SPDX-License-Identifier: LGPL-3.0-or-later | ||
* | ||
* BSL Language Server is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU Lesser General Public | ||
* License as published by the Free Software Foundation; either | ||
* version 3.0 of the License, or (at your option) any later version. | ||
* | ||
* BSL Language Server is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* Lesser General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU Lesser General Public | ||
* License along with BSL Language Server. | ||
*/ | ||
package com.github._1c_syntax.bsl.languageserver.diagnostics; | ||
|
||
import org.eclipse.lsp4j.Diagnostic; | ||
import org.junit.jupiter.api.Test; | ||
|
||
import java.util.List; | ||
|
||
import static com.github._1c_syntax.bsl.languageserver.util.Assertions.assertThat; | ||
|
||
class BrokenQueryDiagnosticTest extends AbstractDiagnosticTest<BrokenQueryDiagnostic> { | ||
BrokenQueryDiagnosticTest() { | ||
super(BrokenQueryDiagnostic.class); | ||
} | ||
|
||
@Test | ||
void test() { | ||
|
||
List<Diagnostic> diagnostics = getDiagnostics(); | ||
|
||
assertThat(diagnostics).hasSize(4); | ||
assertThat(diagnostics, true) | ||
.hasRange(5, 1, 6, 26) | ||
.hasRange(9, 1, 10, 59) | ||
.hasRange(14, 1, 19, 11) | ||
.hasRange(27, 1, 28, 3) | ||
; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
ТекстЗапроса = | ||
"ВЫБРАТЬ ССЫЛКА | ||
|ИЗ Справочник.Контрагенты"; | ||
|
||
ТекстЗапросаОшибка1 = | ||
"ВЫБРАТЬ | ||
|ИЗ Справочник.Контрагенты"; | ||
|
||
ТекстЗапросаОшибка2 = | ||
"ВЫБРАТЬ Поле | ||
|ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ " | ||
+ "Документ.Накладная ПО Контрагенты.Ссылка = Покупатель"; | ||
|
||
ТекстЗапросаОшибка3 = | ||
"ВЫБРАТЬ Поле | ||
|ИЗ Справочник.Контрагенты КАК Контрагенты | ||
|ЛЕВОЕ СОЕДИНЕНИЕ | ||
|Документ.Накладная ПО Контрагенты.Ссылка = Покупатель | ||
|ГДЕ | ||
| Условие >"; | ||
|
||
ТекстЗапросаОшибка4 = | ||
"ВЫБРАТЬ Поле | ||
|ИЗ Справочник.Контрагенты КАК Контрагенты | ||
|ЛЕВОЕ СОЕДИНЕНИЕ | ||
|Документ.Накладная ПО Контрагенты.Ссылка = Покупатель | ||
|; | ||
|ВЫБРАТЬ Поле | ||
|ИЗ | ||
|"; |