Вопрос по javascript – Что такое хороший автономный форматировщик JavaScript для исправления пропущенных точек с запятой?

4

Я пытаюсь дооснастить / исправить много устаревшего веб-кода, и, к сожалению, большая часть его - плохо отформатированный JavaScript. Я ищу пакетную / скриптовую утилиту, которая может исправить JavaScript, в котором пропущены символы в конце исполняемых операторов.

Я пробовал сценарий beautify-cl.js с Rhino, но он не добавляет точки с запятой. Кроме того, я попробовалJSTidy думая, что я мог бы изменить его для написания сценариев, но он удаляет все комментарии Учитывая, что у нас есть что-то вроде 2000-3000 файлов, любое решение должно быть сценарием.

Были упомянуты следующие темы, однако ни одно из решений не было достаточным по разным причинам: Javascript Beautifier - Не обрабатывает точку с запятой Лучший форматировщик исходного кода для Javascript? - не для сценариев

Есть идеи / решения? Заранее спасибо.

Да, это хорошо для поиска проблем. К сожалению, просмотр 3000 файлов и ручное добавление точек с запятой в конце каждой исполняемой строки утомительно. Многие из файлов более 50К. Paul Kuykendall
У вас есть какие-либо особые причины для добавления точек с запятой (например, использование специального упаковщика JS)? В противном случае пропуск точки с запятой все еще соответствует спецификации. Boldewyn
Ты пробовалjslint.com? Это не украшение, а лучший инструмент для проверки качества. Остальное будет ручной работой. Gumbo

Ваш Ответ

5   ответов
2

вам нужно будет сделать это, если вы хотите минимизировать файлы при развертывании. Отсутствие точек с запятой, вероятно, является # 1 причиной, по которой JS-файлы не минимизируются должным образом, поэтому я понимаю вашу мотивацию.

Напишите небольшой сценарий Python (или любой другой) для запуска файла через jslint, затем используйте вывод jslint, чтобы увидеть, каким строкам нужны точки с запятой, затем прокрутите источник js и добавьте их.

Я думаю, что здесь вы можете быть довольно бесстрашными, потому что JavaScript все равно неявно добавляет точки с запятой.

Обновить:Этот набор инструментов может быть тем, что вы ищете, & Quot; формат & quot; на вкладке пропущена точка с запятой.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

таревшего кода с единственной целью вставки точек с запятой. Это классический случай "сделать это неправильно".

Как бы вы проверили результаты? Как бы вы обеспечили отсутствие «функциональности»? (как побочный эффект ошибки, вызванной отсутствием точки с запятой) не потеряно?

Как вы думаете, что добавит точки с запятой во все эти файлы? Помимо больших файлов (я не использую точки с запятой) и огромного количества непроверенных изменений кода?

Как сказал Гамбо, используйтеJSLint, Я использовал бы это на файлах, поскольку Вы редактируете их в своей повседневной работе. Когда вы редактируете эти файлы, вероятно, вы будете тестировать изменения файла в это время. Это было бы самое идеальное время, чтобы сходить с ума от вставки точки с запятой.

Кроме того, если вы обеспокоены сохранением и поддержкой 2000-3000 устаревших файлов javascript, у вас гораздо большие проблемы, чем с запятой

Error: User Rate Limit Exceeded Paul Kuykendall
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

js-beautify и GoogleЗакрытие Линтер:

# legacy.js is your poorly formatted JavaScript file, and will be modified in-place
js-beautify -s 2 -n -b end-expand -x -r legacy.js && fixjsstyle legacy.js

Объяснениеjs-beautify опции:

-s 2: indent with two spaces -n: ensure newline at end of file -b end-expand: puts { braces at the end of the line, but always gives } braces their own line. -x: unescape \xNN-escaped characters in strings -r: make changes in-place

fixjsstyle, который устанавливается вместе с пакетом Closure Linter, по умолчанию вносит изменения.

Этот трубопроводretains comments (!), отступает все (в основном), как мне нравится, добавляет точки с запятой, где это уместно, и даже заменяет двойные кавычки на одинарные, где это возможно. Обе команды могут получить список файлов (например,**/*.js), а не только один.

Чтобы установить необходимые пакеты в Mac OS X:

npm install -g js-beautify
brew install closure-linter
1

http://jsutility.pjoneil.net и используйте функцию форматирования, она автоматически заменит пропущенные точки с запятой.

Кроме того, если вы используете функцию сжатия, она также заменит пропущенные точки с запятой, чтобы сжатие не вызывало ошибок.

0

http://jsutility.pjoneil.net выдает слишком много ошибок (и не может отформатировать его), вы можете попробовать сжать его:http://refresh-sf.com/yui/ (который добавит пропущенные точки с запятой), а затем вернитесь в форматтер pjoneil.net, чтобы получить красивый код с точками с запятой.

Похожие вопросы