Skip to content

[FP] MissingCommonModuleMethod на цепочке менеджера отчёта Отчеты.<Отчет>.ПолучитьФорму() #4513

Description

@McSim

Диагностика

MissingCommonModuleMethod

Версия

1.0.7 (bsl-language-server-1.0.7-exec.jar, CLI analyze), Windows, платформа 8.3.27.

Описание ложного срабатывания

В модуле управляемой формы расширения есть вызов метода менеджера отчёта:

ФормаОтчета = Отчеты.ОплатаАвансовыхСчетов.ПолучитьФорму("ОплатаАвансовыхСчетов");

Диагностика сообщает:

Метод ПолучитьФорму общего модуля Отчеты не существует

То есть цепочка Отчеты.<ИмяОтчёта>.ПолучитьФорму(...) разбирается так, будто Отчеты — это
общий модуль (или будто ПолучитьФорму ищется у общего модуля с именем Отчеты). В
действительности Отчеты — менеджер отчётов, а ПолучитьФорму — его метод, и код исполняется.

Как воспроизвести

  1. Основная конфигурация + расширение (у нас — типовая и расширение с формой списка документа).
  2. В модуле формы расширения — вызов вида Отчеты.<ИмяОтчёта>.ПолучитьФорму("<ИмяФормы>").
  3. Запуск:
java -jar bsl-language-server-1.0.7-exec.jar analyze \
  -s <общий корень, где лежат cf и cfe/<Имя>> \
  -c <конфиг> --outputDir out --reporter json --silent

Конфиг в прогоне: {"language":"ru","v8platform":{"targetVersion":"8.3.18"},"diagnostics":{"ordinaryAppSupport":true}}.

Результат: ровно одно срабатывание MissingCommonModuleMethod на этой строке (в отчёте
start_line: 211), при этом QueryToMissingMetadata — 0, то есть метаданные расширения
разрешаются корректно и дело именно в разборе цепочки менеджера.

Почему это, вероятно, отдельный случай

В трекере есть несколько FP этой диагностики про общие модули, расширенные в расширении
(#3474, #3918, #3239). Здесь случай другой: общий модуль не при чём, ломается вызов менеджера
отчёта. Возможно, причина общая — разрешение первого сегмента цепочки, — но воспроизведение
другое и воспроизводится на голой типовой без расширений общего модуля.

Если это ожидаемое ограничение (например, менеджеры отчётов не индексируются), было бы полезно
увидеть это в описании диагностики — иначе её приходится отключать целиком, теряя проверку
настоящих обращений к общим модулям.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions