4

次のpythonコードがあります

a = 2
if a == 1:
    b = 'blah'
    print b
else:
    print b

実行しようとすると、「b」は「else」ではなく「if」句でのみ定義されているため、実行時エラーが発生します。

Pylint と Pyflakes はどちらもこの問題を検出できませんでした。

コードを実行せずに検出できる他の方法はありますか?

4

1 に答える 1

2

一般に、あなたの例よりも複雑なロジックが動作している可能性があるため、コードを実行しないとこれを検出できないと思います。ifこの-else句を複数回反復するループについてはどうbでしょうか? チェッカーは、プログラム実行のすべての可能な状態を知るために、インタープリターとまったく同じくらい複雑である必要があります (そして、おそらく副作用を含む同様の操作を実行します)。静的コード チェックの概念を参照してください。

于 2016-03-08T16:41:17.940 に答える