ESLint v1.0.0から導入されるcallback-returnルールが使えそう!・・・だが使えない!件
RCリリース!
ついに、ESLintのRCが出ましたね。
上記のアナウンスの中で、callback-return
という気になるルールを発見しました。
どんなルール?
要は↓のようなうっかりミスを検出してくれるそうです。
function read(filename, callback) { fs.readFile(filename, function(err, data) { if (err) { callback(err); // return忘れている!二回callbackが呼ばれる! } callback(null, data); }) }
ただし、コールバック関数とみなされるのは変数名が"callback", "cb", "next"となってるときだけです。
例えば、"done"もコールバック関数としてみなしたい場合は.eslintrcのオプションで指定してあげる必要があります。
callback-return: [2, ["callback", "cb", "next", "done"]]
いいですね!
だがしかし
早速、とあるプロジェクトをlintしてみました・・・
が、ダメダメじゃないか。
http://eslint.org/docs/1.0.0/rules/callback-return#ifelse-statements
結構制限だらけのようです。
こっちのロジックをオススメ
https://github.com/yukidarake/eslint-example/blob/master/lib/rules/no-callback-return.js
ちゃんとプラグイン化します!