린팅 도구는 코드 내의 불완전성과 불규칙성을 감지하는 데 필수적인 도구로, 구문과 구조에 대한 포괄적인 분석을 제공합니다.
Flake8은 코드베이스 내의 구문 및 서식 불일치뿐만 아니라 중복 임포트와 같은 기타 잠재적 문제를 모두 감지하는 널리 사용되는 Python 린팅 도구입니다. 이 애플리케이션은 특정 요구 사항에 맞게 수정하거나 확장할 수 있는 사용자 정의 가능한 규칙 세트로 인해 뛰어난 적응성을 자랑합니다.
VS Code를 통해 코드가 변경될 때마다 Flake8이 실행되도록 사용자 지정할 수 있으므로 코딩 품질을 보장하는 프로세스를 간소화할 수 있습니다. 이 기능의 가용성으로 인해 Flake8은 Python 개발에 없어서는 안 될 유틸리티가 되었습니다.
Flake8 설치하기
Flake8의 원활한 설치 프로세스를 보장하기 위해서는 두 가지 전제 조건을 미리 처리하는 것이 필수적입니다. 먼저 시스템에 파이썬과 pip가 설치되어 있는지 확인합니다.
터미널에서 다음 명령을 실행하여 Flake8을 설치하세요:
다음 명령을 실행하여 널리 사용되는 Python 코드 링터인 Flake8이 시스템에 설치되었는지 확인하시기 바랍니다:
4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13 on
Linux
.
Flake8이 성공적으로 설치되면 사용을 시작할 수 있습니다.
Flake8을 사용하여 Python 코드 분석하기
Flake8 활용에 대한 숙련도를 파악하기 위해 다음 코드를 고려하는 것으로 시작하십시오. 이 코드는 몇 가지 고의적인 불완전성으로 구성되어 있습니다. greeting.py라는 문서에 복사해 주세요.
def greeting(name):
print("Hello, " + name)
greeting("Alice")
greeting("Bob")
단일 파일에서 Flake8 실행
Flake8을 사용하여 단독 파일을 분석하려면 다음 명령줄 지침을 따라야 합니다.
flake8 path/to/file.py
아래 지침에 따라 진행하십시오: 1. ‘greeting.py’ 파일이 있는 디렉토리에 접속합니다. 2. 터미널 또는 명령 프롬프트를 사용하여 다음 명령을 입력합니다:
flake8 greeting.py
파이썬 린터 도구인 Flake8이 코드 내에서 들여쓰기 문제가 발생했음을 알리는 알림을 표시하는 것이 좋습니다.
greeting.py:5:1: E999 IndentationError: unexpected indent
앞서 언급한 결과는 5줄의 들여쓰기에 문제가 있음을 의미합니다. 이 실수를 수정하려면 해당 줄의 시작 부분에 있는 불필요한 공백을 제거해야 합니다.
def greeting(name):
print("Hello, " + name)
greeting("Alice")
greeting("Bob")
Flake8을 실행하면 다음과 같은 경고가 생성됩니다.
greeting.py:4:1: E305 expected 2 blank lines after class or function definition, found 1
greeting.py:5:16: W292 no newline at end of file
앞서 언급한 데이터에 따르면 몇 가지 우려 사항이 있음을 알 수 있습니다.
4행에서 인사말 메시지에 대한 함수 정의에 따라 두 개의 빈 줄이 있어야 하지만 빈 줄이 하나만 나타납니다.
5번째 줄의 지정된 요구 사항에 따라 문서 끝부분에 빈 줄을 추가로 포함해야 합니다.
앞서 언급한 문제를 해결하면 Flake8에서 더 이상 알림이 생성되지 않을 것으로 예상됩니다.
지금까지는 단독 문서에 국한하여 검토했습니다. 그러나 대부분의 경우 두 개 이상의 파일에 대한 분석이 필요할 것으로 예상됩니다.
여러 파일에서 Flake8 실행
“python def greet(name): print(“안녕하세요, ” + name) “` 이 코드는 무엇을 수행하려고 할까요? 이 코드가 실행되면 어떻게 될까요? 이 코드는 `name`이라는 인수를 받는 `greet()`라는 간단한 함수 정의처럼 보입니다. 이 함수는 `name` 변수 값, 즉 `”Hello,”` 뒤에 입력 `name`을 접두사로 붙여 `+` 연산자를 사용한 문자열 연결을 통해 미리 정의된 메시지를 출력하여 이 함수를 호출할 때 이름이 인자로 전달되는 모든 사용자에 대한 개인화된 인사 메시지를 생성합니다. 이 코드가 실행되면 사용자에게 이름을 입력하라는 메시지를 표시한 다음 화면에 사용자의 이름이 포함된 맞춤형 인사말 메시지를 표시합니다.
from greeting import greeting
def test_greet():
assert greeting("Alice") == "Hello, Alice!"
이 두 파일을 검사하려면 다음 지시어를 실행하세요.
flake8 greeting.py test_greeting.py
이 방법은 효과적이지만 여러 파일을 처리할 때 여러 파일 이름을 수동으로 입력하는 것은 지루하고 오류가 발생할 수 있습니다.
현재 로케일 내에 있는 모든 파일을 종합적으로 검사하는 다른 방법은 다음 지시어를 사용하는 것입니다:
flake8 .
Flake8 오류 및 경고 이해
Flake8은 (1) 따옴표 또는 대문자 사용의 일관성 없는 사용과 같은 스타일 및 서식과 관련된 문제, (2) 구문 오류 및 정의되지 않은 변수를 포함한 코드 로직의 잠재적 오류와 관련된 문제의 두 범주를 생성합니다.
오류는 코드의 예상 구문 또는 구조에서 벗어나 제대로 실행되지 않는 것으로, 예시 greeting.py의 들여쓰기 오류와 같은 오류를 말합니다.
주의 알림은 greeting.py 예시의 “파일 끝에 줄 바꿈 없음” 경고와 같이 예상되는 문제 또는 PEP 8 스타일 가이드라인 위반을 나타냅니다.
지정된 그룹 A의 하나 이상의 항목이 제공된 개체 키와 키가 일치하지 않아서 처리되지 않았습니다.A의 모든 값이 입력 개체에 해당하는 키를 갖도록 코드를 수정하거나 명령줄의 키 함수를 –key-fn=
코드 블록 E101의 들여쓰기 내에 공백 문자와 표 표시가 혼합되어 있어 가독성 및 프로그래밍 일관성 문제가 발생할 수 있는 것으로 확인되었습니다.
특정 위치의 빈 줄 수에 대한 예기치 않은 발견을 보고하는 프롬프트가 표시됩니다. 두 줄의 빈 줄이 예상되었지만 그보다 적거나 많은 줄이 발견되었습니다.
예기치 않은
작업 W291은 주어진 텍스트에서 후행 공백을 제거하는 작업을 포함합니다.
주어진 텍스트는 프로그래밍 언어의 기술적 오류 메시지로, 코드 한 줄이 최대 글자 수 제한인 79자를 초과했음을 나타냅니다.
앞서 언급한 메시지는 모듈을 성공적으로 가져왔지만 프로그램 실행 내내 휴면 상태로 비활성 상태임을 나타냅니다.
Flake8은 문제가 감지된 코드의 특정 줄과 위치에 대한 참조를 포함하여 Python 코드에 대한 포괄적인 보고서를 제공합니다. 이 정보를 통해 개발자는 코드 내의 문제를 신속하게 식별하고 해결할 수 있으므로 디버깅에 소요되는 시간을 줄일 수 있습니다.
Flake8 구성하기
Flake8은 기본 설정이 불충분하거나 지나치게 엄격한 경우 사용자가 특정 프로젝트 요구 사항에 맞게 표준을 조정할 수 있는 수준의 사용자 지정 기능을 제공합니다.
사용 가능한 구성에는 다음이 포함될 수 있지만 이에 국한되지는 않습니다:
특정 실수나 알림을 지나치거나 무시합니다.
텍스트 줄 길이의 최상위 제한을 설정하는 프로세스를 ‘최대 줄 길이 설정’이라고 합니다.
추가 규정 보완.
이 가이드의 실제 적용을 보여주기 위해 “setup.cfg”라는 구성 파일을 설정하세요. 또한 “tox.ini” 또는 “.flake8″이라는 이름의 문서 내에 구성 설정을 통합할 수도 있습니다.
주어진 문장을 좀 더 우아하고 세련된 언어로 바꾸는 것이 좋습니다. 제가 제안하는 것은 다음과 같습니다: “`python 이 코드 파일에서 다음 지침을 구현하여 Flake8 검사로 개발 프로세스를 시작하세요:
[flake8]
Linux 프로그램에서 “./configure” 명령은 사용자의 기본 설정에 따라 프로그램의 동작을 설정하고 사용자 지정하는 데 사용됩니다. 이 과정에는 프로그램 작동 방식을 결정하는 다양한 옵션을 지정하는 작업이 포함됩니다.이러한 옵션에는 데이터 파일의 위치, 프로그램에서 사용할 스레드 수, 기타 영향을 미치는 매개변수 등의 설정이 포함될 수 있습니다.
[flake8]
max-line-length = 100
ignore = F401
앞서 언급한 사양에 따르면 Flake8은 소스 코드 파일 내에서 문자 수 제한 100자를 초과하는 모든 줄에 대해 경고를 생성해야 합니다. 또한 ‘무시=F401’ 명령은 Flake8이 활용되지 않은 가져오기 문과 관련된 모든 문제를 무시하도록 지시합니다.
지정된 매개변수는 구성 파일에 의무적으로 포함되지 않고 명령줄 입력을 통해 지정할 수 있으므로 구성 파일에 추가로 수동으로 입력할 필요가 없습니다.
flake8 --ignore E203 --max-line-length 100
Flake8을 활용하는 수단으로 구성 파일을 구현하면 여러 가지 이점이 있으며, 특히 도구를 사용할 때마다 동일한 옵션을 반복적으로 지정할 필요가 없다는 점이 가장 큰 장점입니다.
VS Code에서 Flake8 사용
Python 애플리케이션을 작성하는 데 VS Code 플랫폼을 활용하면 flake8 확장자를 통합할 수 있어 Python 파일을 하나의 유형으로 실시간 린팅하는 데 용이합니다.
먼저 VS Code 마켓플레이스에서 flake8 확장을 다운로드하세요. 그런 다음 VS 코드 설정으로 이동하여 “python.linting.flake8Enabled”를 검색하여 구성을 설정하고 flake8을 활용한 린팅 기능을 활성화합니다.
코드 편집기는 문제가 있는 코드 세그먼트 옆에 나타나는 고유한 아이콘을 통해 구문 오류 및 경고 메시지에 대한 알림을 표시합니다. 강조 표시된 섹션 위로 커서를 가져가면 오류에 대한 설명과 함께 잠재적인 해결 방법을 제공하는 정보 팝업 창이 표시됩니다.
또한 PyCharm과 같은 다른 Python 통합 개발 환경(IDE)에서도 린팅 프로세스를 간소화하도록 구성할 수 있는 Flake8 통합을 제공합니다.
왜 린터를 사용해야 하나요?
코드를 작성하는 동안 실수로 불일치 및 불규칙성을 포함시켜 애플리케이션의 오작동 또는 최적의 성능 저하를 초래할 수 있습니다. 다행히도 Flake8과 같은 도구를 사용하면 특정 결함이 발생하기 전에 이를 감지할 수 있으므로 보다 세련되고 효율적인 코드를 작성할 수 있습니다. 이 유틸리티를 개발 프로세스에 통합하는 것을 적극 권장합니다.
통합 개발 환경(IDE) 또는 텍스트 편집기에서 린팅을 활용하고 이를 지속적 통합 워크플로에 통합하면 기본 브랜치와 병합하기 전에 코드에 결함 및 문제가 있는지 자동으로 면밀히 조사할 수 있습니다.