ESLint v2.10.0

前 [v2.9.0] | 次 [v2.11.0]

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">ESLint v2.10.0 released: <a href="https://t.co/EnXreZPYmQ">https://t.co/EnXreZPYmQ</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/731254268385218560">2016年5月13日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

いくつかのバグ修正・ルール追加・機能改善が行われました。
[JSCS] からのルール移植が開始しました。今後しばらくはスタイル関連ルールの追加が多くなりそうです。

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

|     | 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 |

----

# 新しいルール

## [#5667]: [object-property-newline]

オブジェクト定義において、1行に複数のプロパティがあると警告します。

```js
/*eslint object-property-newline: "error"*/

// ✔ GOOD
var obj = {
    foo: "foo",
    bar: "bar",
    baz: "baz"
};

// ✘ BAD
var obj = { foo: "foo", bar: "bar", baz: "baz" };
var obj2 = {
    foo: "foo", bar: "bar", baz: "baz"
};
var obj3 = {
    foo: "foo", bar: "bar",
    baz: "baz"
};
```

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

## [#3366]: [object-shorthand]

プロパティ名が `"`/`'` で囲まれていた場合に省略記法をしないオプションが追加されました。
構文的には省略して問題ないため、オプションです。

```js
/*eslint object-shorthand: ["error", "always", {"avoidQuotes": true}]*/
/*eslint-env es6*/

// ✔ GOOD
var foo = {
    "bar-baz": function() {},
    "qux": qux
};

// ✘ BAD
var foo = {
    "bar-baz"() {}
};
```

## [#5692]: [prefer-const]

再代入されていない場合でも、代入文より前の位置で利用されている変数を警告しないためのオプションが追加されました。このオプションは、[no-use-before-define] ルール (with `"nofunc"` オプション) との衝突を避けるために追加されました。

```js
/*eslint prefer-const: ["error", {"ignoreReadBeforeAssign": true}]*/
/*eslint-env es6*/

// ✔ GOOD
let timer;
function initialize() {
    if (foo()) {
        clearInterval(timer);
    }
}
timer = setInterval(initialize, 100);
```

なおデフォルトの振る舞いでは次のようになります。

```js
/*eslint prefer-const: "error"*/
/*eslint-env es6*/

// ✔ GOOD
const timer = setInterval(initialize, 100);
function initialize() {
    if (foo()) {
        clearInterval(timer);
    }
}

// ✘ BAD
let timer;
function initialize() {
    if (foo()) {
        clearInterval(timer);
    }
}
timer = setInterval(initialize, 100);
```

## [#5840]: [no-irregular-whitespace]

各種リテラルの中の "irregular whitespace" を許容するオプションが追加されました。
日本語にある 全角空白 も "irregular whitespace" の1つなので、私達にとって便利なオプションです。

- `skipStrings` - 文字列リテラル内の "irregular whitespace" を許容する (default で有効)
- `skipRegExps` - 正規表現リテラル内の "irregular whitespace" を許容する
- `skipTemplates` - テンプレートリテラル内の "irregular whitespace" を許容する

@inuscript さん, @Linda_pp さん、ありがとうございます!

```js
/* eslint no-irregular-whitespace: ["error", {"skipRegExps": true}] */

// ✔ GOOD
var foo = /　/;
//         ↑ ここに全角空白がある
```

## [#6036]: [no-extra-parens]

`return` 文で代入式を使う場合の余分なカッコを許可するオプションが追加されました。
[no-return-assign] ルールとの衝突を回避するためのオプションです。

```js
/* eslint no-extra-parens: ["error", "all", {"returnAssign": false}] */

// ✔ GOOD
function a(b) {
    return (b = 1);
}

// ✘ BAD
function a(b) {
    return (b === 1);
}
```

# `eslint --fix`に対応したルール

- [#5956]: [lines-around-comment]

[v2.9.0]: http://qiita.com/mysticatea/items/1d377b67465664009ad5
[v2.11.0]: http://qiita.com/mysticatea/items/979bee6cd462f135f217
[JSCS]: http://jscs.info
[#3366]: https://github.com/eslint/eslint/issues/3366
[#5667]: https://github.com/eslint/eslint/issues/5667
[#5692]: https://github.com/eslint/eslint/issues/5692
[#5840]: https://github.com/eslint/eslint/issues/5840
[#5956]: https://github.com/eslint/eslint/issues/5956
[#6036]: https://github.com/eslint/eslint/issues/6036
[lines-around-comment]: http://eslint.org/docs/rules/lines-around-comment
[no-extra-parens]: http://eslint.org/docs/rules/no-extra-parens
[no-irregular-whitespace]: http://eslint.org/docs/rules/no-irregular-whitespace
[no-return-assign]: http://eslint.org/docs/rules/no-return-assign
[no-use-before-define]: http://eslint.org/docs/rules/no-use-before-define
[object-property-newline]: http://eslint.org/docs/rules/object-property-newline
[object-shorthand]: http://eslint.org/docs/rules/object-shorthand
[prefer-const]: http://eslint.org/docs/rules/prefer-const