
bellybutton 은 파이썬을위한 사용자 정의 가능하고 구성하기 쉬운 라이팅 엔진입니다.
Pylint 및 Flake8과 같은 도구는 Python 모범 사례를 시행하고 PEP-8 준수를 보장하며 빈번한 버그 소스를 피하기위한 다양한 규칙을 제공합니다. 그러나 많은 프로젝트에는 내부 스타일 가이드, 더 이상 사용되지 않은 기능 영역 또는 일반적인 오류 소스와 같은 정적 분석을위한 프로젝트 별 후보가 있습니다. 이는 많은 기고자 또는 크고 레거시 코드베이스가있는 프로젝트에서 특히 그렇습니다.
bellybutton 사용하면 Custom Linting Rules를 예정별로 지정하고 정상 빌드, 테스트 및 배포 프로세스의 일부로 감지 할 수 있으며, 이러한 규칙을 쉽게 접근 할 수있게하여 채택 비용을 크게 줄입니다.
bellybutton 다음과 같은 경우 시도해보십시오.
bellybutton 다음을 통해 설치할 수 있습니다.
pip install bellybutton일단 설치되면 실행됩니다
bellybutton init 프로젝트의 루트 디렉토리에서 적응을 시작할 예제 규칙이 포함 된 .bellybutton.yml 구성 파일을 만듭니다. bellybutton 또한 프로젝트의 디렉토리 구조를 기반으로 추가 규칙 설정을 제공하려고합니다.
프로젝트를 위해 bellybutton 구성한 후에
bellybutton lint .bellybutton.yml 에 지정된 규칙에 대해 프로젝트를 보풀을 흘리게됩니다. 또한, 실행
bellybutton lint --modified-only Git을 사용하는 경우 origin/master 와는 다른 파일 만 부과합니다.
CI 파이프 라인에 bellybutton 추가하려면이 저장소의 Tox Configuration 및 .travis.yml을 예로 들어보십시오.
bellybutton 의 규칙을 잡아야하고 줄이 실패해야합니다. .bellybutton.yml 구성에 지정된 규칙은 다음과 같이 구성되어야합니다.
descriptionexpr ( !regex ... ). 또한 rules 매핑 내 규칙에 사용 된 키는 이름으로 사용됩니다.
규칙은 다음으로 구성 될 수도 있습니다.
settings 과 # bb: ignoreexampleinstead 코드 예식입니다. 이 example 와 instead 조항은 런타임에 확인하여 규칙의 expr 과 각각 일치하지 않도록합니다.
예를 들어, astpath 표현식을 사용하여 더 이상 사용되지 않은 함수 호출에 대한 보풀의 규칙은 다음과 같습니다.
DeprecatedFnCall :
description : ` deprecated_fn ` will be deprecated in v9.1.2. Please use `new_fn` instead.
expr : //Call[func/Name/@id='deprecated_fn']
example : " deprecated_fn(*values) "
instead : " new_fn(values) " !settings 노드는 다음을 지정합니다.
includedexcluded 경로 ( included 경로와 일치 할 때에도)allow_ignore 규칙과 일치하는 줄을 제공하면 # bb: ignore . 또한 .bellybutton.yml 의 루트 레벨에서 명시적인 설정없이 규칙에 따라 사용되는 default_settings 설정을 지정할 수 있습니다. 각 규칙에는 settings 매개 변수가 있거나 default_settings 에 다시 떨어질 수 있어야합니다.
예를 들어, A !settings 노드는 특정 모듈 만 다음과 같은 것처럼 보일 수 있습니다.
my_module_settings : !settings
included :
- ~+/my_package/my_module.py
excluded : []
allow_ignore : no 이 저장소의 .bellybutton.yml 예제 bellybutton 구성 파일로 확인하고 bellybutton 사용할 수있는 패턴 유형의 예는 예제로 astpath 의 readme를 확인하십시오.
bellybutton 은 알파 릴리스에 있으며, 따라서 몇 가지 주요 기능, 문서 및 전체 테스트 범위가 누락되었습니다. 또한 bellybutton 매우 큰 코드베이스의 성능에 최적화되지 않으며 버그가 깨지는 버그를 포함 할 수 있습니다. 발생하는 버그를보고하십시오.
!chain 과 !verbal 표현 노드는 아직 구현되지 않았습니다.