본문 바로가기

파이썬 코드 문법 검사기 flake8

기술적인 이야기/기타 개발 2020. 1. 29.
반응형

flake8은 파이썬(Python) 코드를 점검해주는 도구이자 파이썬 패키지입니다. 이 도구는 일부 오류가 있을 법한 코드나 불필요한 모듈 임포트(import), 이상한 띄어쓰기나 잘못된 들여쓰기 등등 여러 문제점을 알려줍니다. 약간 딱딱하게 표현해서 PEP8 코딩 컨벤션에 맞지 않는 것들을 알려줍니다. 이런 기능을 하는 도구를 린트(Lint)라고 표현하기도 하지요. 비슷한 도구로 pyflake도 있습니다.

실패를 미연에 막자...라는 취지의 이미지 땜빵 데헷

설치법

파이썬 패키지이기 때문에 pip로 그냥 설치하면 됩니다.

pip install flake8

시스템에 따라 sudo를 줘서 루트 권한으로만 설치가 가능할 수도 있습니다.

사용법

flake8은 기본적으로 셸 CLI 유틸리티이기 때문에 커맨드 라인에서 간단히 실행시킬 수 있습니다. 그리고 실행 시 옵션으로 오류 체크를 할 파이썬 코드 파일의 경로를 줄 수 있습니다.

flake8 /foo/bar/some/file.py

이렇게 하면 체크된 내용을 텍스트로 화면에 표시해 줍니다.

하지만 요즘은 이렇게 단독으로 실행시키기보다는 에디터나 IDE 등에서 자동으로 호출해서 체크하는 방식으로 동작하는 경우도 많기 때문에 굳이 손수 실행시킬 일은 잘 없는 것 같습니다. Emacs나 Vim 등을 사용한다면 아마도 관련된 확장 플러그인이 있을 테니 잘 찾아봅시다.

반응형

설정 파일

문법 체크 도구이지만 종종 몇 가지 체크는 생략하게 하고 싶다거나 등등 flake8 자체를 설정하는 방법이 필요한 경우도 있습니다. 이를 위한 설정 시스템 역시 제공합니다.

전역 설정파일은 ~/.config/flake8 파일에, 프로젝트 단위 설정은 프로젝트 루트에 .flake8 혹은 setup.cfg 파일로 설정 내용을 작성하면 됩니다.

대충 아래와 같은 식으로 작성합니다.

[flake8]
max-line-length = 80
ignore = F123, E456
exclude = file_to_exclude.py

위의 예제에 쓰인 각 키워드는 아래와 같은 의미입니다.

  • max-line-length: 칼럼 사이즈(한 라인의 권장 길이). 기본은 아마도 하드웨어 터미널 권장 크기인 80 칼럼일 것입니다.
  • ignore: 체크하지 않을 문법의 코드. 예제에 쓰인 F123이나 E456은 그냥 예제일 뿐이며 별 의미는 없습니다.
  • exclude: 체크하지 않을 파일 목록.

물론 설정 가능한 내역은 이 보다 더 광범위할 수 있으니 공식 매뉴얼 혹은 PEP8 코딩 컨벤션을 참조합시다.

728x90

파일 별로 일부 경고 무시하기

별도의 설정 파일을 사용하지 않고 커맨드 라인 옵션으로도 특정 문법 체크를 무시할 수 있습니다.

flake8 --ignore F123,E456 FILEPATH

하지만 에디터나 IDE 등을 통해 사용되는 경우는 이렇게 쓸 일이 없겠죠?

다른 방법으로 소스 코드 상에 주석으로 설정하는 방법이 있습니다. 예를 들어 소스 코드에서 특정 라인 하나만 무시하려면 라인 끝에 아래와 같은 주석으로 표기가 가능합니다.

... some statement ...  # noqa: F123,E456

이렇게 하면 해당 라인에서 F123과 E456 문법 체크를 하지 않습니다. 만약 별도로 에러 코드를 표기하지 않고 noqa 만 명시하면 모든 오류 체크가 무시됩니다.

위와 비슷하게 아래처럼 아예 해당 파일의 체크를 하지 않게 할 수도 있습니다. 파일 상단에 아래의 주석을 추가하면 됩니다.

# flake8: noqa

이렇게 하면 이 파일은 문법 체크를 하지 않게 됩니다.

이렇게 하는 경우는 그다지 흔하지는 않겠지만, 만약 호스트의 패키지 구성과 디플로이 환경의 패키지 구성이나 버전 등이 다를 경우 모듈이 없다는 등등 불필요한 경고를 보게 될 수도 있습니다. 아무래도 경고가 계속 표시되는 것은 불편하거나 불쾌(?)할 수도 있겠지요? 이럴 때는 간간히 사용할 수도 있을 것 같습니다.

728x90
반응형

댓글