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

前端 未结 6 1494
慢半拍i
慢半拍i 2020-12-15 08:10

I am hosting IronPython inside a C# application and injecting an API for the host into the global scope.

I have just started to love syntastic for vim w

相关标签:
6条回答
  • 2020-12-15 08:10

    Actually, there is a way to disable pylint argues about the specific undefined variable(s) by specifying it in dummy-variables-rgx (or dummy-variables in the older pylint versions). dummy-variables contain _,dummy by default and overwritten with the user-specified values on pylint execution:

    $ pylint --dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|host_object'
    

    or for the older pylint versions:

    $ pylint --dummy-variables='_,dummy,host_object'
    

    Or in case of the pylint configuration for VSCode (User/Workspace Settings can be opened by pressing Ctrl + ,):

    "python.linting.pylintArgs": [
        "--dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|qdict'"
    ]
    
    0 讨论(0)
  • 2020-12-15 08:21

    Disabling E0602 in the code:

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

    Obviously, that needs to be done once per module, all occurrences of injected_var after this line would be legal for pylint.

    0 讨论(0)
  • 2020-12-15 08:25

    Not for variables, but you can disable it for the lines that have the var. See the ref.

    0 讨论(0)
  • 2020-12-15 08:28

    There's good-names=host_object,other_stuff or additional-builtins=... for this, or for some advanced stuff you can modify the regex via variable-rgx.

    0 讨论(0)
  • 2020-12-15 08:32

    You can add your variables to the 'additional-builtins' option so pylint will consider them as defined.

    This has to be done in a rc file, it can't be done inlined in the code.

    0 讨论(0)
  • 2020-12-15 08:36

    I just faced this issue and I just added disable options in pylintrc file. In my case, I am working on a small script and some of 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 the codes and meaning 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_]*)|([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
    
    0 讨论(0)
提交回复
热议问题