Python 코드 스캐닝: Python 코드 사양 및 오류 검사를 위한 강력한 도구 - flake8 자세한 설명 및 실습

 

목차

소개하다

flake8의 특징

설치 및 구성

경험

명령줄 매개변수

PyCharm에서 사용됨

명령줄에서 사용됨

구성 파일을 사용하여 항목 검사

지정된 코드 줄에서 지정된 검사 항목을 마스킹합니다.

참고자료


참고: 후속 기술 공유, 즉각적인 업데이트, 보다 시의적절한 기술 정보 및 학습 기술 자료는 공식 계정 CTO Plus 에서 공개될 예정입니다 . 공식 계정: CTO Plus를 팔로우하세요.

Python 개발에서는 코드 사양과 오류 검사가 매우 중요한 측면입니다. 좋은 코드 사양은 코드의 가독성과 유지 관리성을 향상시킬 수 있으며, 오류 검사는 잠재적인 문제를 적시에 찾아 수정하는 데 도움이 됩니다. 많은 코드 사양 및 오류 검사 도구 중에서 flake8은 널리 사용되고 강력한 도구입니다. 이번 글에서는 flake8의 특징과 사용법, 실제 경험에 대해 자세히 소개하겠습니다.

이 기사 "Python 코드 스캐닝: Python 코드 사양 및 오류 검사를 위한 강력한 도구 - flake8에 대한 자세한 설명 및 실습"은 "Python 코드 사양 및 스캐닝" 시리즈의 여섯 번째 기사에 속합니다. 처음 5개 기사는 다음에 따라 참조할 수 있습니다. 대중도 CTO Plus 후속 기사를 환영합니다.

코드 사양 및 정적 스캔 시리즈 내용:

  1. " 엔터프라이즈급 Python 코드의 정적 스캐닝 - 코드 사양, 논리, 문법, 보안 검사 및 자동 코드 배열 소개 "
  2. " Python PEP8 코드 사양 읽기 "
  3. " Python 코드 스캐닝: 차세대 Python Linter 도구 Ruff "
  4. " Python 코드 스캐닝: Python 코드 품질을 향상시키는 아티팩트 -pylint 자세한 설명 및 사용 가이드 "
  5. " Python 코드 스캔: 경량 Python 정적 코드 분석 도구 pyflakes "
  6. " Python 코드 스캐닝: Python 코드 사양 및 오류 검사를 위한 강력한 도구 - flake8 자세한 설명 및 실습 "
  7. " Python 코드 스캐닝: mypy를 검사하는 정적 유형을 위한 최선의 선택 "
  8. " Python 코드 스캔: Python 코드에서 자동으로 중복 제거 - autoflake 사용 팁 및 예제 "
  9. " Python 코드 스캐닝: Python 코드 형식 지정을 위한 강력한 도구 - yapf 자세한 설명 및 모범 사례 "
  10. " Python 코드 스캐닝: 한 번의 클릭으로 Python 코드 형식을 지정하는 마법 - 블랙 사용법 튜토리얼 "
  11. " Python 코드 스캔: Import 문 자동 정렬 도구-isor 사용 가이드 및 예제 "
  12. " Python 코드 스캐닝: Python 코드 스타일을 자동으로 복구하는 도구 - autopep8 자세한 설명 및 예제 "
  13. " Python 코드 스캐닝: project-pyproject-flake8 구성 및 사용법의 코드 사양 및 오류 검사 "
  14. " Python 코드 스캐닝: 기업 수준의 코드 보안 취약점 스캐닝 밴디트 "

소개하다

Flake8은 Python 코드가 표준화되었는지 확인하는 데 도움을 주기 위해 Python에서 공식적으로 출시한 도구로, 현재 비교적 널리 사용되는 Pylint에 비해 Flake8은 유연한 확인 규칙을 갖고 있으며 추가 플러그인 통합을 지원하며 강력한 확장성을 가지고 있습니다. 코드 준수 테스트를 구현하기 위해 프로그램을 작성할 수 있습니다.

Pylint와 유사하게 Flake8을 사용하면 구성 파일을 통해 확인된 콘텐츠를 사용자 정의 할 수 있습니다. 여기에는 매우 명확한 문서가 있으며 자동 코드 검사를 개발 작업 흐름에 통합하는 데 유용한 몇 가지 커밋 후크가 포함되어 있습니다.

Flake8은 이후 장에서 소개할 PyCharm과 같은 일부 인기 있는 편집기 및 IDE에 통합될 수도 있습니다.

Flake8은  세 가지 코드 라이브러리로 구성되어 있으며 "PEP 8, pycodestyle, Pyflakes, Pylint, McCabe(코드 복잡성 검사기) 및 타사 플러그인을 통합하여 Python 코드 스타일과 품질을 확인하는 Python 도구"입니다.

Ned Batchelder의 McCabe 스크립트는 함수의 McCabe 복잡성을 계산하는 데 사용되는 Python 코드 분석 도구 입니다 . McCabe 복잡성은 순서도의 노드 및 분기 수를 기반으로 한 코드 복잡성의 척도입니다. Batchelder 의 스크립트는 AST (추상 구문 트리)를 사용하여 Python 함수를 분석 하고 McCabe 복잡성을 계산합니다. 이 도구는 코드 유지 관리 가능성을 평가하고 복잡성을 이해하는 데 사용할 수 있습니다.

