-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Доработка BadWords - опция поиска по комментариям + показ запрещенного слова в замечаниях #3190
Conversation
по умолчанию включено, как и в текущем варианте по умолчанию
@@ -44,17 +48,25 @@ | |||
public class BadWordsDiagnostic extends AbstractDiagnostic { | |||
|
|||
private static final String BAD_WORDS_DEFAULT = ""; | |||
private static final boolean FIND_IN_COMMENTS = true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_DEFAULT
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
исправлено
Не запускал перфоманс тест? Насколько процентов замедляется диагностика от этой доработки? |
while (matcher.find()) { | ||
diagnosticStorage.addDiagnostic(i, matcher.start(), i, matcher.end()); | ||
diagnosticStorage.addDiagnostic(Ranges.create(i, matcher.start(), i, matcher.end()), | ||
info.getMessage(matcher.group())); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Супер
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BadWordsDiagnostic.java
Outdated
Show resolved
Hide resolved
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BadWordsDiagnostic.java
Outdated
Show resolved
Hide resolved
Matcher matcher = badWords.matcher(moduleLines[i]); | ||
var moduleLines = getContentList(); | ||
for (var i = 0; i < moduleLines.length; i++) { | ||
final var moduleLine = moduleLines[i]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Многое мусорных final
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Многое мусорных final
не согласен с этим,
мое мнение - final позволяют зафиксировать константность переменной, это полезно для понимания кода
но убрал все final у обычных переменных для принятия ПР!
Так это тест в CI проводится. |
…tics/BadWordsDiagnostic.java Co-authored-by: Nikita Fedkin <[email protected]>
…tics/BadWordsDiagnostic.java Co-authored-by: Nikita Fedkin <[email protected]>
В тесте проверяется общая производительность в параллели,а меня интересует производительность конкретной диагностики |
Не проверял, но не должно быть потерь )
|
Перебор токенов - это всегда медленно. |
1 Тем не менее, в нескольких диагностиках вполне себе юзается, и даже без параллельности
2 можно попробовать слегка ускорить через спец.стрим, как в DocumentContext::getMetrics - возможно, он работает параллельно int[] nclocData = getTokensFromDefaultChannel().stream()
.mapToInt(Token::getLine)
.distinct().toArray(); |
Я же не говорю, что не используется) я говорю, что медленно) Кстати, эту же информацию можно прям из метрики дёрнуть же, да? Она там предрассчитана и закэширована |
Да, нужный массив предрассчитан в метрике. Нормально для диагностики брать данные из метрики ? |
Не, не запрещено. Мало того, оно все равно дернется в какой-то момент - цикломатикой/когнитивкой, запросом метрик в сонаре или явно при перфоманс тесте |
использую предрассчитанное значение из метрик
использовал предрассчитанное значение, запушил |
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BadWordsDiagnostic.java
Dismissed
Show resolved
Hide resolved
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BadWordsDiagnostic.java
Show resolved
Hide resolved
src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/BadWordsDiagnostic.java
Show resolved
Hide resolved
Спасибо! |
Описание
опция поиска по комментариям
для возможности отключения поиска в комментариях
часто выдаются срабатывания, которые не влияют на поведение системы, и не нужно их обрабатывать
по умолчанию опция выключена, т.е. поведение остается, как в исходной реализации правила
показ запрещенного слова в замечаниях
в случае хитрых шаблонов поиска бывает непонятно, на какое запрещенное слово или выражение выдано замечание.
Связанные задачи
Closes #3189
Чеклист
Общие
gradlew precommit
)Для диагностик
Дополнительно