
DLINT는 최상의 코딩 관행을 장려하고 파이썬 코드가 안전 해지도록 도와주는 도구입니다.
최근 몇 년 동안 프로그래머로서 한 가장 중요한 일은 정적 코드 분석을 적극적으로 추구하는 것입니다. 내가 방지 한 수백 가지의 심각한 버그보다 더 가치가있는 것은 소프트웨어 신뢰성과 코드 품질을 보는 방식에 대한 사고 방식의 변화입니다.
- John Carmack, 2011
정적 분석 프로젝트가 성공하기 위해서는 개발자가 혜택을 받고 사용하는 즐거움을 느낀다.
- Google에서 정적 분석 도구를 구축 한 교훈
문서화 및 규칙 목록은 문서를 참조하십시오.
$ python -m pip install dlint올바르게 설치되었는지 확인하십시오.
$ python -m flake8 -h
Usage: flake8 [options] file file ...
...
Installed plugins: dlint: 0.16.0, mccabe: 0.5.3, pycodestyle: 2.2.0, pyflakes: 1.3.0 dlint: 0.16.0 .
Dlint는 flake8 기반으로 일린팅을 수행합니다. 이것은 휠을 다시 발명하지 않고 많은 유용한 기능을 제공합니다.
간단한 점검을 실행합시다.
$ cat << EOF > test.py
print("TEST1")
exec('print("TEST2")')
EOF $ python test.py
TEST1
TEST2$ python -m flake8 --select=DUO test.py
test.py:2:1: DUO105 use of " exec " is insecure/docs/linters/DUO105.md 방문하십시오.DUO ? Dlint는 원래 Duo Labs 팀에 의해 개발되었습니다. --select=DUO 플래그는 flake8 에 dlint lint 규칙 만 실행하도록 지시합니다.
여기에서 Python 코드 디렉토리에 대해 DLINT를 쉽게 실행할 수 있습니다.
$ python -m flake8 --select=DUO /path/to/code 줄무늬를 미세 조정하려면 flake8 도움말을 확인하십시오.
$ python -m flake8 --help빠른 피드백을 위해 DLINT 결과를 편집기에 인라인으로 포함시킬 수도 있습니다. 일반적으로 편집기 플러그인 또는 확장자가 필요합니다. 다음은 일반 편집자를위한 몇 가지 시작점입니다.
DLINT는 CI 파이프 라인 또는 실제로 무엇이든 통합 할 수 있습니다.
자세한 내용과 예는 'dlint를 xyz에 어떻게 통합 할 수 있습니까?'를 참조하십시오.
DLINT의 사용자 정의 플러그인은 간단한 이름 지정 컨벤션을 기반으로 구축되며 파이썬 모듈에 의존합니다. DLINT 사용자 정의 플러그인을 만들려면 다음과 같은 규칙을 사용하십시오.
dlint_plugin_ 로 시작 해야합니다 .Dlint 로 시작 해야합니다 .dlint.linters.base.BaseLinter 에서 상속 해야합니다 .get_results 기능을 적절하게 구현하고 ast.NodeVisitor 에서 상속 해야합니다 .자세한 내용은 예제 플러그인을 참조하십시오.
먼저 개발 패키지 설치 :
$ python -m pip install -r requirements.txt
$ python -m pip install -r requirements-dev.txt
$ python -m pip install -e . $ pytest$ flake8$ pytest --cov$ pytest -k test_benchmark_run --benchmark-py-file /path/to/file.py tests/test_benchmark/또는 라이터에 대한 벤치 마크 결과를 개별적으로 얻으십시오.
$ pytest -k test_benchmark_individual --benchmark-py-file /path/to/file.py tests/test_benchmark/또는 단일 린터에 대해 실행하십시오.
$ pytest -k test_benchmark_individual[DUO138-BadReCatastrophicUseLinter] --benchmark-py-file /path/to/file.py tests/test_benchmark/