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

[MOD] MissingCommonModuleMethod - поддержка модулей менеджеров, но без контекста платформенные метода метаданных будут ошибками #2926

Open
artbear opened this issue Nov 5, 2022 · 0 comments
Labels
component/diagnostics Доработка / создание диагностики type/discuss

Comments

@artbear
Copy link
Contributor

artbear commented Nov 5, 2022

Диагностика

MissingCommonModuleMethod

Описание предлагаемых изменений

В продолжение

Вопрос - как отличить методы платформы и методы менеджера без контекста?

    Справочники.Справочник1.НесуществующийМетод(); // ошибка
    Справочники.Справочник1.Тест(); // ошибка
    Справочники.Справочник1.ТестЭкспортная(); // не ошибка

    // не должно быть ошибкой, но без контекста правило не может узнать, что это метод платформы
    А = Справочники.Справочник1.НайтиПоКоду(1); // ошибка

вижу 2 варианта решение без контекста

  • не искать ошибки вызовов несуществующих методов в модулях менеджеров
    не хочется

  • искать ошибки, но популярные методы от платформы пропустить

    • или добавить настройку исключений в правило

Нужно доработать

  • к фильтру
    .filter(symbolOccurrence -> symbolOccurrence.getSymbol().getModuleType() == ModuleType.CommonModule)
  • добавить условие
    || symbolOccurrence.getSymbol().getModuleType() == ModuleType.ManagerModule
  • а также исправить показ сообщений по замечанию
  • добавить тест
Процедура Тест5_МодулиМенеджеров()
    Справочники.Справочник1.НесуществующийМетод(); // ошибка
    Справочники.Справочник1.Тест(); // ошибка
    Справочники.Справочник1.ТестЭкспортная(); // не ошибка

    // не должно быть ошибкой, но без контекста правило не может узнать, что это метод платформы
    А = Справочники.Справочник1.НайтиПоКоду(1); // ошибка

    Документы.НесуществующийДокумент.НесуществующийМетод(1); // TODO решить, считать ли подобное ошибкой
КонецПроцедуры
  • ну и само имя правило поменять, убрать из имени "общие модули"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/diagnostics Доработка / создание диагностики type/discuss
Projects
None yet
Development

No branches or pull requests

1 participant