2017-01-21 2 views
1

--fix 플래그를 사용하여 ESLint를 자동화하는 것이 좋습니까? 아니면 장기적으로 문제가 발생합니까?ESLint를`--fix` 플래그로 자동화하는 것과 관련된 어떤 문제점이 있습니까?

예를 들어 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는보고 된대로 해당 사례를 수정하는 것이 우선 순위가됩니다. –