[英]What is a good stand-alone JavaScript formatter for fixing missing semicolons?
我正在尝试改进/修复大量遗留的Web代码,不幸的是大部分都是格式不良的JavaScript。 我正在寻找一个批处理/脚本化实用程序,可以修复在可执行语句结束时缺少simicolons的JavaScript。
我已经尝试过使用Rhino的beautify-cl.js脚本,但这并不会添加分号。 另外,我已经尝试过JSTidy认为我可以将其修改为可编写脚本,但它会删除所有注释。 考虑到我们有类似2000-3000文件的东西,任何解决方案都必须是可编写脚本的。
引用了以下主题,但是由于各种原因,没有一个解决方案是足够的: Javascript Beautifier - 不处理分号Javascript的最佳源代码格式化程序? - 不可编写脚本
任何想法/解决方案? 提前致谢。
显然,如果要在部署时缩小文件,则需要执行此操作。 缺少分号可能是JS文件没有正确缩小的第一个原因,所以我理解你的动机。
编写一些Python(或其他)脚本来通过jslint运行文件,然后使用jslint的输出来查看哪些行需要分号,然后旋转js源并添加它们。
我认为你在这里可能相当无所畏惧,因为JavaScript无论如何都隐含地添加了分号。
更新: 这组工具可能是您正在寻找的 。 “格式”选项卡提供缺少分号插入。
我在js-beautify
和Google的Closure Linter中找到了一个成功的组合:
# 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
:缩进两个空格 -n
:确保文件末尾的换行符 -b end-expand
:将{
braces放在行的末尾,但始终给出}
括起自己的行。 -x
:字符串中的unescape \\xNN
-escaped字符 -r
:就地进行更改 fixjsstyle
,其安装与闭锁短绒套件,使得在默认情况下,发生的变化。
此管道保留注释 (!),缩小所有内容(主要是)我喜欢的内容,在适当的位置添加分号,甚至在可行的情况下将双引号更改为单引号。 两个命令都可以给出一个文件列表(例如, **/*.js
),而不是一个。
要在Mac OS X上安装所需的软件包:
npm install -g js-beautify
brew install closure-linter
如果您在http://jsutility.pjoneil.net上使用JavaScript Utlity V2并使用格式化功能,它将自动替换丢失的分号。
此外,如果使用压缩函数,它还将替换缺少的分号,以便压缩不会导致任何错误。
您不应该担心为了插入半冒号而对大量遗留代码进行大规模更新。 这是“做错了”的经典案例。
你会如何测试结果? 您如何确保没有“功能”(由于缺少半冒号导致的错误的副作用)不会丢失?
您认为将半冒号添加到所有这些文件中会得到什么? 除了更大的文件(我不是在使用分号)和大量未经测试的代码更改?
正如gumbo所说,使用jslint 。 当你在日常工作中编辑文件时,我会在文件上使用它。 在编辑这些文件时,可能您将在那时测试对文件的更改。 这将是半结肠插入疯狂的最理想时间。
此外,如果你担心保持2000-3000传统的javascript文件存活和支持,你有比半冒号更大的问题
如果http://jsutility.pjoneil.net丢失了太多错误(并且无法对其进行格式化),您可以尝试使用以下命令对其进行压缩: http : //refresh-sf.com/yui/ (这将添加缺少的分号)然后返回到pjoneil.net格式化程序,以分号获取漂亮的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.