Skip to content

Commit a0c1877

Browse files
authored
Merge pull request #2860 from artbear/line-break
[FP] IncorrectLineBreak - не ругаемся на висячую запятую
2 parents bfe95a0 + 8bbd6bd commit a0c1877

File tree

4 files changed

+41
-8
lines changed

4 files changed

+41
-8
lines changed

docs/diagnostics/IncorrectLineBreak.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@
2121
* логические операторы И, ИЛИ ставятся в начале строки, а не в конце предыдущей строки;
2222
* все условия предваряются стандартным отступом, либо выравниваются по началу первого условия, без учета логического оператора (для выравнивания выражений относительно первой строки рекомендуется использовать пробелы).
2323

24+
**Примеры настройки исключений:**
25+
26+
- Если стандарт вашей команды требует, чтобы закрывающая скобка и разделитель операторов ";" были написаны *после* строки, на которой указан последний параметр, нужно исправить настройку параметра `listOfIncorrectFirstSymbol`
27+
- вместо подстроки `|\);` (в конце настройки) нужно написать подстроку `|\)\s*;\s*\S+`
28+
- пример финальной строки `\)|;|,\s*\S+|\)s*;\s*\S+`
29+
- пример кода указан в секции примеров
30+
31+
Без указанной настройки правило будет выдавать замечания на закрывающую скобка и разделитель операторов ";", если они на отдельной строке.
32+
2433
## Примеры
2534
<!-- В данном разделе приводятся примеры, на которые диагностика срабатывает, а также можно привести пример, как можно исправить ситуацию -->
2635

@@ -48,6 +57,25 @@
4857
+ СуммаАвтоматическойСкидки;
4958
```
5059

60+
Пример возможного расположения параметров и закрывающей скобки с разделителем операторов ";"
61+
62+
```bsl
63+
ИменаДокументов = Новый СписокЗначений;
64+
ИменаДокументов.Добавить(Метаданные.Документы.СтрокаВыпискиРасход.Имя,
65+
Метаданные.Документы.СтрокаВыпискиРасход.Синоним);
66+
```
67+
68+
Пример возможного расположения закрывающей скобки с разделителем операторов ";" на отдельной строке:
69+
- без изменения параметра `listOfIncorrectFirstSymbol`, описанного выше, правило будет выдавать замечание на такой перенос выражений.
70+
71+
```bsl
72+
ИменаДокументов = Новый СписокЗначений;
73+
ИменаДокументов.Добавить(
74+
Метаданные.Документы.СтрокаВыпискиРасход.Имя,
75+
Метаданные.Документы.СтрокаВыпискиРасход.Синоним
76+
);
77+
```
78+
5179
## Источники
5280
<!-- Необходимо указывать ссылки на все источники, из которых почерпнута информация для создания диагностики -->
5381

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectLineBreakDiagnostic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class IncorrectLineBreakDiagnostic extends AbstractDiagnostic {
4949
// check first symbol
5050
private static final boolean DEFAULT_CHECK_START = true;
5151
// forbidden characters at the beginning of the line
52-
private static final String DEFAULT_LIST_FOR_CHECK_START = "\\)|;|,|\\);";
52+
private static final String DEFAULT_LIST_FOR_CHECK_START = "\\)|;|,\\s*\\S+|\\);";
5353
// check last symbol
5454
private static final boolean DEFAULT_CHECK_END = true;
5555
// forbidden end-of-line characters

src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/IncorrectLineBreakDiagnosticTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ class IncorrectLineBreakDiagnosticTest extends AbstractDiagnosticTest<IncorrectL
3737
@Test
3838
void test() {
3939

40-
Map<String, Object> configuration = diagnosticInstance.getInfo().getDefaultConfiguration();
41-
diagnosticInstance.configure(configuration);
4240
List<Diagnostic> diagnostics = getDiagnostics();
4341

4442
assertThat(diagnostics, true)
@@ -49,10 +47,10 @@ void test() {
4947
.hasRange(20, 49, 50)
5048
.hasRange(69, 80, 83)
5149
.hasRange(82, 89, 92)
52-
.hasRange(44, 25, 26)
53-
.hasRange(46, 25, 26)
54-
.hasRange(58, 4, 5)
55-
.hasRange(60, 4, 5)
50+
.hasRange(44, 25, 76)
51+
.hasRange(46, 25, 79)
52+
.hasRange(58, 4, 55)
53+
.hasRange(60, 4, 58)
5654
.hasRange(101, 2, 3)
5755
.hasRange(105, 2, 3)
5856
.hasRange(109, 2, 3)
@@ -88,7 +86,7 @@ void testTrailingBraceCodestyle() {
8886

8987
List<Diagnostic> diagnostics = getDiagnostics();
9088

91-
assertThat(diagnostics).hasSize(11);
89+
assertThat(diagnostics).hasSize(12);
9290
assertThat(diagnostics, true)
9391
.hasRange(6, 32, 33)
9492
.hasRange(7, 35, 36)
@@ -101,6 +99,7 @@ void testTrailingBraceCodestyle() {
10199
.hasRange(46, 25, 26)
102100
.hasRange(58, 4, 5)
103101
.hasRange(60, 4, 5)
102+
.hasRange(134, 4, 5)
104103
;
105104

106105
}

src/test/resources/diagnostics/IncorrectLineBreakDiagnostic.bsl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,9 @@
128128

129129
// Pass
130130
// Структура -
131+
132+
ЗафиксироватьОшибку(
133+
ИмяСобытияЖР(),
134+
УровеньЖурналаРегистрации.Ошибка,
135+
, // не ошибка
136+
ТекстОшибки);

0 commit comments

Comments
 (0)