--fixフラグを使用してESLintを自動化することをお勧めしますか、長期的には問題を引き起こすでしょうか?`--fix`フラグを使ってESLintを自動化することにはどんな問題がありますか?
たとえば、私はnpm
と"prestart"
スクリプトを使用しています。これは、npm start
を実行して修正可能なエラーをコードに修正するたびにESLintが実行されることを意味します。これはどのような問題がありますか?
--fixフラグを使用してESLintを自動化することをお勧めしますか、長期的には問題を引き起こすでしょうか?`--fix`フラグを使ってESLintを自動化することにはどんな問題がありますか?
たとえば、私はnpm
と"prestart"
スクリプトを使用しています。これは、npm start
を実行して修正可能なエラーをコードに修正するたびにESLintが実行されることを意味します。これはどのような問題がありますか?
この唯一の問題は、npm start
で実行されるコードが、作成したコードと異なる場合があることです。 ESLintでアプリケーションを起動する直前にコードを変更すると、予期しない動作に(潜在的に)つながる可能性があります。これは、プロジェクトの設定方法とアプリケーションの展開方法によって異なります。
list of ESLint rulesには、自動修正可能なものの横にレンチがあります。スペースやセミコロンだけでは不十分です。 ESLint(--fix
を実行しているとき)はコードを機能的に壊さないようにしていますが、コードを記述して実行するまでの間にコードを操作しているときは、コードベースの動作を変更する危険があります。 ESLintは、何かの動作を中断/変更するような方法でコードを自動修正しないようにしようとしますが、違う振る舞いをするようにコードを変更するバグや事故が発生する可能性があります。さて、ここで興味深いのはon autofix and how it might changeです。
npm test
スイートの一部としてESLintを実行していて、リントルールが通過していない限り、アプリケーションを展開していない場合、問題はあまりありません(デプロイされたアプリでは発生しないため、あなたのスタイルガイドに合っていないコードが見つかった場合は、アプリのデプロイを止めている)。
そうでなければ、一貫したスタイルを維持しながら、コードベース内の「問題のあるパターン」を半自動的に回避しながら、人々が望むようにコードすることができます。それはすべてのルールを修正するわけではありませんが、開発チームをいくらかスムーズにすることができます。必要に応じて、この自動フィックスをgit pre-commitフックで実行して、コミットされているコードが固定バージョンであることを確認することもできます。
@Nick_Bartlettあなたは '--fix'フラグがコードを壊すかもしれない例をお願いできますか?私はシナリオを考えることができないからです。私の知る限り、ESLintはスペースとセミコロンだけを修正しています... – shuzo
@shuzoは、ESLintがどのようにコードを壊すかの例を使って答えを更新しました。それは良い質問だったと私はそれがコメントではなく、答えを入れる価値があると思った。 –
明確にするために、ESLintは変更を破らないように非常に努力しています。これはESLintのオートフィックス機能のガイドラインであり、前とは異なるコードを作成しないようにしています。特に 'eqeqeq'ルールは、静的に検証可能なケースのみを修正します:https://github.com/eslint/eslint/pull/7389しかし、バグは時々起こり、autofixがコードを壊すことがあります。 ESLintは、報告されたケースを修正することを優先します。 –