Python에서 깨끗한 코드 및 Linting 자동화

포맷,lint, 테스트 코드에 사용되는 패키지를 연구한 다음, 이 과정을 자동화하기 위해 미리 제출한 갈고리를 만들 것입니다.
우리가 사용할 가방에 대해 토론하기 전에, 우리가 사용할python 파일을 먼저 봅시다
우리는 helpers라는 함수를 가지고 있다.py

그것은 간단한 산술 기능을 가지고 있다.모든 함수는 두 개의 매개 변수를 받아들여 산술 연산을 실행합니다


다른 파일 이름은 tester helpers입니다.py





이 파일은 우리가 이전에 정의한 함수를 테스트하는 것일 뿐입니다.이것은 assert를 사용하여 간단한 상등성 검사를 진행합니다


이제 우리가 사용할 패키지를 봅시다


Testing 🧪


Pytest 7.7k+ ⭐️


이 패키지는 단원 테스트를 실행하는 데 도움을 줍니다.단원 테스트를 포함하는python 파일은 "test 3;"로 시작해야 한다는 요구 사항을 기억해야 합니다


는 assert 문장만 지원합니다.패키지 설치



pip install pytest

단원 테스트를 실행하려면 아래 명령을 입력하십시오



pytest test_helpers.py

모든 테스트가 통과되면 비슷한 출력을 볼 수 있습니다



test_helpers.py ....             [100%]

========= 4 passed in 0.01s ===========

여러 개의 상대적인 가져오기와 관련된 오류가 발생하면



astroid.exceptions.TooManyLevelsError:

이것은pytest의 의존항일 수 있습니다.astroid를 마운트 해제하고 다시 설치해야 합니다.이것은 altest astroid 버전이 설치되어 있는지 확인합니다



pip uninstall astroid
pip install astroid

이 다음에pytest를 마운트 해제하고pytest
설치해야 합니다



pip uninstall pytest
pip install pytest

Formatting ✍️


YAPF 12k+ ⭐️


이것은 구글에서 개발한 것으로 현지 포맷을 지원합니다.패키지 설치



pip install yapf

파일을 포맷하려면 아래 내용을 입력하십시오



yapf --in-place *.py

이것은 모든 최고급python 파일을 포맷합니다. 폴더를 포함하려면 아래



yapf --in-place **/*.py

하지만 가상 환경 폴더도 포함됩니다.venv 폴더를 무시하려면 파일을 만듭니다.yapfignore 및 venv 추가


주의: 이 명령은 실행하는 데 시간이 좀 걸릴 수 있습니다."**"대신 폴더의 특정 이름을 사용할 수 있습니다


isort 4.1k+ ⭐️


이 패키지는pep8 규칙을 따르도록 가져오기 문장을 정렬합니다


가져오는 순서는 다음과 같습니다:


  • 표준 라이브러리 가져오기.
  • 관련 제3자 수입.
  • 로컬 애플리케이션/라이브러리별 가져오기

isort 가져오기 문장을 다시 주문하여 상기 규칙을 준수할 수 있도록 하세요

패키지 설치



pip install isort

isort
실행



isort .

autoflake 400+⭐️


사용하지 않은 가져오기, 변수 및 대상 키를 제거하는 데 도움이 됩니다


패키지 설치



pip install autoflake

autoflake 실행



autoflake --in-place --remove-unused-variables --remove-all-unused-imports *.py

Some other formatters



Linting 🔎


Pylint 3.5k+ ⭐️


pylint은 코드가pep8 규칙과 표준을 따르도록 합니다.이것은python 파일마다 10점 (마이너스 점수도 줄 수 있음)


패키지 설치



pip install pylint

문미 운행



pylint --fail-under=7 *.py

매개 변수--fail-under는 하한선입니다. 모든 파일의 점수가 하한선보다 낮으면 오류를 반환합니다


Pre-commit Hook 🪝


What Are Git Hooks?


Git 갈고리는 기본적으로 중요한 조작이 발생하기 전에 터치하는 스크립트입니다. 예를 들어 제출하기 전에 제출한 후에 코드를 리포로 전송하기 전에 등등입니다. Git 갈고리와 각종 갈고리에 대한 정보를 더 많이 알 수 있습니다here


미리 제출한 갈고리에 중점을 두겠습니다.사전 제출 갈고리는 제출하기 전에 실행되는 갈고리입니다


먼저 소프트웨어 패키지를 설치합시다



pip install pre-commit

현재 우리는 예시를 생성하여 훅 YAML 파일을 미리 제출할 것이다. 잠시 후에 우리는 그것을 편집할 것이다



pre-commit sample-config

지금 갈고리를 추가합시다



pre-commit install

현재 제출할 때마다 YAML 파일에 정의된 미리 제출 갈고리를 실행합니다


YAML 파일을 업데이트합니다

모든 내용을 삭제하고 아래 내용만 보존



repos:
    - repo: local
      hooks:

YAML 파일hooks:에 플러그인(패키지)을 추가합니다.다음은 플러그인의 일반 문법



   - id: (unique id of hook)
     name: (name to be displayed in terminal)
     entry: (command to excute)
     language: system (for our case, always system) 
     always_run: true (if true, it will always run)
     pass_filenames: true (if true, hook will have access to the file name)

YAPF에 대한 예제 플러그인을 정의합니다



   - id: YAPF 
     name: YAPF 🧹
     entry: zsh -c 'yapf --in-place *.py'
     language: system
     always_run: true
     pass_filenames: true

bash를 사용하거나 윈도우즈에 있다면 "entry"의 zsh를 bash


다른 모든 플러그인은 비슷합니다. 다음은 모든 플러그인을 포함하는 YAML 파일 전체입니다





Whenever you update your YAML file, you will have to add the file to the staging area using git add . or git add .pre-commit-config.yaml


다음은 성공의 약속입니다



Conclusion


미리 제출 연결을 설정하면 코드가pep8 표준을 따르고 형식이 정확한지 확인합니다

나는 네가 이 문장이 유용하다고 생각하기를 바란다.나까지

좋은 웹페이지 즐겨찾기