programing tip

C0103 메시지를 중지하도록 PyLint에 "상수가 아닌 변수입니다"라고 어떻게 말합니까?

itbloger 2020. 11. 14. 09:58
반응형

C0103 메시지를 중지하도록 PyLint에 "상수가 아닌 변수입니다"라고 어떻게 말합니까?


Python 2.6 프로그램에 "_log"라는 모듈 수준 변수가 있는데, PyLint는 다음과 같이 불평합니다.

C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

이 답변 을 읽은 이유를 이해합니다. 변수가 상수라고 생각하고 상수 정규식을 적용합니다. 그러나 나는 다른 것을 간청한다. 나는 그것이 변수라고 생각한다. 불평하지 않도록 PyLint에게 어떻게 알려주나요? PyLint는 변수인지 상수인지 어떻게 결정합니까-모든 모듈 수준 변수를 상수로 취급합니까?


# pylint: disable-msg=C0103

이러한 경고를 무시할 범위에 넣으십시오. 위의 내용을 줄 끝 주석으로 만들어 해당 코드 줄에 대해서만 메시지를 비활성화 할 수도 있습니다.

IIRC pylint가 모든 모듈 수준 변수를 '상수'로 해석하는 것은 사실입니다.

최신 버전의 pylint는 대신이 줄을 사용합니다.

# pylint: disable=C0103

pylintrc에서 항상 허용되는 쉼표로 구분 된 "좋은 이름"목록을 지정할 수도 있습니다. 예 :

[BASIC]
good-names=_log

나에게 약간의 리팩터링이 도움이 될 것 같습니다. Pylint는 이것을 모듈로 간주하므로이 수준에서 변수를 보지 않는 것이 합리적입니다. 반대로 클래스 나 함수의 var에 대해 불평하지 않습니다. 다음 패러다임은 매우 일반적으로 보이며 문제를 해결합니다.

def main():
    '''Entry point if called as an executable'''
    _log = MyLog()  # . . .

if __name__ == '__main__':
    main()

이것은 유용한 클래스가 있다면 메인을 실행하지 않고 가져올 수 있다는 이점이 있습니다. __name__은 (가) "가"실패 있도록하는 모듈이다.


최신 버전의 pylint에서이 줄은 이제

# pylint: disable=C0103

활성화 메시지는 간단합니다.

# pylint: enable=C0103

다른 답변에서 알 수 있듯이 다음 줄을 포함하여 특정 PyLint 경고 (예 : C0103)를 비활성화 할 수 있습니다.

# pylint: disable=C0103

그러나 이것은 Locally disabling invalid-name경고를 생성합니다 . 이 보조 경고는 비활성화 된 경고를 상기시키려는 경우 유용 할 수 있습니다. 구성 파일을 변경하지 않고 경고를 자동으로 비활성화하려면 (전역 적으로 경고를 비활성화 함) 다음을 사용할 수 있습니다.

# pylint: disable=I0011,C0103

PyLint는 I0011을 비활성화한다는 경고를 표시하지 않습니다!


파일에서 로컬로 메시지를 비활성화하면 Pylint는 또 다른 경고를보고합니다!

Locally disabling invalid-name (C0103) [I:locally-disabled] 

당신의 의도가 깨끗한 Lint 실행을위한 것이고 그것이 목표가되어야한다면 왜 귀찮게하는지 그 메시지와 해당 로컬 활성화 메시지를 구성 파일에서 비활성화 할 수 있습니다.

disable=locally-disabled, locally-enabled

참고 URL : https://stackoverflow.com/questions/1885251/how-do-i-tell-pylint-its-a-variable-not-a-constant-to-stop-message-c0103

반응형