元記事:ESLintの--fixはソースを破壊する!本当??
背景
- Atomで、linter-eslintを使っている。
- linter-eslintでは、保存時のautofixを使っている。(インデントがグダっていても平気!スイスイかける!!)
- コード書いたらガンガン保存。
- コードの記述は「条件チェックでreturn;残りは後で!」って感じで、わかることを書いてあっちこっちに行くスタイル。
というわけで、編集中には、次のようなコードがガンガン存在!で保存されて、eslint --fixが走って、return;が吹っ飛ぶ......
function foo(key) {
var value = map[key];
if(!value){
return;
}
// do something....
}
その後
理由がわからなかったので、パニックになりつつ、コードが消えるのが不快だったので、ESLintのissue#7955でお問い合わせをしてみた。
→「後ろのコードと一緒だから、とった。当然!」(ざっくり)とのこと。
→「そうだね......でも、困るケースもあるんだけど??」とお願いしてみた。
→喧々諤々検討してくれています。
コメント
- 確かに、linterだから、正しくするのが使命だよね。
- でも、fixにもレベルがあっていいとは思う。
- でも、あまりにも複雑な指定だと誰も使えないよね。
- 個人的には、fix-lebel(仮)を追加でseverityまたは、meta.fixableで制御がベターな気がする。
- でも、あと、ユーザがruleベースでの切り替えって口も用意されているといい気がする。
- severityは、確かに正しくはない。でも、複雑化を考えると落としどころなのかも。
おまけ
ということで、ざっくりコーディングしてみた。(https://github.com/uk-taniyama/eslint,https://github.com/uk-taniyama/eslint/issues/1)
#あれ?mainブランチに入れちゃっている......ブランチ作って、checkoutし忘れ、そのままpush......
英語書けないんでつらい......