v8-code-style
v8-code-style copied to clipboard
Ложное срабатывание проверки: redundant-export-method (Избыточное ключевое слово Экспорт)
Название/код проверки
Код проверки: 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 мне кажется реальным.
Если принять за нулевую гипотезу - метод экспортный. То ошибка первого рода "опаснее", ошибки второго рода
Т.е. если проверка на используемом методе сказала что можно убрать экспорт и мы уберем - получим ошибку в рантайме, если проверка на неиспользуемом методе не зафиксировала избыточность слова экспорт - то у нас просто будет лишний экспортный метод.
Поэтому я считаю, что проверка должна срабатывать только при максимальной уверенности