Skip to content
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

Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod - ГОТОВО #2827

Merged
merged 20 commits into from
Dec 21, 2022

Conversation

artbear
Copy link
Contributor

@artbear artbear commented Jun 26, 2022

Описание

  • реализация правила
  • обработка исключений
  • проверка на БСП 3.1, БСП 3.0 с доработками и КА 2.5 с доработками

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

Closes #995

Чеклист

Общие

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

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

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

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

@nixel2007
Copy link
Member

Блин, а зачем так сложно-то? Ты по сути повторил работу референс индекс филлера. Хрен с ним с апи, давай просто заинжектим символьный репозиторий и ты попробуешь разрезолвить все mdoRef и их методы.

@asosnoviy
Copy link
Member

а я не понял почему только общие модули?

@nixel2007
Copy link
Member

модули менеджера еще можно. для остального нужен тайп резолвер

@artbear
Copy link
Contributor Author

artbear commented Jun 28, 2022

Еще раз проверю работу реф.индекса для общих модулей и модулей менеджеров.

  • что-то у меня не получилось с ними, использовал почти обычный вариант.
  • он не сложный, просто разбор имени и все.

вместо работы с аст-деревом
@artbear artbear changed the title Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod WIP: Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod Jul 1, 2022
@artbear
Copy link
Contributor Author

artbear commented Jul 1, 2022

Запушил исправления правила, но найден баг #2832

Перевел в WIP, пока баг не будет решен

@artbear
Copy link
Contributor Author

artbear commented Jul 3, 2022

После вливания исправительного ПР #2833 это правило проходит тесты!

@artbear
Copy link
Contributor Author

artbear commented Jul 3, 2022

Даже после вливания исправительного ПР #2833 это правило не проходит тесты!
т.к. нельзя получить ссылки на приватные методы общих модулей и менеджеров объектов через ReferenceIndex.getReferencesXXX

проблему я зафиксировал в https://t.me/bsl_language_server/98986

Предложение - проверку приватности символа лучше не закрывать внутри реф.индекса, а отдать наружу для клиента
например, в класс Reference добавить спец.поле isAccessible

пусть клиенты решают

моему правилу без этого фичу с ошибочным приватным вызовом не решить (
или придется влезать во внутренности реф.индекса и через спринг добывать locationRepository или symbolOccurrenceRepository
ведь в них-то инфа хранится ))

@sonarcloud
Copy link

sonarcloud bot commented Jul 24, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 3 Code Smells

90.7% 90.7% Coverage
0.0% 0.0% Duplication

@artbear artbear changed the title WIP: Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod Jul 26, 2022
@artbear
Copy link
Contributor Author

artbear commented Sep 25, 2022

@theshadowco @nixel2007 правило готово. примите его, если нет возражений.

@artbear artbear changed the title Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod Новое правило - Обращение к отсутствующему методу общего модуля MissingCommonModuleMethod - ГОТОВО Sep 25, 2022
locationRepository.getSymbolOccurrencesByLocationUri(documentContext.getUri())
.filter(symbolOccurrence -> symbolOccurrence.getOccurrenceType() == OccurrenceType.REFERENCE)
.filter(symbolOccurrence -> symbolOccurrence.getSymbol().getSymbolKind() == SymbolKind.Method)
// TODO какие еще типы модулей поддержать? модули менеджеров - путаница с платформенными методами, без контекста не решить
Copy link
Member

Choose a reason for hiding this comment

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

@artbear, не плохо было бы повесить issue на TODO и сразу его писать сюда.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

пока решаю так

а текущее правило будет только проверять только общие модули

Copy link
Member

Choose a reason for hiding this comment

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

@artbear а номер задачи в TODO можешь еще написать?)

@otymko
Copy link
Member

otymko commented Oct 16, 2022

@artbear, я немного отписался в ревью, посмотри, пожалуйста.

@sonarcloud
Copy link

sonarcloud bot commented Nov 5, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

94.4% 94.4% Coverage
0.0% 0.0% Duplication

@artbear
Copy link
Contributor Author

artbear commented Nov 5, 2022

После исправлений проверил правило через Sarif на 3х конфигурациях - БСП, самописка на БСП, большая КА 2.5 с доработками

работает верно.

@otymko
Copy link
Member

otymko commented Nov 8, 2022

@nixel2007, @asosnoviy у вас остались вопросы к ПР?

@theshadowco
Copy link
Member

@nixel2007 вливаем?

@otymko otymko added this to the 0.21.0 milestone Dec 21, 2022
@otymko otymko merged commit 85d0907 into 1c-syntax:develop Dec 21, 2022
@artbear artbear deleted the MissingMethodOCommonModule branch December 21, 2022 06:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[NEW]Обращение к отсутствующему методу общего модуля
5 participants