根据JSHint,我有一个包含100多个javascript文件的项目,每个文件都有1-5个缺少的分号(因此有多个人在使用不同约定的项目上工作)。
我想批量修复所有内容,因为单独修复每个内容都不切实际。我发现了这个问题:https://github.com/jshint/fixmyjs但是我没有看到只修复分号的方法而且没有修复'其他的东西(制表符 - 例如>空格)。
有谁知道这样做的方法?我对它可能导致破损/引入错误的可能性感到满意。我已经查看了错误,看起来很常规。
答案 0 :(得分:13)
我真的希望你喜欢这个解决方案。修复问题后,请务必小心再次使用jshint进行验证。出于好奇,你是如何设法获得这么多破解的javascript文件的?
#!/bin/sh
function fixFile {
for i in `jshint $1 | grep -i "Missing semicolon" \
| sed -e 's/\([^0-9]*\)\([0-9]*\)\(.*$\)/\2/'`;
do
sed -i $1 -e $i's/\(\s*\)$/;/'
done
}
fixFile $1
上面使用jshint生成一些错误行,只为缺少的分号错误greps它们,提取每个错误的行号,然后在该行上就地放置文件以删除任何尾随空格并用分号替换它
文件......
var a = 5, c = 4
function helloWorld() {
if (this == doesntmakesense)
console.log('hello' + 'world');
}
console.log(a+c);
console.log('finished')
... ...变为
var a = 5, c = 4;
function helloWorld() {
if (this == doesntmakesense)
console.log('hello' + 'world');
}
console.log(a+c);
console.log('finished');
忽略小的语义错误,只处理分号。
我将bash脚本保存为类似fixFile.sh
的内容,然后运行find . -name "*.js" -exec ./fixFile.sh {} \;
但请事先提交。所有命令的运行风险均由您自行承担;)
答案 1 :(得分:11)
有一种比使用正则表达式更安全的添加缺失分号的方法。使用以下步骤将fixmyjs配置为仅修复Evan最初提出的分号:
安装fixmyjs
npm install fixmyjs -g
使用以下内容创建fixmyjs配置文件fixmyjs-config
{ "asi": false }
运行fixmyjs
fixmyjs --config [fixmyjs-config] --legacy yourfile.js
答案 2 :(得分:1)
谷歌关闭JS Linter有一个附带它的程序,能够纠正一些更常规的违规行为,比如这个,我相信它的名字是fixjsstyle
(python btw)