flake8 의 특징

flake8은 여러 도구를 통합하고 다음과 같은 기능을 갖춘 Python 코드 사양 및 오류 검사 도구입니다.

1. 강력한 포괄성: flake8은 pycodestyle, pyflakes 및 McCabe 등을 포함한 여러 도구를 통합하여 코드의 여러 문제를 한 번에 확인할 수 있습니다. 이를 통해 도구 설치 및 구성이 줄어들고 개발 효율성이 향상됩니다.

2. 유연성 및 사용자 정의 가능: flake8은 프로젝트 요구 사항에 따라 사용자 정의할 수 있는 풍부한 구성 옵션을 제공합니다. 다양한 프로젝트와 팀에 맞게 구성 파일이나 명령줄 매개변수를 통해 규칙을 설정하고 목록을 무시할 수 있습니다.

3. 통합 용이성: flake8은 편집기, 지속적인 통합 시스템 및 코드 검토 도구와 같은 다른 도구 및 환경과 통합될 수 있습니다. 이를 통해 개발 과정에서 코드를 실시간으로 확인할 수 있고, 적시에 피드백을 주어 코드 품질을 향상시킬 수 있습니다.

4. 강력한 확장성: flake8은 맞춤형 플러그인을 지원하며 필요에 따라 자체 검사 규칙을 정의할 수 있습니다. 이를 통해 flake8은 다양한 프로젝트와 팀의 요구 사항에 적응할 수 있습니다.

설치 및 구성

우리는 자체 가상 환경에서 PIP 설치를 사용할 수 있습니다: pip install flake8

PyCharm에서 Flake8 구성

이전 Ruff 및 pylint 도구처럼 IDE 편집기에서 flake8 감지 도구를 구성할 수 있습니다. 구성은 다음과 같습니다.

이름: Flake8 (아무거나 쓰세요)

프로그램: `$PyInterpreterDirectory$/python`

인수: -m flake8 --max-line-length=130 --exclude venv,migrations $ProjectFileDir$ (필요에 따라 구성 가능)

작업 디렉터리: `$ProjectFileDir$`

경험

flake8의 실제 사용에서 다음 경험을 바탕으로 검사 효과를 향상시킬 수 있습니다.

1. 규칙 구성: 프로젝트의 필요에 따라 구성 파일이나 명령줄 매개변수를 통해 규칙 및 무시 목록을 설정할 수 있습니다. flake8의 공식 문서와 커뮤니티 경험을 참조하여 프로젝트에 적합한 규칙을 선택할 수 있습니다.

2. 정기 점검: 코드의 품질과 유지보수성을 유지하기 위해 정기적으로 코드를 점검하는 것이 좋습니다. 코드 제출 전이나 지속적인 통합 환경에서 검사를 수행하여 적시에 문제를 찾아 수정하는 데 도움을 받을 수 있습니다.

3. 경고에 주의하세요: 오류 외에도 flake8은 경고 메시지도 출력합니다. 때로는 경고가 심각한 문제가 아닐 수도 있지만 주의를 기울일 가치가 있습니다. 프로젝트의 필요에 따라 경고를 수정할지 여부를 결정할 수 있습니다.

4. 에디터와 통합: 개발 과정에서 실시간으로 코드를 확인하려면 에디터에 flake8을 통합하는 것이 좋습니다. VS Code 및 PyCharm과 같은 많은 인기 편집기는 flake8용 플러그인 및 통합 기능을 제공합니다.

다음에는 이 작품의 용도를 소개하겠습니다.

명령줄 매개변수

다음은 Flake8 도구에서 일반적으로 사용되는 몇 가지 명령줄 매개변수를 요약한 것입니다. 다른 내용은 공식 문서를 참조하세요.

--max-line-length=<length>: 한 줄당 최대 문자 수를 설정합니다. 기본값은 79입니다.

--ignore=<errors>: 무시할 오류 코드를 설정합니다. 여러 오류 코드는 쉼표로 구분됩니다.

--exclude=<패턴>: 제외할 파일 또는 디렉터리 패턴을 설정합니다.

--filename=<patterns>: 확인할 파일 또는 디렉터리 패턴을 설정합니다.

--max-complexity=<숫자>: 함수의 최대 복잡도를 설정합니다. 기본값은 10입니다.

--select=<오류>: 확인할 오류 코드를 설정하며, 여러 개의 오류 코드는 쉼표로 구분됩니다.

PyCharm 에서 사용됨

확인해야 할 프로젝트에서 마우스 오른쪽 버튼을 클릭하고 외부 도구인 Flake8을 선택하면, 이때 우리 코드에 몇 가지 문제가 출력됩니다.

다음을 설정하여 지정된 디렉터리의 검사를 제외할 수도 있습니다. $FilePath$ --exclude template_module

명령줄에서 사용됨

  1. 전체 프로젝트 파일의 경우

