bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

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

Open artbear opened this issue 3 years ago • 10 comments

Описание

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

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

Closes #995

Чеклист

Общие

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

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

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

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

artbear avatar Jun 26 '22 20:06 artbear

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

nixel2007 avatar Jun 27 '22 21:06 nixel2007

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

asosnoviy avatar Jun 28 '22 07:06 asosnoviy

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

nixel2007 avatar Jun 28 '22 08:06 nixel2007

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

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

artbear avatar Jun 28 '22 12:06 artbear

Запушил исправления правила, но найден баг https://github.com/1c-syntax/bsl-language-server/issues/2832

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

artbear avatar Jul 01 '22 14:07 artbear

~После вливания исправительного ПР https://github.com/1c-syntax/bsl-language-server/pull/2833 это правило проходит тесты!~

artbear avatar Jul 03 '22 16:07 artbear

Даже после вливания исправительного ПР https://github.com/1c-syntax/bsl-language-server/pull/2833 это правило не проходит тесты! т.к. нельзя получить ссылки на приватные методы общих модулей и менеджеров объектов через ReferenceIndex.getReferencesXXX

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

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

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

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

artbear avatar Jul 03 '22 17:07 artbear

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

artbear avatar Sep 25 '22 10:09 artbear

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

otymko avatar Oct 16 '22 17:10 otymko

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

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

artbear avatar Nov 05 '22 13:11 artbear

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

otymko avatar Nov 08 '22 03:11 otymko

@nixel2007 вливаем?

theshadowco avatar Dec 12 '22 19:12 theshadowco