Skip to content

Conversation

@theshadowco
Copy link
Member

Описание

Новая диагностика для многократного использования строковых литералов

Связанные задачи

Closes: #1224

Чеклист

Общие

  • Ветка PR обновлена из develop
  • Отладочные, закомментированные и прочие, не имеющие смысла участки кода удалены
  • Изменения покрыты тестами
  • Обязательные действия перед коммитом выполнены (запускал команду gradlew precommit)

Для диагностик

  • Описание диагностики заполнено для обоих языков (присутствуют файлы для обоих языков, для русского заполнено все подробно, перевод на английский можно опустить)

Дополнительно

image

.collect(Collectors.groupingBy(this::getLiteralText))
.forEach((String name, List<BSLParserRuleContext> literals) -> {
if (literals.size() > allowedNumberCopies) {
List<DiagnosticRelatedInformation> relatedInformation = new ArrayList<>();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

кажется, ты забыл добавить первым related information само срабатывание диагностики (которое судя по VSCode все же нужно, хотя я все еще не уверен). иначе не вижу причин не использовать обычный toList

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нет, не забыл, пропуска элементов у меня нет

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

toList - да, согласен

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лишь бы в всц и сонаре не поплыло позиционирование :) в остальных местах первым элементом мы добавляем само срабатывание, но я уже не помню, почему

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

на скрине vsc - вроде верно прицепился

@theshadowco theshadowco force-pushed the feature/dublicateLiteral branch from 745a6d2 to c1f0a80 Compare October 7, 2021 07:16
@nixel2007 nixel2007 merged commit d7bf106 into 1c-syntax:develop Oct 7, 2021
@theshadowco theshadowco deleted the feature/dublicateLiteral branch October 7, 2021 09:26
### Особенности реализации диагностики

- Диагностика с настройками по умолчанию не учитывает регистр символов литерала, т.о. считаются одинаковыми строки `АААА` и `АааА`.
- Нельзя указать минимальное значение анализируемого литерала меньше, чем значение по умолчанию. Это обусловлено тем, что часто используются служебные литералы, которые будут сильно фонить. Например: пустая строка "", числа-селекторы "1", "0" и т.д.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

опечатка - не минимальное значение, а "минимальную длину строкового литерала (с кавычками)"

@theshadowco


- Диагностика с настройками по умолчанию не учитывает регистр символов литерала, т.о. считаются одинаковыми строки `АААА` и `АааА`.
- Нельзя указать минимальное значение анализируемого литерала меньше, чем значение по умолчанию. Это обусловлено тем, что часто используются служебные литералы, которые будут сильно фонить. Например: пустая строка "", числа-селекторы "1", "0" и т.д.
- Нельзя уменьшить допустимое количество повторов использования меньше 1, т.к. это не имеет практического смысла.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

опечатка - не меньше 1, а меньше 2, т.к. и 1, и 0 бессмысленнны

@theshadowco

public void configure(Map<String, Object> configuration) {
super.configure(configuration);
// ноль использовать нельзя
if (allowedNumberCopies < 1) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

лучше поставить < 2 или <= 1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

3 participants