전체 프로젝트를 확인하고 싶다면 프로젝트 루트 디렉터리에서 flake8 명령어를 직접 실행하거나, 지정된 디렉터리를 불러오면 됩니다.

flake8 [options] path/to/dir 

  1. 단일 파일의 경우

지정된 단일 파일에서 코드 감지를 수행할 수도 있습니다.

flake8 [options] path/to/module.py 

flake8 pylint_test.py

  1. 특정 검사 항목에 대해 단일 파일 탐지 수행

특정 검사 항목만 감지하고 싶다면 매개변수 select를 통해 지정하면 됩니다.

flake8 --select=F401 파일명.py

그 중 --select=F401은 사용하지 않는 변수만 검사한다는 의미이고, filename.py는 검사할 Python 파일 이름을 뜻한다.

구성 파일을 사용하여 항목 검사

프로젝트의 루트 디렉토리에 새로운 .flake8 파일을 생성할 수 있으며, flake8 도구를 지정하면 기본적으로 루트 디렉토리에서 구성 파일을 찾은 다음 이 구성 파일을 기반으로 프로젝트를 스캔합니다.

지정된 코드 줄에서 지정된 검사 항목을 마스킹합니다.

코드에서 특정 라인의 탐지와 특정 탐지 항목의 탐지를 차단하려는 경우 flake8도 이를 쉽게 달성할 수 있습니다.

특정 코드 줄에 주석과 noqa를 사용하여 이를 수행할 수 있습니다. # noqa: F405

다음과 같이 변경하면 됩니다.

전체 파일의 모든 오류를 무시하는 방법:

이 파일이 감지되는 것을 방지하기 위해 파일 시작 부분에 #flake8: noqa를 추가할 수도 있습니다.

noqa에서는 별도의 줄처럼 파일 상단에 코드별 주석을 넣을 수 있는 방법이 없습니다. #flake8: noqa: F401은 언뜻 작동하는 것처럼 보일 수 있지만 실제로는 " 파일의 모든 메시지 무시"를 의미하는 #flake8: noqa로만 감지됩니다.

전반적으로 flake8은 코드의 품질과 유지 관리성을 향상시키는 데 도움이 될 수 있는 인기 있고 강력한 Python 코드 사양 및 오류 검사 도구입니다. 포괄적이고 유연하며 사용자 정의가 가능하고 통합이 쉽고 확장성이 뛰어납니다. flake8을 사용하면 코드의 여러 문제를 한 번에 확인하고 적시에 수정할 수 있습니다. flake8을 함께 사용하여 표준화되고 고품질의 Python 코드를 만들어 봅시다!

참고자료

  1. flake8配置: Flake8 구성 — flake8 6.1.0 문서
  2. flake8钩子: 버전 제어 후크 사용 — flake8 6.1.0 문서
  3. Flake8: 스타일 가이드 시행을 위한 도구 — flake8 6.1.0 문서
  4. GitHub - PyCQA/flake8: flake8은 pycodestyle, pyflakes, mccabe 및 타사 플러그인을 함께 접착하여 일부 Python 코드의 스타일과 품질을 확인하는 Python 도구입니다.
  5. https://flake8.pycqa.org/en/latest/index.html#quickstart
  6. https://github.com/pycqa/flake8/blob/main/docs/source/index.rst
  7. 옵션 및 설명의 전체 목록 — flake8 6.1.0 문서
  8. Pylint 3.0.0a8-dev0 문서
  9. 옵션 및 설명의 전체 목록 — flake8 4.0.1 문서
  10. Python 코드 사양: 엔터프라이즈 수준 코드 정적 스캐닝 - 코드 사양, 논리, 구문, 보안 검사 및 코드 사양 자동 배열(1)_pycharm 코드 사양 확인_SteveRocket의 블로그-CSDN 블로그
  11. https://blog.csdn.net/zhouruifu2015/article/details/129877179

Python 칼럼
https://blog.csdn.net/zhouruifu2015/category_5742543


자세한 내용 · 위챗 공개계정 [ CTO Plus ]를 검색하시고 팔로우하시면 더 많은 정보를 얻으실 수 있습니다. 함께 배우고 소통합시다.

공개 계정에 대한 설명을 보려면 다음 링크를 방문하세요.


더 많은 설렘을 원하시면 공식 계정을 팔로우하여 함께 배우고 성장하세요

Articulate 소개 "지식과 기술의 포터가 되십시오. 평생 학습 열광자가 되십시오. 깊이와 폭을 갖춘 기술 집단이 되십시오." 저는 항상 전문 분야에서 기술을 개발하고 싶었습니다 https://mp.weixin.qq. com icon-default.png?t=N7T8/ s?__biz=MzIyMzQ5MTY4OQ==&mid=2247484278&idx=1&sn=2b774f789b4c7a2ccf10e465a1b9def6&chksm=e81c2070df6ba966026fd7851efa824b5e2704e3fd34e 7 6228ca4ce64d93f7964cd4abe60f2b#rd

표준 도서관 시리즈 추천 도서:

추천
도서:

Supongo que te gusta

Origin blog.csdn.net/zhouruifu2015/article/details/131264442
Recomendado
Clasificación