Как выявить неиспользуемые лишние параметры в методах JavaScript?

В JavaScript имеет возможность передавать функции больше параметров, чем это требуется, и лишние просто игнорируются без каких-либо ошибок.

Например:

буквы = ['a','b','c']
// корректный вызов
буквы.indexOf('a')
// этот вызов тоже работает без ошибок
буквы.indexOf('a', "лишний текст", "игнорировать меня", 38)

Существуют ли способы обнаружения таких случаев? В моем опыте такие ситуации часто указывают на ошибки в коде. Выявление их через анализ кода или во время выполнения помогло бы исправить эти проблемы.

Особенно это актуально в случаях, когда ожидаются изменения в базовых типах, которые на самом деле не произошли. Было бы полезно выводить предупреждение, когда подобное происходит.

Например:

Date.parse('02--12--2012', 'dd--MM--YYYY')

Важно отметить: я хочу решение, которое не потребует добавления проверок в каждую функцию или код других разработчиков.

Попробуй использовать ESLint с правилами no-unused-vars и prefer-const. TypeScript тоже хорошо справляется с обнаружением неиспользуемых параметров во время компиляции. А как часто подобное встречается в твоих проектах?

В продакшене использую статические анализаторы + рантайм проверки. SonarQube хорошо ловит это во время ревью. Для рантайма делаю прокси на Function.prototype.call и сравниваю количество аргументов с function.length. С нативными методами вроде indexOf не работает - тут только линтер поможет.