なっく日報

技術やら生活やらのメモ

ESLint v1.0.0から導入されるcallback-returnルールが使えそう!・・・だが使えない!件

RCリリース!

ついに、ESLintのRCが出ましたね。

eslint.org

上記のアナウンスの中で、callback-returnという気になるルールを発見しました。

eslint.org

どんなルール?

要は↓のようなうっかりミスを検出してくれるそうです。

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

ちゃんとプラグイン化します!