🌟

【PyCharm】ファイル保存時にlinterとformatterが自動実行されるように設定する

2022/11/06に公開

概要

最近、Pythonの開発で使用するエディタをVSCodeからPyCharmに乗り換えたので、PyCharmの設定をしました。
ファイルを保存したときにlinterとformatterが自動実行されるように設定しました。

PyCharmのバージョン

  • Community Edition
  • バージョン: 2022.2.3
  • ビルド: 222.4345.23

使用したツール

ファイル保存時にlinter/formatterを自動で実行

File Watcher

File Watcher is an IntelliJ IDEA tool that allows you to automatically run a command-line tool like compilers, formatters, or linters when you change or save a file in the IDE.

linter / formatter

Flake8

Your Tool For Style Guide Enforcement

Black

By using Black, you agree to cede control over minutiae of hand-formatting.

isort

isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type.

mypy

Mypy is an optional static type checker for Python that aims to combine the benefits of dynamic (or "duck") typing and static typing.

設定手順

ファイル保存時に自動でlinter/formatterが実行されるようにする

ファイルの変更を監視してくれるFile Watcherを使用します。

メニューバーより、PyCharm > Preferencesを選択します。

pluginsを選択し、File Watchersをインストール。

File Watchersインストール

ToolsにFile Watchersが追加されたので、このあとここに各ツールの設定を記述します。

File Watchers設定

linter/formatterを設定する

Flake8

1. Flake8 - 設定ファイル作成

.flake8を作成し、flake8の設定を記述します。

.flake8
[flake8]
max-line-length = 100
ignore = W503

2. Flake8 - File Watchers設定

次に、File Wachersの設定を追加して、ファイル保存時にFlake8が実行されるようにします。

メニューバーより、PyCharm > Preferencesを選択します。
Tools > File Watchersを選択して、+ボタンを押します。
File Watchers設定

File Watchersに以下のように記述します。
flake8_1

3. Flake8 - 動作チェック

ファイルを保存するとflake8が実行されていることがわかります。
flake8_2

Black

1.Black - 設定ファイル

pyproject.tomlを作成し、Blackの設定を記述します。

pyproject.toml
[tool.black]
line-length = 120

2. Black - File Watchers設定

File Watchersに以下のように記述します。
Black_1

3. Black - 動作チェック

以下のようにエラーとなるようなコードを書いてみて、
Black_2

ファイルを保存するとエラーが自動で修正されます。
Black_3

isort

1. isort - 設定ファイル

pyproject.tomlにisortの設定を追加します。

pyproject.toml
[tool.isort]
profile = 'black'

2. isort - File Watchers設定

File Watchersに以下のように記述します。
isort_1

3. isort - 動作チェック

以下のようにimport順が正しくないファイルを書いて、
isort_2

ファイルを保存するとimport順が自動で修正されます。
isort_3

mypy

1. mypy - 設定ファイル

pyproject.tomlにmypyの設定を追加します。

pyproject.toml
[tool.mypy]
warn_unused_configs = True

2. mypy - File Watchers設定

File Watchersに以下のように記述します。
mypy_1

3. mypy - 動作チェック

戻り値がstrと定義されている関数で、intを返すようなコードを書くと、
mypy_2

mypyが実行されてエラーが出力されることが確認できました。
mypy_3

GitHubで編集を提案

Discussion