Skip to content

Commit c4d9edc

Browse files
committed
параметр для перехода по нави-ссылкам
1 parent ae9d7b8 commit c4d9edc

File tree

5 files changed

+67
-7
lines changed

5 files changed

+67
-7
lines changed

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

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@
2222
package com.github._1c_syntax.bsl.languageserver.diagnostics;
2323

2424
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata;
25+
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticParameter;
2526
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticScope;
2627
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity;
2728
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag;
2829
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType;
2930
import com.github._1c_syntax.utils.CaseInsensitivePattern;
3031

32+
import java.util.Map;
3133
import java.util.regex.Pattern;
3234

3335
@DiagnosticMetadata(
@@ -41,15 +43,34 @@
4143

4244
)
4345
public class ExternalAppStartingDiagnostic extends AbstractFindMethodDiagnostic {
44-
private static final Pattern messagePattern = CaseInsensitivePattern.compile(
46+
private static final String MAIN_PATTERN_STRING =
4547
"КомандаСистемы|System|ЗапуститьПриложение|RunApp|НачатьЗапускПриложения|BeginRunningApplication" +
46-
"|ЗапуститьПриложениеАсинх|RunAppAsync|ПерейтиПоНавигационнойСсылке|GotoURL" +
47-
"|ОткрытьНавигационнуюСсылку|ЗапуститьПрограмму|ОткрытьПроводник|ОткрытьФайл"
48-
);
48+
"|ЗапуститьПриложениеАсинх|RunAppAsync|ЗапуститьПрограмму|ОткрытьПроводник|ОткрытьФайл";
49+
private static final String PATTERN_STRING_FOR_NAVI =
50+
"|ПерейтиПоНавигационнойСсылке|GotoURL|ОткрытьНавигационнуюСсылку";
4951
// TODO Использование COM объектов "Wscript.Shell" и "Shell.Application" + документация в описании правила
52+
private static final Pattern MAIN_PATTERN = CaseInsensitivePattern.compile(MAIN_PATTERN_STRING);
53+
private static final Pattern FULL_PATTERN = CaseInsensitivePattern.compile(
54+
MAIN_PATTERN_STRING + PATTERN_STRING_FOR_NAVI);
55+
private static final boolean CHECK_GOTO_URL = true;
56+
57+
@DiagnosticParameter(
58+
type = Boolean.class,
59+
defaultValue = "" + CHECK_GOTO_URL
60+
)
61+
private boolean checkGotoUrl = CHECK_GOTO_URL;
5062

5163
public ExternalAppStartingDiagnostic() {
52-
super(messagePattern);
64+
super(FULL_PATTERN);
5365
}
5466

67+
@Override
68+
public void configure(Map<String, Object> configuration) {
69+
super.configure(configuration);
70+
if (checkGotoUrl){
71+
setMethodPattern(FULL_PATTERN);
72+
} else {
73+
setMethodPattern(MAIN_PATTERN);
74+
}
75+
}
5576
}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
diagnosticMessage=Check the launch of an external application
22
diagnosticName=External applications starting
3+
checkGotoUrl=Check navigation links
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
diagnosticMessage=Проверьте запуск внешнего приложения
22
diagnosticName=Запуск внешних приложений
3+
checkGotoUrl=Проверять переход по навигационным ссылкам

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

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.junit.jupiter.api.Test;
2626

2727
import java.util.List;
28+
import java.util.Map;
2829

2930
import static com.github._1c_syntax.bsl.languageserver.util.Assertions.assertThat;
3031

@@ -54,7 +55,34 @@ void test() {
5455
.hasRange(24, 26, 37)
5556
.hasRange(25, 26, 37)
5657
.hasRange(35, 10, 34)
57-
.hasSize(15)
58-
;
58+
.hasSize(15);
59+
}
60+
61+
@Test
62+
void testConfigure() {
63+
64+
Map<String, Object> configuration = diagnosticInstance.info.getDefaultConfiguration();
65+
configuration.put("checkGotoUrl", false);
66+
diagnosticInstance.configure(configuration);
67+
68+
List<Diagnostic> diagnostics = getDiagnostics();
69+
70+
assertThat(diagnostics, true)
71+
.hasRange(8, 4, 18)
72+
.hasRange(9, 4, 23)
73+
.hasRange(10, 4, 23)
74+
.hasRange(12, 4, 26)
75+
// .hasRange(14, 4, 32)
76+
// .hasRange(15, 26, 52)
77+
// .hasRange(16, 26, 52)
78+
.hasRange(18, 26, 44)
79+
.hasRange(19, 26, 44)
80+
.hasRange(20, 20, 38)
81+
.hasRange(21, 20, 38)
82+
.hasRange(23, 26, 42)
83+
.hasRange(24, 26, 37)
84+
.hasRange(25, 26, 37)
85+
.hasRange(35, 10, 34)
86+
.hasSize(12);
5987
}
6088
}

src/test/resources/diagnostics/ExternalAppStartingDiagnostic.bsl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,12 @@
3535

3636
Ждать ЗапуститьПриложениеАсинх(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения); // есть замечание
3737
КонецПроцедуры
38+
39+
&НаСервере
40+
Процедура ПараметрНаИмяВнешнегоПриложения()
41+
СтрокаКоманды = "";
42+
ТекущийКаталог = "";
43+
ДождатьсяЗавершения = Истина;
44+
45+
МойОбщийМодуль.ЗапуститьВнешнееПриложение(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения); // есть замечание
46+
КонецПроцедуры

0 commit comments

Comments
 (0)