Skip to content

Commit 779940e

Browse files
committed
параметр произвольного шаблона поиска методов
1 parent c4d9edc commit 779940e

File tree

4 files changed

+48
-10
lines changed

4 files changed

+48
-10
lines changed

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ public class ExternalAppStartingDiagnostic extends AbstractFindMethodDiagnostic
4848
"|ЗапуститьПриложениеАсинх|RunAppAsync|ЗапуститьПрограмму|ОткрытьПроводник|ОткрытьФайл";
4949
private static final String PATTERN_STRING_FOR_NAVI =
5050
"|ПерейтиПоНавигационнойСсылке|GotoURL|ОткрытьНавигационнуюСсылку";
51-
// TODO Использование COM объектов "Wscript.Shell" и "Shell.Application" + документация в описании правила
52-
private static final Pattern MAIN_PATTERN = CaseInsensitivePattern.compile(MAIN_PATTERN_STRING);
5351
private static final Pattern FULL_PATTERN = CaseInsensitivePattern.compile(
5452
MAIN_PATTERN_STRING + PATTERN_STRING_FOR_NAVI);
5553
private static final boolean CHECK_GOTO_URL = true;
@@ -60,17 +58,23 @@ public class ExternalAppStartingDiagnostic extends AbstractFindMethodDiagnostic
6058
)
6159
private boolean checkGotoUrl = CHECK_GOTO_URL;
6260

61+
@DiagnosticParameter(
62+
type = String.class,
63+
defaultValue = MAIN_PATTERN_STRING
64+
)
65+
private String userPatternString = MAIN_PATTERN_STRING;
66+
6367
public ExternalAppStartingDiagnostic() {
6468
super(FULL_PATTERN);
6569
}
6670

6771
@Override
6872
public void configure(Map<String, Object> configuration) {
6973
super.configure(configuration);
74+
var pattern = userPatternString;
7075
if (checkGotoUrl){
71-
setMethodPattern(FULL_PATTERN);
72-
} else {
73-
setMethodPattern(MAIN_PATTERN);
76+
pattern += PATTERN_STRING_FOR_NAVI;
7477
}
78+
setMethodPattern(CaseInsensitivePattern.compile(pattern));
7579
}
7680
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
diagnosticMessage=Check the launch of an external application
22
diagnosticName=External applications starting
33
checkGotoUrl=Check navigation links
4+
userPatternString=User regex pattern
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
diagnosticMessage=Проверьте запуск внешнего приложения
22
diagnosticName=Запуск внешних приложений
3-
checkGotoUrl=Проверять переход по навигационным ссылкам
3+
checkGotoUrl=Проверять переход по навигационным ссылкам
4+
userPatternString=Пользовательский шаблон (регулярное выражение)

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

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void test() {
5959
}
6060

6161
@Test
62-
void testConfigure() {
62+
void testConfigure_checkGotoUrl() {
6363

6464
Map<String, Object> configuration = diagnosticInstance.info.getDefaultConfiguration();
6565
configuration.put("checkGotoUrl", false);
@@ -72,9 +72,7 @@ void testConfigure() {
7272
.hasRange(9, 4, 23)
7373
.hasRange(10, 4, 23)
7474
.hasRange(12, 4, 26)
75-
// .hasRange(14, 4, 32)
76-
// .hasRange(15, 26, 52)
77-
// .hasRange(16, 26, 52)
75+
7876
.hasRange(18, 26, 44)
7977
.hasRange(19, 26, 44)
8078
.hasRange(20, 20, 38)
@@ -85,4 +83,38 @@ void testConfigure() {
8583
.hasRange(35, 10, 34)
8684
.hasSize(12);
8785
}
86+
87+
@Test
88+
void testConfigure_userPatternString() {
89+
90+
Map<String, Object> configuration = diagnosticInstance.info.getDefaultConfiguration();
91+
configuration.put("userPatternString", "КомандаСистемы");
92+
diagnosticInstance.configure(configuration);
93+
94+
List<Diagnostic> diagnostics = getDiagnostics();
95+
96+
assertThat(diagnostics, true)
97+
.hasRange(8, 4, 18)
98+
99+
.hasRange(14, 4, 32)
100+
.hasRange(15, 26, 52)
101+
.hasRange(16, 26, 52)
102+
103+
.hasSize(4);
104+
}
105+
106+
@Test
107+
void testConfigure_userPatternString_checkGotoUrl() {
108+
109+
Map<String, Object> configuration = diagnosticInstance.info.getDefaultConfiguration();
110+
configuration.put("checkGotoUrl", false);
111+
configuration.put("userPatternString", "КомандаСистемы");
112+
diagnosticInstance.configure(configuration);
113+
114+
List<Diagnostic> diagnostics = getDiagnostics();
115+
116+
assertThat(diagnostics, true)
117+
.hasRange(8, 4, 18)
118+
.hasSize(1);
119+
}
88120
}

0 commit comments

Comments
 (0)