ESLint v3.15.0

前 [v3.14.0] | 次 [v3.16.0]

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">ESLint v3.15.0 has been released: <a href="https://t.co/DCNGeHDeLk">https://t.co/DCNGeHDeLk</a></p>&mdash; ESLint (@geteslint) <a href="https://twitter.com/geteslint/status/827638837304229889">2017年2月3日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

ESLint 3.15.0 がリリースされました。
いくつかの機能追加・バグ修正が行われています。

また、今回の期間中に [@not-an-aardvark](https://github.com/not-an-aardvark) が TSC メンバー[^1]になりました :tada: 
彼は ECMAScript の仕様に明るく、昨年の6月以降は平均1日1個ペースで Pull Requests を作成して ESLint に貢献してきました。

[^1]: Technical Steering Committee (技術的な運営委員会) の略称で、開発の優先度や機能追加の承認などを行う権限を持つグループ。現在8名。

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

- :globe_with_meridians: [日本語 Issue 管理リポジトリ](https://github.com/eslint/eslint-jp)
- :speech_balloon: [日本語サポート チャット](https://gitter.im/eslint/eslint-jp)
- :globe_with_meridians: [本家リポジトリ](https://github.com/eslint/eslint)
- :speech_balloon: [本家サポート チャット](https://gitter.im/eslint/eslint)

----

# :bulb: 新しいルール

## [#7631]: [template-tag-spacing]

タグ付きテンプレート式 (Tagged template expressions) において、タグとテンプレート リテラルとの間の空白を矯正するスタイル・ルールです。
空白を禁止するオプションと強制するオプションがあり、デフォルトでは禁止します。

```js:例
/*eslint template-tag-spacing: error */

//✔ GOOD
const foo = tag`hello`

//✘ BAD
const foo = tag `hello`
```

> :thinking: ところで、Qiita の構文ハイライトはいつになったら ES2015 構文に対応するのでしょうか?

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

## [#7111]: [no-use-before-define] `variables: false`

変数への参照が変数宣言より前にあったとしても、それがネストした関数スコープ内にあれば警告しないオプションが追加されました。

```js:例
/*eslint no-use-before-define: [error, {variables: false}] */
/*globals doSomething */

//✔ GOOD
function foo() {
    doSomething(a)
}
let a = 0

//✘ BAD
doSomething(a)
let a = 0
```

静的検証では、そのような変数が参照エラーを発生させるかどうかを正確に判断できないため、[no-use-before-define] ルールでは安全側に寄せて運用されていました。
今回、確実な TDZ エラーだけを警告したいという要望によって、このオプションが追加されました。

## [#7970]: [no-unused-vars] `ignoreRestSiblings`

React 等の界隈では、現在策定中の [Rest/Spread Properties](https://github.com/sebmarkbage/ecmascript-rest-spread) (Stage 3) を利用して「特定のプロパティを削除しつつオブジェクトをコピーする」イディオムがよく使われるそうです。このとき変数定義を利用してプロパティを削除するのですが、削除するプロパティのための変数定義を警告したくない、という要望が断続的に届いていました。
ESLint は本来 Stage 4 に達した構文だけをサポートしているのですが、今回、特別に実装されました。

```js:例
/*eslint no-unused-vars: [error, {ignoreRestSiblings: true}] */
/*globals doSomething, obj */

//✔ GOOD
let {a, ...objWithoutA} = obj // この a が未使用でも警告されなくなる
doSomething(objWithoutA)
```

# :pencil: `eslint --fix` をサポートしたルール

今回はありません。

----

[v3.14.0]: http://qiita.com/mysticatea/items/82a6686cd9550dc010d5
[v3.16.0]: http://qiita.com/mysticatea/items/df57e95ff98c04ef024c
[#7111]: https://github.com/eslint/eslint/issues/7111
[#7631]: https://github.com/eslint/eslint/issues/7631
[#7970]: https://github.com/eslint/eslint/issues/7970
[#9999]: https://github.com/eslint/eslint/issues/9999
[#9999]: https://github.com/eslint/eslint/issues/9999
[no-unused-vars]: http://eslint.org/docs/rules/no-unused-vars
[no-use-before-define]: http://eslint.org/docs/rules/no-use-before-define
[template-tag-spacing]: http://eslint.org/docs/rules/template-tag-spacing
[xxxx]: http://eslint.org/docs/rules/xxxx
[xxxx]: http://eslint.org/docs/rules/xxxx

<!-- 
![JSCS Icon](http://jscs.info/favicon.ico) JSCS 互換ルールです。
-->