2013-02-26 77 views
6

我在C#應用程序中託管IronPython,並將主機的API注入全局範圍。如何禁用文件中特定變量的pylint'未定義變量'錯誤?

我剛剛開始熱愛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 
+1

這是一個[this]的副本(http://stackoverflow.com/questions/14233867/pylint-ignore-sp ecific-的名字)? – 2013-02-26 12:36:45

+0

很可能...除了這個問題沒有得到任何好的答案。我認爲@sthenault在這裏有一個不錯的指針。我們只需要修復他的答案,以包含一個鏈接到rc文件的文檔,也許是一個例子。但它看起來可以工作! – 2013-02-28 07:54:57

+0

@DarenThomas這裏的答案之一是否工作,或者您是否找到另一種解決方案? – 2013-08-02 06:08:39

回答

1

不變量,但你可以將其禁用對於具有var的線條。請參閱ref

5

您可以將變量添加到'additional-builtins'選項,以便pylint將其視爲已定義。

這必須在一個rc文件中完成,它不能在代碼中內聯。

5

代碼禁用E0602:

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

顯然,一個需要每個模塊進行一次的injected_var所有出現這條線後,也可以合法的pylint的。

+0

Works;一個聰明的解決方法。 – 2017-01-05 17:22:59

1

我剛剛遇到了這個問題,我只是在pylintrc文件中添加了禁用選項。就我而言,我正在研究一個小腳本,一些pylint檢查有點矯枉過正。所以我禁用未定義​​的變量錯誤

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

通過

禁用= 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