일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 인공지능
- 코딩
- 보안
- 머신러닝
- 자바스크립트
- I'm Sorry
- 딥러닝
- 빅데이터
- 데이터구조
- 네트워크
- 네트워크보안
- 알고리즘
- 2
- 클라우드컴퓨팅
- 컴퓨터과학
- 소프트웨어공학
- 웹개발
- 사이버보안
- 프로그래밍언어
- 파이썬
- 컴퓨터비전
- 컴퓨터공학
- 소프트웨어
- 버전관리
- 자료구조
- 프로그래밍
- 데이터과학
- Yes
- 데이터분석
- 데이터베이스
- Today
- Total
스택큐힙리스트
Pylint, PyChecker 또는 PyFlakes? [닫힘] 본문
현재 이 질문은 우리의 Q&A 형식에 적합하지 않습니다. 답변은 사실, 참조, 또는 전문 지식으로 지원되어야 하지만, 이 질문은 논쟁, 논쟁, 투표 또는 확장된 토론을 유도할 가능성이 높습니다. 이 질문이 개선될 가능성이 있다고 느낀다면 가능한 경우 #$!^&! @ * $&을(를) 통해 지침을 받으십시오.
10년 전에 닫혔습니다.
이 도구들에 대한 피드백을 받고 싶습니다.
특징;
적응능력;
사용 용이성과 학습 곡선.
답변 1
음, 조금 궁금해서 질문한 후에 내가 직접 세 가지를 시험해 봤어요. :-)
좋아요, 이것은 매우 진지한 리뷰는 아니지만, 제가 말할 수 있는 것은 다음과 같습니다.
저는 다음 스크립트에서 기본 설정으로 도구를 시도해 보았습니다 (체크 규칙을 거의 선택할 수 있기 때문에 중요합니다).
#!/usr/local/bin/python
# by Daniel Rosengren modified by e-satis
import sys, time
stdout = sys.stdout
BAILOUT = 16
MAX_ITERATIONS = 1000
class Iterator(object) :
def __init__(self):
print 'Rendering...'
for y in xrange(-39, 39):
stdout.write('\n')
for x in xrange(-39, 39):
if self.mandelbrot(x/40.0, y/40.0) :
stdout.write(' ')
else:
stdout.write('*')
def mandelbrot(self, x, y):
cr = y - 0.5
ci = x
zi = 0.0
zr = 0.0
for i in xrange(MAX_ITERATIONS) :
temp = zr * zi
zr2 = zr * zr
zi2 = zi * zi
zr = zr2 - zi2 + cr
zi = temp + temp + ci
if zi2 + zr2 > BAILOUT:
return i
return 0
t = time.time()
Iterator()
print '\nPython Elapsed %.02f' % (time.time() - t)
결과적으로:
PyChecker은(는) 분석 모듈을 컴파일하기 때문에 문제가 됩니다. 코드를 실행하고 싶지 않을 경우(예: SQL 쿼리 수행), 그것은 나쁜 것입니다.
PyFlakes 는 가벼워야 한다고 생각되었습니다. 실제로, 그것은 코드가 완벽하다고 결정했습니다. 그렇기 때문에 제가 찾는 것은 꽤 심각한 것이기 때문에 그것을 선택하지 않을 것 같습니다.
PyLint는 매우 수다스럽고 코드를 3/10으로 평가했습니다 (어떻게 이래, 나는 더러운 코더인가요!).
PyLint의 강점:
매우 세밀하고 정확한 보고서입니다.
일부 코드 스멜을 감지합니다. 이것은 OO 접근 방식이 이 경우에는 쓸모 없다는 이유로 클래스를 삭제하고 함수로 쓰기를 권장했습니다. 저는 그것을 알고 있었지만 컴퓨터가 그렇게 권장할 줄은 예상하지 못했습니다 :-p
완전히 수정된 코드는 더 빨리 실행됩니다 (클래스가 없으며 참조 바인딩이 없습니다...).
프랑스 팀이 만들었습니다. 모두에게는 좋지는 않겠지만, 저는 좋아합니다 ;-)
Pylint의 단점:
일부 규칙은 정말 엄격합니다. PEP8에 매칭되는 기본값을 변경할 수 있다는 것은 알지만, 'for x in seq'와 같은 방식으로 쓰는 것이 범죄인가요? 아마도 그렇습니다. 왜냐하면 3개 이하의 글자 수로 변수 이름을 쓸 수 없기 때문입니다. 제가 이것을 변경하겠습니다.
매우 매우 수다스러워요. 눈을 사용할 준비를 해주세요.
문서 문자열과 변수 이름이 부족한 수정된 스크립트:
#!/usr/local/bin/python
# by Daniel Rosengren, modified by e-satis
Module doctring
import time
from sys import stdout
BAILOUT = 16
MAX_ITERATIONS = 1000
def mandelbrot(dim_1, dim_2):
function doc string
cr1 = dim_1 - 0.5
ci1 = dim_2
zi1 = 0.0
zr1 = 0.0
for i in xrange(MAX_ITERATIONS) :
temp = zr1 * zi1
zr2 = zr1 * zr1
zi2 = zi1 * zi1
zr1 = zr2 - zi2 + cr1
zi1 = temp + temp + ci1
if zi2 + zr2 > BAILOUT:
return i
return 0
def execute() :
func doc string
print 'Rendering...'
for dim_1 in xrange(-39, 39):
stdout.write('\n')
for dim_2 in xrange(-39, 39):
if mandelbrot(dim_1/40.0, dim_2/40.0) :
stdout.write(' ')
else:
stdout.write('*')
START_TIME = time.time()
execute()
print '\nPython Elapsed %.02f' % (time.time() - START_TIME)
Thanks to Rudiger Wolf, 나는 이름 그대로 PEP8을 일치시키는 것을 정확히 수행하는 pep8 을 발견했다. 그것은 Pylint에서 찾지 못한 여러 구문 오류를 발견했다. 그러나 Pylint는 PEP8과 직접적으로 관련되지 않았지만 흥미로운 것을 발견했다. 두 도구 모두 흥미롭고 보완적이다.
결국 둘 다 사용할 것입니다. 패키지 또는 setuptools를 통해 매우 쉽게 설치할 수 있으며 출력 텍스트를 연결하기가 매우 쉽기 때문입니다.
그들의 생산성을 알려드리면:
펩8:
./python_mandelbrot.py:4:11: E401 multiple imports on one line
./python_mandelbrot.py:10:1: E302 expected 2 blank lines, found 1
./python_mandelbrot.py:10:23: E203 whitespace before ':'
./python_mandelbrot.py:15:80: E501 line too long (108 characters)
./python_mandelbrot.py:23:1: W291 trailing whitespace
./python_mandelbrot.py:41:5: E301 expected 1 blank line, found 3
Pylint:
************* Module python_mandelbrot
C: 15: Line too long (108/80)
C: 61: Line too long (85/80)
C: 1: Missing docstring
C: 5: Invalid name stdout (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 10:Iterator: Missing docstring
C: 15:Iterator.__init__: Invalid name y (should match [a-z_][a-z0-9_]{2,30}$)
C: 17:Iterator.__init__: Invalid name x (should match [a-z_][a-z0-9_]{2,30}$)
[...] and a very long report with useful stats like :
Duplication
-----------
+-------------------------+------+---------+-----------+
| |now |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines |0 |0 |= |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |0.000 |= |
+-------------------------+------+---------+-----------+
답변 2
안녕하세요! 오늘은 Pylint, PyChecker, PyFlakes 세 가지 Python 코드 검사 도구 중 어떤 것을 사용해야 할지에 대한 이야기를 나눠보려고 합니다.먼저, 이 세 가지 도구는 모두 Python 코드를 분석하고 이상 유무를 검증하는 도구입니다. 그러나 각각의 특징이 다르기 때문에 어떤 도구를 사용할지에 대해서는 고민이 필요합니다.
Pylint는 코드 스타일과 오류를 검사하는 데에 특화된 도구입니다. 이 도구는 코드 품질을 향상시키고 유지보수를 쉽게 할 수 있도록 도와줍니다. 또한 코드 타입, 변수 이름, 함수 이름 등의 규칙을 따르도록 강제할 수 있는 기능도 제공해주기 때문에 프로젝트에 일관성 있는 스타일을 유지하는 데에도 좋습니다.
PyChecker는 코드 오류를 찾아주는 역할을 합니다. 코드를 실행하기 전에 오류를 검출하기 때문에 디버깅 시간을 줄일 수 있습니다. 이 도구는 미리 정의된 오류 패턴을 바탕으로 코드를 검사하므로 유지보수나 리팩토링 시에도 유용합니다.
마지막으로, PyFlakes는 가장 단순한 코드 검사 도구입니다. 코드에 대한 정적 분석을 수행하므로, 실행하지 않고도 코드 일관성이나 오류를 검증할 수 있습니다. 코드 리뷰나 코드 스타일 검사에 사용하기 용이합니다.
따라서, 어떤 도구를 사용할지는 프로젝트의 목적과 용도에 따라 달라질 수 있습니다. 이상입니다!