假设我有代码
def foo():
bar = 1
wibble = 3
return locals()
我当前的语法检查程序(带有syntastic.vim的flake8)将在两个变量上抛出“已分配但从未使用过”错误。然而,locals()意味着它们实际上正在被使用,如果没有明确的话。
def foo():
bar = 1
wibble = 3 # <-- I still want this to throw as it is definitely not being used
return bar
是否有任何python检查器或自定义设置将是locals()知道和宽松?
编辑:
对于vim / syntastic / flake8来说,这是一个快速而肮脏的解决方案,可以抑制.vimrc中的警告
"Ignore unused variable warnings whenever locals() is being used in a file
function! LocalsWarningSuppress()
if ( search("locals()",'nw') > 0)
let g:syntastic_python_checker='flake8 --ignore=W806'
else
let g:syntastic_python_checker='flake8'
endif
endfunction
au BufWritePre **/(filter_pattern)*py call LocalsWarningSuppress()
答案 0 :(得分:2)
没有。即使pylint
,我所知道的最强大,最挑剔的Python linter,也不足以发现这种情况。但如果是的话,它可能会抱怨你首先使用locals()
。 :)
另一方面,与pyflakes不同,pylint支持magic comments来忽略特定问题。但是我必须警告你,pylint非常挑剔(因此很慢)开箱即用,因此你需要花几分钟时间将其list of checks缩减到你真正关心的事情。 / p>
一个ticket closed as wontfix,用于在字符串格式化的特定情况下改善此行为。看来pylint开发人员不希望将其作为一种功能实现。