LoginSignup
12
11

More than 5 years have passed since last update.

ESLint v2.11.0

Last updated at Posted at 2016-05-28

v2.10.0 | 次 v2.12.0

いくつかのバグ修正・ルール追加・機能改善が行われました。
JSCS からのルール移植を実施中です。進捗は GitHub の JSCS Compatibility マイルストーンを参照してください。

質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。

URI
日本語 Issue 管理リポジトリ https://github.com/eslint/eslint-jp
日本語チャット https://gitter.im/eslint/eslint-jp
本家 Issue 管理リポジトリ https://github.com/eslint/eslint
本家チャット https://gitter.im/eslint/eslint

:bulb: 新しいルール

#2693: no-prototype-builtins

hasOwnProperty 等のプロパティのメタ情報を取得するメソッドを、メソッドとして利用すると警告するルールです。

これらは Object.create(null) と併用する場合が多く、Object.create(null) で作成したオブジェクトは一切メソッドを持っていないため、TypeError の原因になります。

/*eslint no-prototype-builtins: "error"*/

// ✔ GOOD
Object.hasOwnProperty.call(obj, "prop")

// ✘ BAD
obj.hasOwnProperty("prop")

#5502: unicode-bom

:pencil: eslint --fix をサポートしています。

Unicode Byte Order Mark の有無を矯正するルールです。
オプションによって、BOM があったら警告するか、無かったら警告するかを選択できます。

#6058: no-useless-rename

:pencil: eslint --fix をサポートしています。

Destructuring や Import/Export の無意味な名称変更構文を警告します。

/*eslint no-useless-rename: "error"*/

// ✔ GOOD
let {foo} = obj;
import {foo} from "foo";
export {foo};
export {foo} from "foo";
let {foo: bar} = obj;
import * as foo from "foo";
import {foo as bar} from "foo";
export {foo as bar};
export {foo as bar} from "foo";

// ✘ BAD
let {foo: foo} = obj;
import {foo as foo} from "foo";
export {foo as foo};
export {foo as foo} from "foo";

:wrench: オプションが追加されたルール

#5477: no-constant-condition

ループ文の条件式に定数を許可するオプションが追加されました。
無限ループを頻繁に書く人向けです。

/*eslint no-constant-condition: ["error", {"checkLoops": false}]*/

// ✔ GOOD
while (true) {
    doSomething();
    if (condition()) {
        break;
    }
};

#6026: consistent-return

一貫した return 文を矯正するルールです。
値を返すならすべての実行パスで値を返す、値を返さないならすべての実行パスで値を返さない、ということをチェックします。

今回追加されたのは、return void 0 のような「必ず undefined を返す return 文」を「値を返さない return 文」として扱うオプションです。

/*eslint consistent-return: ["error", {"treatUndefinedAsUnspecified": true}]*/

// ✔ GOOD
function foo(callback) {
    if (callback) {
        return void callback();
    }
}

function foo(callback) {
    if (callback) {
        return callback();
    }
    return 0;
}

// ✘ BAD
function foo(callback) {
    if (callback) {
        return callback();
    }
    // ERROR: 値を返さない実行パスがあります
}

サンプルコードのように、もともとは「コールバック関数を呼び出して即座に return するコードを短く書きたい」という要求から議論が始まりました。何度か提案が棄却された後、紆余曲折あって今の形に収まった感じです。

:pencil: 新たに eslint --fix をサポートしたルール

#6167: key-spacing

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11