swsnu / swppfall2019

31 stars 22 forks source link

Some Tips About Linter #164

Open ktaebum opened 5 years ago

ktaebum commented 5 years ago

오늘 Linter를 어떻게 설정하는지에 대해서 간략하게 다뤘는데요

이미 Travis-CI에 넣어보신 분들은 알겠지만 linter가 엄청 에러를 띄우는 것을 볼 수 있습니다. 여러분께서는 프로젝트를 진행하면서 이런 에러들이 없도록 하셔야 하는데요

하지만 코딩을 하다보면 피치 못하게 linter에 걸리게 코드를 짜야하는 경우가 존재합니다 (특정 line에 대해서) 그런 경우에 사용할 수 있는 방법인데요 eslint, pylint 둘 다 특정 code block에 대해서 특정 check를 disable 할 수가 있습니다. 예를들어 pylintrc에 line length가 80자 미만으로 되게 설정을 해놨는데 특정 line은 그걸 넘어야 한다 (\를 사용해서 line을 나누는 것보다 한 줄로 쓰는 게 나은 경우, 아니면 cyclic한 import 문제 때문에 중간에 import를 해야하는 경우 등등)

이런 경우에는 다음과 같이

# pylint: disable=line-too-long
some codes whose length exceed 80 characters
# pylint: enable=line-too-long

으로 특정 code scope에 대해서 linter check를 disable 할 수 있습니다

이건 편법이 아니고 실제 다양한 open source project (e.g. tensorflow)에서 사용이 됩니다

eslint는 비슷하게

/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */

이런식으로 사용할 수 있습니다.

코드를 짜면서 잘 활용하시길 바랍니다 🙂

P.S. 기본 pylintrc generate는

pylint --generate-rcfile

command를 통해 할 수 있습니다. 그리고 framework / library에 맞는 linter (우리로 따지면 React와 Django)는 표준 lintrc template들을 쉽게 검색하면 찾을 수 있으니 활용하시는 걸 추천드립니다.

또한 autoformatter (yapf, jsbeautify, clang-format 등등)에 대해서 특정 rc config와 동일하게 autoformat 하게 formatter rc를 설정 할 수도 있습니다