Skip to content

[BUG] Diagnostic computation error при проверке AllFunctionPathMustHaveReturn #3820

@johnnyshut

Description

@johnnyshut

Диагностика

AllFunctionPathMustHaveReturn

Версия

BSLLS v0.28.4 (расширение 1c-syntax.language-1c-bsl для VS Code)

Описание ошибки диагностики

При анализе модуля адаптер_ОбщегоНазначенияСервер/Ext/Module.bsl происходит Diagnostic computation error вместо нормального результата проверки. В Output BSL Language Server:

[ERROR] [diagnostic-computer] [com.github._1c_syntax.bsl.languageserver.context.computer.DiagnosticComputer]: Diagnostic computation error.
File: file:///.../адаптер_ОбщегоНазначенияСервер/Ext/Module.bsl
Diagnostic: Either [
  left = AllFunctionPathMustHaveReturn
  right = null
]

Пример кода

Возможный источник - функция МенеджерОбъектаПоИмени с директивой препроцессора #Если и большой цепочкой ИначеЕсли:

//@skip-warning
Функция МенеджерОбъектаПоИмени(Имя)
	Перем КлассОМ, ИмяОМ, Менеджер;
	
	ЧастиИмени = СтрРазделить(Имя, ".");
	
	Если ЧастиИмени.Количество() > 0 Тогда
		КлассОМ = ВРег(ЧастиИмени[0]);
	КонецЕсли;
	
	Если ЧастиИмени.Количество() > 1 Тогда
		ИмяОМ = ЧастиИмени[1];
	КонецЕсли;
	
	Если      КлассОМ = "ПЛАНОБМЕНА" Или КлассОМ = "ПЛАНЫОБМЕНА" Тогда
		Менеджер = ПланыОбмена;
	ИначеЕсли КлассОМ = "СПРАВОЧНИК" Или КлассОМ = "СПРАВОЧНИКИ" Тогда
		Менеджер = Справочники;
	// ... много ИначеЕсли ...
	#Если НЕ МобильноеПриложениеСервер Тогда
	ИначеЕсли КлассОМ = "ОТЧЕТ" Или КлассОМ = "ОТЧЕТЫ" Тогда
		Менеджер = Отчеты;
	// ... и т.д.
	#КонецЕсли
	КонецЕсли;
	
	Если Менеджер <> Неопределено Тогда
		// ...
		Возврат ...;
	КонецЕсли;
	
	ВызватьИсключение СтрШаблон(...);
	
КонецФункции

Скриншоты

Дополнительная информация

Ошибка воспроизводится в VS Code и в SonarQube (Jenkins pipeline).
Файл: src/cfe/БИТАдаптер/CommonModules/адаптер_ОбщегоНазначенияСервер/Ext/Module.bsl.
Возможные причины: обработка #Если, длинная цепочка ИначеЕсли и сложное управление потоком (return/exception).

Diagnostic error.zip

Metadata

Metadata

Labels

type/bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions