Диагностика
MissingCommonModuleMethod
Версия
1.0.7 (bsl-language-server-1.0.7-exec.jar, CLI analyze), Windows, платформа 8.3.27.
Описание ложного срабатывания
В модуле управляемой формы расширения есть вызов метода менеджера отчёта:
ФормаОтчета = Отчеты.ОплатаАвансовыхСчетов.ПолучитьФорму("ОплатаАвансовыхСчетов");
Диагностика сообщает:
Метод ПолучитьФорму общего модуля Отчеты не существует
То есть цепочка Отчеты.<ИмяОтчёта>.ПолучитьФорму(...) разбирается так, будто Отчеты — это
общий модуль (или будто ПолучитьФорму ищется у общего модуля с именем Отчеты). В
действительности Отчеты — менеджер отчётов, а ПолучитьФорму — его метод, и код исполняется.
Как воспроизвести
- Основная конфигурация + расширение (у нас — типовая и расширение с формой списка документа).
- В модуле формы расширения — вызов вида
Отчеты.<ИмяОтчёта>.ПолучитьФорму("<ИмяФормы>").
- Запуск:
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). Здесь случай другой: общий модуль не при чём, ломается вызов менеджера
отчёта. Возможно, причина общая — разрешение первого сегмента цепочки, — но воспроизведение
другое и воспроизводится на голой типовой без расширений общего модуля.
Если это ожидаемое ограничение (например, менеджеры отчётов не индексируются), было бы полезно
увидеть это в описании диагностики — иначе её приходится отключать целиком, теряя проверку
настоящих обращений к общим модулям.
Диагностика
MissingCommonModuleMethodВерсия
1.0.7(bsl-language-server-1.0.7-exec.jar, CLIanalyze), Windows, платформа 8.3.27.Описание ложного срабатывания
В модуле управляемой формы расширения есть вызов метода менеджера отчёта:
Диагностика сообщает:
То есть цепочка
Отчеты.<ИмяОтчёта>.ПолучитьФорму(...)разбирается так, будтоОтчеты— этообщий модуль (или будто
ПолучитьФормуищется у общего модуля с именемОтчеты). Вдействительности
Отчеты— менеджер отчётов, аПолучитьФорму— его метод, и код исполняется.Как воспроизвести
Отчеты.<ИмяОтчёта>.ПолучитьФорму("<ИмяФормы>").Конфиг в прогоне:
{"language":"ru","v8platform":{"targetVersion":"8.3.18"},"diagnostics":{"ordinaryAppSupport":true}}.Результат: ровно одно срабатывание
MissingCommonModuleMethodна этой строке (в отчётеstart_line: 211), при этомQueryToMissingMetadata— 0, то есть метаданные расширенияразрешаются корректно и дело именно в разборе цепочки менеджера.
Почему это, вероятно, отдельный случай
В трекере есть несколько FP этой диагностики про общие модули, расширенные в расширении
(#3474, #3918, #3239). Здесь случай другой: общий модуль не при чём, ломается вызов менеджера
отчёта. Возможно, причина общая — разрешение первого сегмента цепочки, — но воспроизведение
другое и воспроизводится на голой типовой без расширений общего модуля.
Если это ожидаемое ограничение (например, менеджеры отчётов не индексируются), было бы полезно
увидеть это в описании диагностики — иначе её приходится отключать целиком, теряя проверку
настоящих обращений к общим модулям.