Pythonコードを静的解析した

今回はflake8, autopep8を使って、Pythonコードを静的解析します。 静的解析とは コードを実行せずに行う解析です。コーディングルールチェックや、制御フローの解析、コードの複雑度の分析をすることでソースコードにある問題点を発見してくれます。 flake8とは pep8のチェック、pyflakesのチェック、及び循環的複雑度をチェックできるラッパーのことです。導入をすることで普段から綺麗なコーディングができます。 autopep8とは pep8のスタイルガイドに適用するように、自動的にPythonコードをフォーマットしてくれます。 flake8, autopep8インストール さっそくインストールしていきましょう。 以下コマンドでflake8をインストールできます。 pip install flake8 次にautopep8をインストールします。 pip install autopep8 とても簡単ですね。 使い方 flake8 flake8 <対象ファイルへのパス> このコマンドで対象ファイルを静的解析することができ、結果をターミナルに表示してくれます。 autopep8 autopep8 --in-place --aggressive --aggressive <filename> 公式ドキュメントにはこのように実行することを推奨しています。 --in--placeをつけることでファイルを更新してくれます。これがないとコードを自動的にフォーマットして、更新してくれません。 --aggressiveをつけることでコード整形のレベルを指定でき、2つつけることでレベル2になり修正対象のエラーが増えるそうです。 このコマンドで対象ファイルを静的解析することができ、結果をターミナルに表示してくれます。 試してみる test.pyを任意のディレクトリに作成します。 内容はこんな感じにしてみました。 def example(num_a,num_b,num_c,num_d,num_e,num_f,num_g,num_h): print(num_a+num_b+num_c+num_d+num_e+num_f+num_g+num_h) num_a,num_b,num_c,num_d,num_e,num_f,num_g,num_h = 1, 2, 3, 4, 5, 6, 7, 8 example( num_a, num_b, num_c, num_d,num_e, num_f, num_g, num_h ) 適切な改行や空白をいれることができていないし、文字列がとても長くなってしまっています。まずはflake8で静的解析をします。 test.py:1:18: E231 missing whitespace after ',' test.py:1:24: E231 missing whitespace after ',' test....

April 1, 2020 · 2 min · 246 words · Yu