什么是一个很好的独立JavaScript格式化程序来修复丢失的分号?

时间:2009-06-25 17:36:05

标签: javascript formatting

我正在尝试改进/修复大量遗留的Web代码,遗憾的是,大部分内容都是格式错误的JavaScript。我正在寻找一个批处理/可编写脚本的实用程序,它可以修复在可执行语句结束时缺少simicolons的JavaScript。

我已经尝试过使用Rhino的beautify-cl.js脚本,但这并不会添加分号。另外,我已经尝试JSTidy认为我可以将其修改为可编写脚本,但它会删除所有注释。考虑到我们有类似2000-3000文件的东西,任何解决方案都必须是可编写脚本的。

引用了以下主题,但由于各种原因,所有解决方案都不够: Javascript Beautifier - 不处理分号 Best source code formatter for Javascript? - 无法编写脚本

任何想法/解决方案?提前谢谢。

5 个答案:

答案 0 :(得分:2)

如果你想在部署时缩小文件,显然你需要这样做。缺少分号可能是JS文件没有正确缩小的第一个原因,所以我理解你的动机。

编写一些Python(或其他)脚本来通过jslint运行文件,然后使用jslint的输出来查看哪些行需要分号,然后旋转js源并添加它们。

我认为你在这里可能相当无所畏惧,因为无论如何JavaScript都隐含地添加了分号。


更新:This set of tools may be what you are looking for。 “格式”选项卡提供缺少分号插入。

答案 1 :(得分:2)

我在js-beautify和Google的Closure Linter找到了一个获胜组合:

    $('.class').load(location.href+" .class>*","");

# 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个括号,但始终为{括号添加自己的行。
  • }:unescape -x - 字符串中的转义字符
  • \xNN:就地进行更改
与Closure Linter套件一起安装的

-r默认情况下进行就地更改。

此管道保留评论(!),缩小所有内容(主要是)我喜欢的内容,在适当的位置添加分号,甚至在可行的情况下将双引号更改为单引号。两个命令都可以给出一个文件列表(例如fixjsstyle),而不只是一个。

在Mac OS X上安装所需的软件包:

**/*.js

答案 2 :(得分:1)

如果您在http://jsutility.pjoneil.net使用JavaScript Utlity V2并使用格式化功能,它将自动替换丢失的分号。

此外,如果您使用压缩功能,它还将替换丢失的分号,以便压缩不会导致任何错误。

答案 3 :(得分:0)

您不应该担心为了插入半冒号而对大量遗留代码进行大规模更新。这是“做错了”的经典案例。

您如何测试结果? 您如何确保不会丢失“功能”(因为缺少半结肠引起的错误的副作用)?

您认为将半冒号添加到所有这些文件会对您有什么影响?除了更大的文件(我不是在使用分号)和大量未经测试的代码更改?

正如gumbo所说,使用jslint。当你在日常工作中编辑文件时,我会在文件上使用它。在编辑这些文件时,可能您将在那时测试对文件的更改。这将是半结肠插入疯狂的最理想时间。

另外,如果您担心保留2000-3000个传统javascript文件并支持它们,那么您遇到的问题远远超过半冒号

答案 4 :(得分:0)

如果http://jsutility.pjoneil.net丢失了太多错误(并且无法对其进行格式化),您可以尝试使用:http://refresh-sf.com/yui/(将添加缺少的分号)压缩它,然后返回到pjoneil。 net formatter用分号获取漂亮的代码。