v8-code-style icon indicating copy to clipboard operation
v8-code-style copied to clipboard

Ложное срабатывание проверки: redundant-export-method (Избыточное ключевое слово Экспорт)

Open RedMammoth opened this issue 1 year ago • 5 comments

Название/код проверки

Код проверки: redundant-export-method (Избыточное ключевое слово Экспорт)

Версия плагина: 0.4.0.131

Пример кода/метаданных содержащих ошибку

МойМодуль1:

#Область СлужебныйПрограммныйИнтерфейс

Процедура Метод3() Экспорт
	Возврат;
КонецПроцедуры

Процедура Метод4() Экспорт
	Возврат;
КонецПроцедуры

#КонецОбласти

МойМодуль2:

#Область СлужебныйПрограммныйИнтерфейс

Процедура Метод3() Экспорт
	Возврат;
КонецПроцедуры

Процедура Метод4() Экспорт
	Возврат;
КонецПроцедуры

#КонецОбласти

Общиймодуль1:

// @strict-types

#Область ПрограммныйИнтерфейс

Процедура Тест() Экспорт
	Тест2(Истина).Метод3();
	Тест2(Ложь).Метод4();
КонецПроцедуры

Функция Тест2(Параметр) Экспорт
	Если Параметр Тогда
		Возврат МойМодуль1;
	Иначе
		Возврат МойМодуль2;
	КонецЕсли;
КонецФункции

#КонецОбласти

Почему это НЕ ошибка

Вызовы есть.

Возвращающий метод может быть сложным, и статическим анализом сложно проверить что: МойМодуль1.Метод3() и МойМодуль2.Метод4() используются, а МойМодуль1.Метод4() и МойМодуль2.Метод3() не используются

Однако проверить, что Тест2() может вернуть МойМодуль1 и МойМодуль2 и у этих модулей может быть вызван Метод3 и Метод4 мне кажется реальным.

Если принять за нулевую гипотезу - метод экспортный. То ошибка первого рода "опаснее", ошибки второго рода

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

Поэтому я считаю, что проверка должна срабатывать только при максимальной уверенности

RedMammoth avatar Jan 14 '23 17:01 RedMammoth