ESLint v2.9.0 released: https://t.co/OZkHoPbO4v
— ESLint (@geteslint) 2016年4月29日
いくつかのバグ修正・ルール追加・機能改善が行われました。
特に、eslint --fix
に関して大きな進展がありました。
eslint --fix
の実装が改善され、すべてのルールのeslint --fix
をリクエストできるようになりました (今までは空白関連ルール限定でした)。ESLint のリポジトリに Issue を作ってリクエストできます。ただ、現在の開発チームの優先度は JSCS 対応の方が高いので、PR 作ってね?と言われるとは思います。検証ルールのeslint --fix
対応は簡単なので、ぜひ挑戦してみていただけると嬉しいです。
質問やバグ報告等ありましたら、お気軽にこちらまでお寄せください。
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 |
#5329: eslint --fix
を改善
以前は、各検証ルールの Fix について1回ずつコードに適用し、範囲が重なった場合は諦めていました。
このバージョンから、Fix があった場合は Fix されたコード上で再検証を行い、更なる Fix を試みます (上限はあります)。
このマルチパス自動修正機能の導入によって、これまで空白系の検証ルールのみに制限されていた自動修正を、すべてのルールに拡大します。
新しいルール
#5402: no-useless-computed-key
無意味な Computed Properties 定義を警告します。
let obj = {
["foo"]: 1 // 代わりに 'foo: 1' を使ってください。
};
dot-notation が利用側の Computed Properties を警告するのに対して、このルールは定義側のそれを警告します。
#5808: no-unsafe-finally
finally
ブロック内で return
, throw
, break
, continue
を利用すると警告します。
これらは本当の戻り値やエラーを握りつぶしてしまう可能性があり、意図しない結果を招くかもしれません。
function foo() {
try {
return 1;
} finally {
return 2; // 最初の戻り値 1 は無視され、2 で上書きされる。
}
}
function foo() {
try {
throw new Error("test");
} finally {
return 2; // catch してないのに例外は無視され、正常に 2 を返す。
}
}
このルールは、ESLint v3.0.0 で eslint:recommended
に入ると思います (Breaking Change なので v2 では入りません)。
オプションが追加されたルール
#4668: prefer-arrow-callback
あるコールバック関数について、this
を利用していて、Arrow Functions に置き換えると this
の意味が変わってしまう場合でも警告するオプションが追加されました。
// このコールバック関数は Arrow にすると this の意味が変わってしまうため、デフォルトでは警告されません。
document.getElementById("foo").addEventListener("click", function(event) {
this.classList.toggle("bar");
});
// しかし this を使わないように修正できるので警告したいというリクエストがあり、オプションとして実装されました。
document.getElementById("foo").addEventListener("click", (event) => {
event.target.classList.toggle("bar");
});
#5803: default-case
default:
句を省略していることを明示するコメントの内容をカスタマイズできるようになりました。
/*eslint default-case: ["error", {"commentPattern": "defaultなし"}]*/
switch (a) {
case 0:
doSomething();
break;
// defaultなし
}
デフォルトでは "no default"
です。