C#アプリケーション内でIronPythonをホストし、ホストのAPIをグローバルスコープに挿入しています。
スクリプトをチェックするためのsyntastic
とvimのpylint
が好きになり始めました。しかし、挿入された変数のすべての[E0602, method_name] Undefined variable 'variable_name'
エラーメッセージに悩まされています。
# pylint: disable=E0602
を使用してこのエラーメッセージを無効にすることは知っていますが、特定の変数名のためだけに本当に便利な機能を損なうことはしたくありません。
これにどのように対処しますか?
現在、スクリプトの先頭でこれを行っています。
try:
Host_object = getattr(__builtins__, 'Host_object')
except AttributeError:
pass # oops, run this script inside the Host application!!
私が本当にやりたいのはこれです:
# pylint: declare=Host_object, other_stuff
変数を「additional-builtins」オプションに追加して、pylintがそれらを定義済みと見なすようにすることができます。
これはrcファイルで実行する必要があり、コードにインラインで実行することはできません。
コードでE0602を無効にする:
# make pylint think that it knows about 'injected_var' variable
injected_var = injected_var # pylint:disable=invalid-name,used-before-assignment
明らかに、これはモジュールごとに1回実行する必要があり、すべてのinjected_var
この行の後はpylintに合法です。
good-names=Host_object,other_stuff
または additional-builtins=...
この場合、または一部の高度なものについては、 variable-rgx
。
変数ではありませんが、変数を持つ行では無効にすることができます。 ref を参照してください。
実際には、pylintを無効にする方法は、特定の未定義の変数について議論しますdummy-variables-rgx (または 古いpylint
バージョンのdummy-variables )。 dummy-variables
にはデフォルトで_,dummy
が含まれ、pylint
の実行時にユーザー指定の値で上書きされます。
$ pylint --dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|Host_object'
または古いpylint
バージョンの場合:
$ pylint --dummy-variables='_,dummy,Host_object'
または、 VSCode のpylint
構成の場合(User/Workspace Settings
を押すと開くことができます Ctrl + ,):
"python.linting.pylintArgs": [
"--dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|qdict'"
]
この問題に直面し、pylintrcファイルに無効化オプションを追加しました。私の場合、私は小さなスクリプトに取り組んでおり、いくつかのピリントチェックは少しやり過ぎです。だから私は未定義の変数エラーを無効にしました
E: 32,40: Undefined variable 'description' (undefined-variable)
沿って
disable = E0602、E0603
コードと意味は次の場所にあります: http://pylint-messages.wikidot.com/all-codes
私のpylintrcファイル:
# The format of this file isn't really documented; just use --generate-rcfile
[MASTER]
# Add <file or directory> to the black list. It should be a base name, not a
# path. You may set this option multiple times.
#
# dirname, then we'll need to expand the ignore features in pylint :/
ignore=.git,tools, etc
[MESSAGES CONTROL]
# NOTE(gus): This is a long list. A number of these are important and
# should be re-enabled once the offending code is fixed (or marked
# with a local disable)
disable=E0602, E0603,
# "F" Fatal errors that prevent further processing
import-error,
# "I" Informational noise
locally-disabled,
# "E" Error for important programming issues (likely bugs)
access-member-before-definition,
no-member,
no-method-argument,
no-self-argument,
# "W" Warnings for stylistic problems or minor programming issues
abstract-method,
arguments-differ,
attribute-defined-outside-init,
bad-builtin,
bad-indentation,
broad-except,
dangerous-default-value,
deprecated-lambda,
deprecated-module,
duplicate-key,
expression-not-assigned,
fixme,
global-statement,
no-init,
non-parent-init-called,
not-callable,
protected-access,
redefined-builtin,
redefined-outer-name,
signature-differs,
star-args,
super-init-not-called,
super-on-old-class,
unpacking-non-sequence,
unused-argument,
unused-import,
# "C" Coding convention violations
invalid-name,
missing-docstring,
superfluous-parens,
bad-continuation,
Undefined variable,
# "R" Refactor recommendations
abstract-class-little-used,
abstract-class-not-used,
duplicate-code,
interface-not-implemented,
no-self-use,
too-few-public-methods,
too-many-ancestors,
too-many-arguments,
too-many-branches,
too-many-instance-attributes,
too-many-lines,
too-many-locals,
too-many-public-methods,
too-many-return-statements,
too-many-statements
[BASIC]
# Variable names can be 1 to 31 characters long, with lowercase and underscores
variable-rgx=[a-z_][a-z0-9_]{0,30}$
# Argument names can be 2 to 31 characters long, with lowercase and underscores
argument-rgx=[a-z_][a-z0-9_]{1,30}$
# Method names should be at least 3 characters long
# and be lowecased with underscores
method-rgx=([a-z_][a-z0-9_]{2,}|setUp|tearDown)$
# Module names matching vulcan-* are ok (files in bin/)
# module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+)|(vulcan-[a-z0-9_-]+))$
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+)|([a-z0-9_-]+))$
# Don't require docstrings on tests.
no-docstring-rgx=((__.*__)|([tT]est.*)|setUp|tearDown)$
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=79
[VARIABLES]
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
# _ is used by our localization
additional-builtins=_
[CLASSES]
# List of interface methods to ignore, separated by a comma.
ignore-iface-methods=
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=
# should use openstack.common.jsonutils
json
[TYPECHECK]
# List of module names for which member attributes should not be checked
ignored-modules=six.moves,_MovedItems
[REPORTS]
# Tells whether to display a full report or only the messages
reports=no