ruff

Ruff Rust로 작성된 고성능 Python 린터이자 코드 포매터. 정적 분석을 통해 코드의 스타일 및 오류를 검토하고 잠재적 문제를 조기에 발견할 수 있도록 돕는다. 코드 스타일과 오류 탐지를 위한 기본 규칙 세트를 포함하고 있다. 기본적으로 PEP8 스타일 가이드를 기반으로 하며, 불필요한 공백, 잘못된 들여쓰기, 코드 복잡도 등 다양한 문제를 다룬다. 다양한 플러그인을 지원하며, 특정 코드 스타일이나 검사 규칙에 맞춘 프리셋을 불러올 수 있다. 특징 속도: 기존 린터들보다 10~100배 빠르다. 다기능성: Flake8, isort, pyupgrade, Black 등 여러 도구를 대체할 수 있다. 800개 이상의 린트 규칙을 지원. 자동 수정: 많은 린트 문제를 자동으로 수정할 수 있다. 설정 용이성: pyproject.toml 파일을 통해 쉽게 설정할 수 있다. 에디터 통합: VS code, Neovim, PyCharm 등 다양한 에디터와 통합 CI/CD 통합: Github Actions와 같은 CI/CD 환경에서 Ruff를 사용하여 코드 품질을 자동으로 검사할 수 있다. 모노레포 친화적: 프로젝트 내 여러 수준에서 설정 파일을 가질 수 있다. Jupyter 노트북 지원: Jupyter Notebook도 린트 및 포맷할 수 있다. 커스터마이징: 규칙 선택, 무시, 수정 가능 여부 등을 세밀하게 제어할 수 있다. 캐싱: 변경되지 않은 파일은 다시 분석하지 않아 실행시 더욱 빠르다 지속적인 개발: 활발한 개발과 커뮤니티 지원으로 계속 발전중 설치 방법 PyPI를 통한 설치 PyPI에서 ruff라는 이름으로 제공 ...

November 28, 2024 · 12 min · Me

autopep8

Autopep8 Python 코드를 PEP 8 스타일 가이드라인에 맞게 자동으로 포맷팅해주는 도구. PEP 8은 Python 코드의 가독성과 일관성을 높이기 위한 스타일 가이드로, Python 커뮤니티에서 널리 받아들여지는 표준이다. 장점: 유연성과 사용자 정의 가능성이 높다. 코드의 일관성을 유지하는 데 도움이 된다. 단점: 때로는 import 문을 과도하게 정렬하여 문제를 일으킬 수 있다. 들여쓰기를 완벽하게 강제하지 않을 수 있다. 사용예시: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 # 원본 코드 (포맷팅 전) def badly_formatted_function ( x,y ,z = 100 ): """이 함수는 의도적으로 나쁜 포맷팅을 가진 예시입니다""" result=x+ y+z if result>50: print( "결과가 50보다 큽니다!") elif result<0: print("결과가 음수입니다!") else:print( "결과가 0에서 50 사이입니다.") return result # list comprehension with bad formatting numbers=[ i for i in range( 10 )if i%2==0] # autopep8 실행 후의 코드 def badly_formatted_function(x, y, z=100): """이 함수는 의도적으로 나쁜 포맷팅을 가진 예시입니다""" result = x + y + z if result > 50: print("결과가 50보다 큽니다!") elif result < 0: print("결과가 음수입니다!") else: print("결과가 0에서 50 사이입니다.") return result # list comprehension with proper formatting numbers = [i for i in range(10) if i % 2 == 0] autopep8은 파이썬 코드를 PEP 8 스타일 가이드에 맞게 자동으로 포맷팅해주는 도구입니다. 주요 특징과 사용법은 다음과 같습니다: ...

November 28, 2024 · 3 min · Me

Black

