programing

어떻게 하면 Pyflakes가 진술을 무시하게 할 수 있습니까?

css3 2023. 7. 19. 21:32

어떻게 하면 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

어떻게 하면 파이플레이크가 이걸 무시하게 할 수 있을까요?

(보통 저는 문서를 읽으러 갔지만 링크가 끊어졌습니다.아무도 답이 없으면 출처만 읽겠습니다.)

만약 당신이 flake8을 대신 사용할 수 있다면 - pep8 체커뿐만 아니라 pyflake를 감싸는 - 로 끝나는 라인.

# NOQA

(여기서 공백이 상당함 - 코드 끝과 다음 사이의 2개의 공백#둘 중 하나NOQAtext)를 선택하면 해당 줄의 오류를 무시하도록 체커에 알립니다.

저는 이것이 얼마 전에 질문을 받았고 이미 답변을 받았다는 것을 알고 있습니다.

하지만 저는 제가 주로 사용하는 것을 추가하고 싶었습니다.

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

네, 불행하게도 dimod.org 은 모든 맛있는 음식과 함께 다운되었습니다.

Pyflakes 코드를 보면, Pyflakes는 "내장형 고속 체커"로 사용하기 쉽도록 설계된 것 같습니다.

ignore 기능을 구현하려면 pyflakes checker를 호출하는 자신의 기능을 작성해야 합니다.

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

주석에 대해서만 위의 스니펫이 동일한 줄에 표시됩니다.전체 블록을 무시하는 경우 node.doc을 기준으로 블록 docstring 및 필터에 'pyflakes:ignore'를 추가할 수 있습니다.

행운을 빕니다.


저는 모든 종류의 정적 코드 분석에 포켓 린트를 사용하고 있습니다.pyflake를 무시한 포켓몬스터의 변경사항은 다음과 같습니다: https://code.launchpad.net/ ~adiroiban/pocket-slock/907742/+slock/102882

github 발행 티켓에서 인용하기

해결책이 아직 제공되는 동안 다음과 같은 방법으로 해결할 수 있습니다.

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

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

보잘것없는

여기 파이프레이크를 위한 원숭이 패치가 있습니다.# bypass_pyflakes설명 옵션.

bypass_pyflakes.파이의

#!/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

Flake는 위반을 무시할 수 있는가지 옵션을 제공합니다.

제가 가장 좋아하는 것은 명시적으로 하고 특정 위반을 무시하는 것입니다.

my invalid code # noqa: WS03

그리고 이미 인용된 다른 옵션들도 있습니다.

  1. 라인의 모든 유효성 검사 무시:
my invalid code # NOQA
  1. 파일의 모든 유효성 검사를 무시합니다.첫 번째 줄을 입력합니다.
# flake8: noqa: E121, E131, E241, F403, F405

또는 flake8 구성에서 매개 변수로 무시하도록 구성합니다.

다음을 사용하여 가져올 수도 있습니다.__import__이것은 비단뱀은 아니지만, 파이플레이크는 더 이상 당신에게 경고하지 않습니다.자세한 내용은 설명서를 참조하십시오.

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

저는 약간의 셸 스크립트를 만들었습니다.awk나를 도와주는 마법.이와 함께 모든 행은import typing,from typing import또는#$에 여기서 제외됩니다 (((으)ㄹ 수 있습니다).$1 ::

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 ...

기본적으로 라인 번호를 기록하고 동적으로 정규식을 작성합니다.

위해서flake8권장되는 대안(여기서는 플레이크 8 vs 파이 플레이크 8)

다음과 같이 첫 번째 줄을 추가합니다.

# flake8: noqa: E121, E131, E241, F403, F405

일반적으로:

# flake8: noqa: <code>[, <code> ...]

이런 식으로 한 줄로 당신은 침묵할 수 있습니다.entire file그리고 그것을 위하여.many 문 ignore 문을 사용합니다.at once종종 그런 경우가 있습니다.

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