VSCodeでPythonのコードベースにLintとFormatを実行する

前提条件

  • macOS
  • pipenv
  • Lintterにflake8を使用する。
  • Formatterにblackとisortを使用する。

パッケージをインストールする

  • blackがGAしていないため--preをつける。
1
$ pipenv install --dev flake8 black isort --pre
  • setup.cfgを作成して設定を追加する。
1
2
3
4
5
[flake8]
ignore = E501,E722

[isort]
profile=black

VSCodeの設定

  • VSCodeでインストールしたパッケージが使われるようにsettings.jsonを作成する。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
    "python.pythonPath": ".venv/bin/python",
    "editor.formatOnSave": true,
    //flake8
    "python.linting.enabled": true,
    "python.linting.flake8Enabled": true,
    //black
    "python.formatting.provider": "black",
    //isort
    "[python]": {
        "editor.codeActionsOnSave": {
            "source.organizeImports": true
        }
    }
}

pipenv scriptの設定

  • VSCodeを使わない場合や、任意のタイミングでLintとFormatを実行できるようにPipfileに以下のscriptを追加する。
1
2
3
4
[scripts]
#対象のファイルが src 以下の場合
lint = "flake8 src"
format = "sh -c 'black src && isort src'"
  • shellで実行。
1
2
3
4
5
6
7
8
# 仮想環境に入る
$ source .venv/bin/python

# Lint
$ pipenv run lint

# Format
$ pipenv run format

GitHubリポジトリ

updatedupdated2021-07-252021-07-25