Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

仮想環境(venv)+静的コード解析ツール(Flake8)の導入

f:id:overworker:20200812004214p:plain:h150


『仕事ではPythonを使ったことがない』程度のレベルです。
自習時に調べたことのノートとして記録します。

環境構築

前提条件

  • WindowsOS
  • VSCodeを利用する

詳細

1.仮想環境の構築:venv

1-1.仮想環境標準ライブラリのvenvを導入する

  • コマンドプロンプトで実行しました
python -m venv {仮想環境のパス}

1-2.仮想環境を作成する

  • コマンドプロンプトで実行しました
python3 -m venv venv

1-3.仮想環境を有効化する

  • 1-1で指定した{仮想環境のパス}に以下ができていることを確認してください

    • pyvenv.cfg
    • Scriptsディレクトリ
    • Scriptsディレクトリの中にActivate.ps1
    • Scriptsディレクトリの中にactivate.bat
  • 利用するコマンドシェルによって、コマンドが異なります。

1-3-1.PowerShellを使用する場合
PS {仮想環境のパス}\Scripts> PowerShell -ExecutionPolicy RemoteSigned ./Activate.ps1
1-3-2.コマンドプロンプトを使用する場合、
{仮想環境のパス}> Scripts\activate.bat

2.コードを静的解析し、コーディング規約に則っているかチェックする

2-1.Flake8を導入する

  • Flake8とは静的コード解析ツールPEP8のラッパーです。
  • 以下のツールを同時に実行することができます。

    • pycodestyle:PEP8に準拠することをチェックする
    • pyflakes:未使用の変数やモジュールといった論理的なエラーをチェックする
    • mccabe:コードの複雑さの指標である循環的複雑度の計測を行う
  • インストールにはPythonのパッケージ管理ツールであるpipを使います。

{仮想環境のパス}> pip install flake8

実際の実行結果は以下です。

>pip install flake8
Collecting flake8
  Downloading https://files.pythonhosted.org/packages/d4/ca/3971802ee6251da1abead1a22831d7f4743781e2f743bd266bdd2f46c19b/flake8-3.8.4-py2.py3-none-any.whl (72kB)
     |████████████████████████████████| 81kB 5.1MB/s
Collecting pyflakes<2.3.0,>=2.2.0
  Downloading https://files.pythonhosted.org/packages/69/5b/fd01b0c696f2f9a6d2c839883b642493b431f28fa32b29abc465ef675473/pyflakes-2.2.0-py2.py3-none-any.whl (66kB)
     |████████████████████████████████| 71kB 4.5MB/s
Collecting pycodestyle<2.7.0,>=2.6.0a1
  Downloading https://files.pythonhosted.org/packages/10/5b/88879fb861ab79aef45c7e199cae3ef7af487b5603dcb363517a50602dd7/pycodestyle-2.6.0-py2.py3-none-any.whl (41kB)
     |████████████████████████████████| 51kB 3.2MB/s
Requirement already satisfied: mccabe<0.7.0,>=0.6.0 in c:\users\yutaka\appdata\roaming\python\python38\site-packages (from flake8) (0.6.1)
Installing collected packages: pyflakes, pycodestyle, flake8
Successfully installed flake8-3.8.4 pycodestyle-2.6.0 pyflakes-2.2.0
WARNING: You are using pip version 19.3.1; however, version 20.3.3 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
実際にコードをチェックする
flake8 src/sample.py

以下自作ツールに対してチェックを実施したときの結果です。(悲惨な結果になりました。)

>flake8 CheckAtResult.py
sample.py:26:39: E231 missing whitespace after ','
sample.py:35:27: W291 trailing whitespace
sample.py:45:56: E231 missing whitespace after ','
sample.py:45:69: E231 missing whitespace after ','
・
・
・
設定をカスタマイズする(省略)
  • プロジェクトのトップディレクトリにsetup.cfgまたは.flake8というファイルを作成し、内部を記述することで静的解析時の設定をカスタマイズすることができます。
  • setup.cfgには複数のツールの設定を書くことができます。

Python関連のその他の記事へ