Skip to content

Commit d55c07a

Browse files
committed
исправил код диагностики (устранил FP)
1 parent 4fb751d commit d55c07a

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

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

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public void configure(Map<String, Object> configuration) {
122122
minWordLength = Math.max(minWordLength, DEFAULT_MIN_WORD_LENGTH);
123123
}
124124

125-
private Set<String> getWordsToIgnore() {
125+
private List<String> getWordsToIgnore() {
126126
var delimiter = ",";
127127
String exceptions = SPACES_PATTERN.matcher(info.getResourceString("diagnosticExceptions")).replaceAll("");
128128
if (!userWordsToIgnore.isEmpty()) {
@@ -134,7 +134,7 @@ private Set<String> getWordsToIgnore() {
134134
}
135135

136136
return Arrays.stream(exceptions.split(delimiter))
137-
.collect(Collectors.toSet());
137+
.collect(Collectors.toList());
138138
}
139139

140140
private static JLanguageTool acquireLanguageTool(String lang) {
@@ -148,7 +148,7 @@ private static void releaseLanguageTool(String lang, JLanguageTool languageTool)
148148
private Map<String, List<Token>> getTokensMap(
149149
DocumentContext documentContext
150150
) {
151-
Set<String> wordsToIgnore = getWordsToIgnore();
151+
List<String> wordsToIgnore = getWordsToIgnore();
152152
Map<String, List<Token>> tokensMap = new HashMap<>();
153153

154154
Trees.findAllRuleNodes(documentContext.getAst(), rulesToFind).stream()
@@ -160,18 +160,12 @@ private Map<String, List<Token>> getTokensMap(
160160
String curText = QUOTE_PATTERN.matcher(token.getText()).replaceAll("").trim();
161161
String[] camelCaseSplitWords = StringUtils.splitByCharacterTypeCamelCase(curText);
162162

163-
var camelCaseSplitWordsStream = Arrays.stream(camelCaseSplitWords);
164-
165-
if (caseInsensitive) {
166-
camelCaseSplitWordsStream = camelCaseSplitWordsStream
167-
.distinct()
168-
.map(String::toLowerCase);
169-
}
170-
171-
camelCaseSplitWordsStream
163+
Arrays.stream(camelCaseSplitWords)
172164
.filter(Predicate.not(String::isBlank))
173165
.filter(element -> element.length() >= minWordLength)
174-
.filter(Predicate.not(wordsToIgnore::contains))
166+
.filter(element -> wordsToIgnore.stream().noneMatch(word
167+
-> (caseInsensitive && word.equalsIgnoreCase(element))
168+
|| (!caseInsensitive && word.equals(element))))
175169
.forEach(element -> tokensMap.computeIfAbsent(element, newElement -> new ArrayList<>()).add(token));
176170
}
177171
);

src/test/resources/diagnostics/TypoDiagnostic.bsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
Возврат;
99
Сообщить("ыть"); // срабатывание здесь
1010
ДеньНедели = Формат(ДатаКолонки, "ДФ=ддд"); // Нет срабатывания. Форматная строка
11+
ЗапроситьДанныеОКВЭДФССВТранзакции = Истина; // Нет срабатывания. Аббревиатура
1112
КонецФункции

0 commit comments

Comments
 (0)