development

Pyflakes가 문장을 무시하도록하려면 어떻게해야합니까?

big-blog 2020. 6. 30. 08:01
반응형

Pyflakes가 문장을 무시하도록하려면 어떻게해야합니까?


많은 모듈이 다음으로 시작합니다.

try:
    import json
except ImportError:
    from django.utils import simplejson as json  # Python 2.4 fallback.

... 그리고 전체 파일에서 유일한 Pyflakes 경고입니다.

foo/bar.py:14: redefinition of unused 'json' from line 12

Pyflakes가 이것을 무시하도록하려면 어떻게해야합니까?

(일반적으로 나는 문서를 읽을 것이지만 링크가 끊어졌습니다. 아무도 답이 없으면 소스를 읽을 것입니다.)


flake8을 대신 사용할 수 있다면 -pep8 검사기뿐만 아니라 pyflakes를 감싸는-

# NOQA

(공백이 큰 경우-코드 끝과 코드 #사이와 NOQA텍스트 사이에 2 개의 공백이 있음 )은 검사기에게 해당 행의 오류를 무시하도록 지시합니다.


나는 이것이 얼마 전에 질문을 받았으며 이미 답변되었다는 것을 알고 있습니다.

그러나 나는 일반적으로 사용하는 것을 추가하고 싶었습니다.

try:
    import json
    assert json  # silence pyflakes
except ImportError:
    from django.utils import simplejson as json  # Python 2.4 fallback.

그러나 안타깝게도 dimod.org는 모든 혜택과 함께 사용됩니다.

pyflakes 코드를 살펴보면 pyflakes가 "내장 된 빠른 검사기"로 쉽게 사용할 수 있도록 pyflakes가 설계된 것 같습니다.

무시 기능을 구현하려면 pyflakes checker를 호출하는 자체 작성해야합니다.

여기에서 아이디어를 찾을 수 있습니다 : http://djangosnippets.org/snippets/1762/

위의 스 니펫은 주석의 경우에만 같은 줄에 배치됩니다. 전체 블록을 무시하기 위해 블록 docstring에 'pyflakes : ignore'를 추가하고 node.doc를 기준으로 필터링 할 수 있습니다.

행운을 빕니다!


모든 종류의 정적 코드 분석에 포켓 린트를 사용하고 있습니다. pyflakes를 무시하기 위해 pocket-lint에서 변경된 사항은 다음과 같습니다. https://code.launchpad.net/~adiroiban/pocket-lint/907742/+merge/102882


다음은 # bypass_pyflakes주석 옵션 을 추가하는 pyflakes의 원숭이 패치입니다 .

bypass_pyflakes.py

#!/usr/bin/env python

from pyflakes.scripts import pyflakes
from pyflakes.checker import Checker


def report_with_bypass(self, messageClass, *args, **kwargs):
    text_lineno = args[0] - 1
    with open(self.filename, 'r') as code:
        if code.readlines()[text_lineno].find('bypass_pyflakes') >= 0:
            return
    self.messages.append(messageClass(self.filename, *args, **kwargs))

# monkey patch checker to support bypass
Checker.report = report_with_bypass

pyflakes.main()

이것을로 저장하면을 (를)로 bypass_pyflakes.py호출 할 수 있습니다 python bypass_pyflakes.py myfile.py.

http://chase-seibert.github.com/blog/2013/01/11/bypass_pyflakes.html


github 이슈 티켓 에서 인용하려면 :

수정 프로그램이 계속 제공되는 동안 궁금한 점이 있으면 다음과 같이 해결할 수 있습니다.

try:
    from unittest.runner import _WritelnDecorator
    _WritelnDecorator; # workaround for pyflakes issue #13
except ImportError:
    from unittest import _WritelnDecorator

필요한 엔티티 (모듈, 함수, 클래스)가있는 Substitude _unittest 및 _WritelnDecorator

- 디 무우 어


로 가져올 수도 있습니다 __import__. pythonic은 아니지만 pyflakes는 더 이상 경고하지 않습니다. 대한 설명서를__import__ 참조하십시오 .

try:
    import json
except ImportError:
    __import__('django.utils', globals(), locals(), ['json'], -1)

I created a little shell script with some awk magic to help me. With this all lines with import typing, from typing import or #$ (latter is a special comment I am using here) are excluded ($1 is the file name of the Python script):

result=$(pyflakes -- "$1" 2>&1)

# check whether there is any output
if [ "$result" ]; then

    # lines to exclude
    excl=$(awk 'BEGIN { ORS="" } /(#\$)|(import +typing)|(from +typing +import )/ { print sep NR; sep="|" }' "$1")

    # exclude lines if there are any (otherwise we get invalid regex)
    [ "$excl" ] &&
        result=$(awk "! /^[^:]+:(${excl}):/" <<< "$result")

fi

# now echo "$result" or such ...

Basically it notes the line numbers and dynamically creates a regex out it.

참고URL : https://stackoverflow.com/questions/5033727/how-do-i-get-pyflakes-to-ignore-a-statement

반응형