2017-01-21 4 views
1

--fixフラグを使用してESLintを自動化することをお勧めしますか、長期的には問題を引き起こすでしょうか?`--fix`フラグを使ってESLintを自動化することにはどんな問題がありますか?

たとえば、私はnpm"prestart"スクリプトを使用しています。これは、npm startを実行して修正可能なエラーをコードに修正するたびにESLintが実行されることを意味します。これはどのような問題がありますか?

答えて

1

この唯一の問題は、npm startで実行されるコードが、作成したコードと異なる場合があることです。 ESLintでアプリケーションを起動する直前にコードを変更すると、予期しない動作に(潜在的に)つながる可能性があります。これは、プロジェクトの設定方法とアプリケーションの展開方法によって異なります。

list of ESLint rulesには、自動修正可能なものの横にレンチがあります。スペースやセミコロンだけでは不十分です。 ESLint(--fixを実行しているとき)はコードを機能的に壊さないようにしていますが、コードを記述して実行するまでの間にコードを操作しているときは、コードベースの動作を変更する危険があります。 ESLintは、何かの動作を中断/変更するような方法でコードを自動修正しないようにしようとしますが、違う振る舞いをするようにコードを変更するバグや事故が発生する可能性があります。さて、ここで興味深いのはon autofix and how it might changeです。

npm testスイートの一部としてESLintを実行していて、リントルールが通過していない限り、アプリケーションを展開していない場合、問題はあまりありません(デプロイされたアプリでは発生しないため、あなたのスタイルガイドに合っていないコードが見つかった場合は、アプリのデプロイを止めている)。

そうでなければ、一貫したスタイルを維持しながら、コードベース内の「問題のあるパターン」を半自動的に回避しながら、人々が望むようにコードすることができます。それはすべてのルールを修正するわけではありませんが、開発チームをいくらかスムーズにすることができます。必要に応じて、この自動フィックスをgit pre-commitフックで実行して、コミットされているコードが固定バージョンであることを確認することもできます。

例:Git pre-commit ESLint hook

+0

@Nick_Bartlettあなたは '--fix'フラグがコードを壊すかもしれない例をお願いできますか?私はシナリオを考えることができないからです。私の知る限り、ESLintはスペースとセミコロンだけを修正しています... – shuzo

+0

@shuzoは、ESLintがどのようにコードを壊すかの例を使って答えを更新しました。それは良い質問だったと私はそれがコメントではなく、答えを入れる価値があると思った。 –

+1

明確にするために、ESLintは変更を破らないように非常に努力しています。これはESLintのオートフィックス機能のガイドラインであり、前とは異なるコードを作成しないようにしています。特に 'eqeqeq'ルールは、静的に検証可能なケースのみを修正します:https://github.com/eslint/eslint/pull/7389しかし、バグは時々起こり、autofixがコードを壊すことがあります。 ESLintは、報告されたケースを修正することを優先します。 –

関連する問題