How to disable pylint 'Undefined variable error for a specific variable in a file?

I host IronPython inside a C # application and embed the host API in a global scope.

I just started to love syntastic for vim using pylint to test my scripts. But all the error messages [E0602, method_name] Undefined variable 'variable_name' for the entered variables annoy me.

I know of using # pylint: disable=E0602 to disable this error message, but I would prefer not to cripple a really useful function only for certain variable names.

How do you deal with this?

I am currently doing this at the top of my script:

 try: host_object = getattr(__builtins__, 'host_object') except AttributeError: pass # oops, run this script inside the host application!! 

What I really would like to do is:

 # pylint: declare=host_object, other_stuff 
+6
source share
5 answers

You can add your variables to the "optional built-in" parameter, so pylint will treat them as defined.

It must be done in the rc file, it cannot be done in code in code.

+5
source

Disabling E0602 in code:

 # make pylint think that it knows about 'injected_var' variable injected_var = injected_var # pylint:disable=invalid-name,used-before-assignment 

Obviously, this needs to be done once in the module, all occurrences of injected_var after this line is legal for pylint.

+5
source

Not for variables, but you can disable it for lines with var. See ref .

+1
source

There good-names=host_object,other_stuff or additional-builtins=... for this or for some advanced elements, you can change the regular expression with variable-rgx .

+1
source

I just ran into this problem and I just added disable options in the pylintrc file. In my case, I am working on a small script, and some of the pylint checks are a bit overkill. So I disabled Undefined Variable Error

 E: 32,40: Undefined variable 'description' (undefined-variable) 

by

disable = E0602, E0603

You can find codes and values ​​at: http://pylint-messages.wikidot.com/all-codes

My pylintrc file:

 # 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_]*)|([AZ][a-zA-Z0-9]+)|(vulcan-[a-z0-9_-]+))$ module-rgx=(([a-z_][a-z0-9_]*)|([AZ][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 
+1
source

All Articles