3

私はコードを持っていると仮定します

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

locals() を認識して寛大になる Python チェッカーまたはカスタム設定はありますか?

編集:

これは、.vimrc の警告を抑制する vim/syntastic/flake8 の簡単で汚い解決策です。

"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()                 
4

1 に答える 1

2

いいえpylint。私が知っている最も強力で気の利いた Python リンターでさえ、このケースを検出するほど賢くはありません。locals()しかし、もしそうなら、そもそもあなたが使っていることに文句を言うでしょう。:)

一方、pyflakes とは異なり、pylint は特定の問題を無視するマジック コメントをサポートしています。ただし、pylint は最初から非常にうるさい (したがって遅い) ため、事前に数分かけて、チェックのリストを実際に関心のあるものだけに絞り込む必要があることを警告する必要があります。

文字列フォーマットの特定のケースでこの動作を改善するために、wontfix としてクローズされたチケットあります。pylint 開発者は、これを機能として実装したくないようです。

于 2013-01-16T00:56:37.590 に答える