2013-05-29

fixmyjs - 自動修改 js 的 lint errors

JSHint 是由 community 維護的 static code analysis tool,會掃過你的 code,然後列出錯誤或潛在的問題,不過這不是本文的重點,所以剩下的就不介紹了。

在列出錯誤後,你可以選擇手動去修改,或是有些錯誤實在是太愚蠢了,根本可以透過程式來幫你改,於是就有了 fixmyjs
FixMyJS is a tool that automatically fixes mistakes—such as missing semicolon, multiple definitions, etc.—reported by JSHint.

他有提供幾種執行方式:

我是用 Nodejs 的方式,可以從 command line 去跑,比較方便,基本上執行時有三個模式可以選擇:
  • 直接修改
  • dry-run,列出 diff
  • 生成 patch 檔

我習慣讓他直接改,然後用 version control tool 來看他到底改了什麼,而這時有些改錯的就可以順便修正一下。所以這不是完美的,用的時候要自己注意。例如,這樣的 javascript code
"use strict";
 
var foo = {
  fun1: function() {},
  fun2: function() {}
  fun3: function() {}
}
由於 JSHint 會報出這樣的錯誤
test.js: line 6, col 3, Expected '}' to match '{' from line 3 and instead saw 'fun3'.
test.js: line 6, col 7, Missing semicolon.                                        
test.js: line 6, col 7, Expected '(end)' and instead saw ':'.                        
他覺得第 6 行少一個分號,但我想要的應該是第 5 行少一個逗點,於是根據 JSHint 的結果 fixmyjs 就把他改成了這樣,在錯誤的地方補了 "Missing semicolon" ...

沒有留言:

張貼留言