Black Black은 파이썬을 위한 강력하고 엄격한 코드 포매터. “The Uncompromising Code Formatter"라는 모토를 가지고 있으며, 코드 스타일에 관한 논쟁을 줄이고 개발자들이 더 중요한 작업에 집중할 수 있도록 돕는 것을 목표로 한다. 주요 특징 일관성: Black은 모든 프로젝트에서 일관된 코드 스타일을 제공한다. 자동화: 코드를 자동으로 포맷팅하여 개발자의 수동 작업을 줄인다. PEP 8 호환: Python의 공식 스타일 가이드인 PEP 8을 따르지만, 일부 규칙은 더 엄격하다. 최소한의 설정: 설정 옵션이 제한적이어서 팀 내 스타일 논쟁을 줄인다. 빠른 실행: 대규모 코드베이스에서도 빠르게 작동한다. 핵심 원칙 줄 길이 제한 기본적으로 88자로 제한된다. (이는 PEP 8의 79자보다 더 관대합니다) 긴 줄은 자동으로 여러 줄로 나뉜다. 괄호 안의 요소들은 수직으로 정렬된다. 일관된 문자열 따옴표 사용 기본적으로 큰따옴표(")를 선호한다. 문자열 내에 따옴표가 있는 경우 자동으로 적절한 따옴표를 선택한다. 공백과 들여쓰기 항상 4칸 들여쓰기를 사용한다. 연산자 주변에 일관된 공백을 추가한다. 쉼표 뒤에 항상 공백을 추가한다. 설치 및 사용 pip를 통해 쉽게 설치할 수 있다: ...

November 28, 2024 · 3 min · Me

YAPF(Yet Another Python Formatter)

YAPF(Yet Another Python Formatter) Google에서 개발한 파이썬 코드 포매터. 이는 마치 전문 편집자가 문서의 형식을 일관되게 정리하는 것처럼, 파이썬 코드의 스타일을 자동으로 정리해주는 도구이다. YAPF는 코드의 논리는 그대로 유지하면서, 가독성과 일관성을 높이는 방식으로 코드를 재구성한다. 주요 특징 다양한 스타일 지원: PEP 8, Google, Facebook 등 사전 정의된 스타일을 제공한다. 높은 구성 가능성: 사용자가 세부적인 포맷팅 규칙을 설정할 수 있다. 강력한 재포맷팅: PEP 8을 준수하는 코드도 더 나은 가독성을 위해 재구성한다. 장점 높은 유연성과 구성 가능성 다양한 내장 스타일 제공 단점 설정의 복잡성 때로는 비결정적인 포맷팅 결과 작동 방식 이해하기 YAPF는 파이썬 코드를 다음과 같은 단계로 처리한다: ...

November 28, 2024 · 3 min · Me

Biome

Biome Biome은 JavaScript, TypeScript, JSX, TSX, JSON, CSS, GraphQL 등 다양한 웹 개발 언어를 위한 빠른 포매터이자 린터이다. Rust로 작성되어 높은 성능을 자랑하며, Prettier와 97% 호환성을 제공한다. 주요 기능 코드 포매팅(Formatting) 일관된 코드 스타일을 자동으로 적용한다. 들여쓰기, 줄 바꿈, 공백 처리 등을 자동으로 조정한다. Prettier와 유사한 결과물을 생성하지만 훨씬 빠른 속도를 보여준다. 린팅(Linting) 코드의 잠재적 문제를 미리 발견한다. 보안 취약점, 성능 이슈, 코드 스타일 위반 등을 검사한다. ESLint의 대부분의 규칙을 지원하면서도 더 빠른 처리 속도를 제공한다. 구문 분석(Parser) ...

November 21, 2024 · 2 min · Me

prettier

Prettier Prettier는 2017년에 출시된 “독선적인(Opinionated)” 코드 포매터. “독선적"이라는 의미는 코드 스타일에 대한 대부분의 결정을 Prettier가 자체적으로 내린다는 뜻. 이는 개발자들 사이의 코드 스타일 논쟁을 줄이고, 일관된 코드베이스를 유지하는 데 큰 도움을 준다. 주요 특징과 장점 광범위한 언어 지원 Prettier는 다음과 같은 다양한 언어와 파일 형식을 지원한다: JavaScript/TypeScript JSX/TSX CSS/SCSS/Less HTML JSON Markdown YAML GraphQL 최소한의 설정 Prettier는 설정 옵션을 의도적으로 제한적으로 제공한다. 이는 다음과 같은 이점이 있다: 팀 내 코드 스타일 논쟁 감소 설정 파일 관리의 단순화 프로젝트 간 일관성 유지 용이 자동 코드 재정렬 Prettier는 AST(추상 구문 트리)를 사용하여 코드를 완전히 재구성한다: ...

November 21, 2024 · 3 min · Me