Подтвердить что ты не робот

Есть ли инструмент для удаления неиспользуемых методов в javascript?

У меня есть коллекция файлов javascript от третьего лица, и я бы хотел удалить все неиспользуемые методы, чтобы получить размер до более разумного уровня.

Кто-нибудь знает инструмент, который делает это для Javascript? По крайней мере, дайте список неиспользуемых/используемых методов, чтобы я мог выполнить ручную подгонку? Это будет в дополнение к запуску чего-то вроде компрессора YUI Javascript...

В противном случае я решил написать perl script, чтобы попытаться помочь мне в этом.

4b9b3361

Ответ 1

Нет. Потому что вы можете "использовать" методы безумно динамически, как это.

obj[prompt("Gimme a method name.")]();

Ответ 2

Проверьте JSCoverage. Создает статистику покрытия кода, которая показывает, какие строки программы были выполнены (и которые были упущены).

Ответ 3

Я хотел бы удалить все неиспользуемые методы, чтобы получить размер до более разумного уровня.

имеется несколько доступных инструментов

npm install -g fixmyjs
fixmyjs <filename or folder>

Конфигурируемый модуль, который использует jshint для флага, которые не используются и выполняют очистку.

Я не уверен, что он удаляет функции undefined, а не помечает их. хотя это отличный инструмент для очистки, он, похоже, не совместим с более поздними версиями ecmascript (подробнее см. ниже).

Существует также компилятор закрытия google, который утверждает, что удаляет мертвый JS, но это больше инструмент построения https://developers.google.com/closure/compiler/

обновляется

Если вы используете что-то вроде babel, подумайте о добавлении eslint в текстовый редактор, который может запускать предупреждение о неиспользуемых методах и даже переменных и имеет параметр --fix для автоопределения некоторых ошибок и проблем стиля.

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

вот пример конфигурации eslint я для моих проектов node, основанный на руководстве по стилю airbnbs https://www.npmjs.com/package/eslint-config-airbnb

Ответ 4

Если автор библиотеки не отслеживает зависимости и предоставляет способ загрузки минимального кода (например, Загрузка MooTools Core], будет сложно определить "неиспользуемые" функции.

Проблема заключается в том, что JS является динамическим языком и существует несколько способов вызова функции.

например. у вас может быть такой метод, как

function test() 
{
   //
}

Вы можете называть его как

   test();

   var i = 10;
   var hello = i > 1 ? 'test' : 'xyz';

   window[hello]();

Ответ 5

Вам нужно написать perl script. Не обращайте внимания на вышеперечисленных выше.

Такой инструмент может работать с библиотеками, которые предназначены только для явного вызова функций. Это означает, что делегаты или указатели на функции не будут допущены, использование которых в любом случае приведет только к нечитаемому "коду спагетти" и не является наилучшей практикой. Даже если он удалит некоторые из этих скрытых функций, вы обнаружите большинство, если не все из них при тестировании. Те, которые вы не обнаружили, будут так редко использоваться, что они не будут стоить вашего времени, фиксируя их. Не одержим совершенством. Люди сходят с ума от этого.

Таким образом, применение этого ограничения к JavaScript (и библиотекам) приведет к невероятному сокращению размера страницы и, следовательно, времени загрузки, не говоря уже о читаемости и ремонтопригодности. Это уже относится к инструментам, которые удаляют неиспользуемые CSS, такие как grunt_CSS и unCSS (см. http://addyosmani.com/blog/removing-unused-css/) и которые сообщают о типичных сокращениях до одной десятой оригинальный размер.

Это ситуация с выигрышем/победой.

Следует отметить, что все интерпретаторы должны решить эту проблему, как управлять саморедактирующим кодом. Для жизни меня я не понимаю, почему люди хотят упорствовать с неограниченной свободой. Как отметил Триптих выше, функции Javascript можно вызвать способами, которые буквально "безумны". Эта безумная лихорадка развращает фундаментальную доктрину разделения кода и данных, позволяет вставлять в реальном времени код и делает недействительной попытку сохранить целостность кода. Результатом всегда является нечитаемый код, который невозможно отлаживать, а побочный эффект JavaScript - удаление возможности запуска автоматической предварительной оптимизации кода и валидации - намного хуже любой возможной выгоды.

И... вам нужно будет чувствовать себя довольно небезопасно в своей работе, чтобы хотеть преднамеренно оспаривать это как от ваших коллег, так и от вас самих. Клиенты-браузеры, которые работают очень хорошо, используют подход "меньше - больше", и лучшим примером, который я использовал на сегодняшний день, является комбинация Microsoft Office для доступа к веб-формам в сочетании с службами SharePoint Access Servcies. Производительность наличия вездесущего тяжелого жестко управляемого клиента интерпретатора времени выполнения и его клона на стороне сервера абсолютно феноменальна.

Будущее JavaScript-самообучающихся технологий кода заставляет вернуть их в линию, чтобы уважать...

Принцип кода и данных KISS: Держите его отдельно, глупо.

Ответ 6

Возможно, это упрощенно, но я уверен, что можно будет просто использовать функцию find в любом текстовом редакторе и искать все имена функций и существуют ли они в другом месте в файле и удалять их, если только 1 ( "имя функции" ).