VSCodeでPythonのLinter/Formatterの拡張機能が出たらしい

:::note warn
(2024/02/06 追記) 
こちらの記事で紹介している拡張機能はPython3.7以下では動作しないようです。
:::

:::note info
(2024/12/04 追記)
Ruffに乗り換えました！記事はこちら👇️
:::
https://qiita.com/team7_403_poppin/items/2c9efc5a4765e9960575

# はじめに
Pythonの新しいLinter、Formatter用の拡張機能が追加されたみたいです。
それに伴って今までのやり方は非推奨になるようなので、この拡張機能を利用していない人は切り替えましょう（私も最近気が付きました:frowning2:）。

なので、拡張機能の導入手順を残しておこうと思います。

:::note info
この拡張機能を使えば、Flake8とかautopep8とかのパッケージをpipでインストールしなくてもいいらしい。
嬉しいですね:angel:
:::

詳細は以下のページに書いてありました。

https://github.com/microsoft/vscode-python/wiki/Migration-to-Python-Tools-Extensions

(2024/5/12 追記)
今更気が付きましたが、同じことを書いてる方がいました。
旧設定方法からこの記事で紹介している拡張機能に変更したい方は、👇️の記事を参考にすると良いと思います。

サクッと一から設定したい方は私の記事でも十分かと思います。

https://qiita.com/siruku6/items/6a8412c41616b558df66

# おことわり
それぞれの拡張機能の役割については説明しません。


# 追加になった拡張機能
|拡張機能名|ID|導入方法|無効化方法|
|--|--|--|--|
|Pylint|[ms-python.pylint](https://marketplace.visualstudio.com/items?itemName=ms-python.pylint)|インストールするだけでOK|拡張機能を無効化|
|Flake8|[ms-python.flake8](https://marketplace.visualstudio.com/items?itemName=ms-python.flake8)|インストールするだけでOK|拡張機能を無効化|
|Mypy Type Checker|[ms-python.mypy-type-checker](https://marketplace.visualstudio.com/items?itemName=ms-python.mypy-type-checker)|インストールするだけでOK|拡張機能を無効化|
|Black Formatter|[ms-python.black-formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter)|[こちら](#black-formatter)|[導入方法](#black-formatter)に記載|
|autopep8|[ms-python.autopep8](https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8)|[こちら](#autopep8)|[導入方法](#autopep8)に記載|
|isort|[ms-python.isort](https://marketplace.visualstudio.com/items?itemName=ms-python.isort)|[こちら](#isort)|拡張機能を無効化|

# 導入方法
## Black Formatter
### 手動での設定方法
1. Black FormatterをインストールするとVSCodeの設定内のdefaultFormatterで
`Black Formatter(ms-python.black-formatter)`が選択できるようになるので、
デフォルト設定にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665258/64b68096-69b2-b6ab-0c7e-768729a67428.png)


1. formatOnSaveにチェックを入れます
このチェックを入れることで、保存時に自動で整形してくれます。
自動整形を無効化したい場合は、チェックを外してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665258/be8e0b1b-51e9-89fa-09a5-559f30bf3beb.png)


### 設定ファイルを書き換える場合
`settings.json`を以下のように設定します。
```json:settings.json
{
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true
}
```

## autopep8
基本的な手順はBlack Formatterと同じです。
### 手動での設定方法
1. Black FormatterをインストールするとVSCodeの設定内のdefaultFormatterで
`autopep8(ms-python.autopep8)`が選択できるようになるので、
デフォルト設定にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665258/71418cd8-8ef0-00c9-14a7-aa954ac57eeb.png)

1. formatOnSaveにチェックを入れます
このチェックを入れることで、保存時に自動で整形してくれます。
自動整形を無効化したい場合は、チェックを外してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665258/be8e0b1b-51e9-89fa-09a5-559f30bf3beb.png)

### 設定ファイルを書き換える場合
`settings.json`を以下のように設定します。
```json:settings.json
{
    "editor.defaultFormatter": "ms-python.autopep8",
    "editor.formatOnSave": true
}
```

## isort
Alt + Shift + O で下記のようにimport文が自動でソートされます。
![isort.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665258/c44126a5-d6e1-398c-25c9-b78c30319d6f.gif)

保存時に自動で整形されるようにしたい場合`settign.json`を以下のように設定します。
※この機能を利用したい場合は、先にFormatterを入れておく必要があります。
```json:settings.json
{
    "[python]": {
        "editor.defaultFormatter": "ms-python.autopep8", // Black Formatterを使用したい場合は`ms-python.black-formatter`
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.organizeImports": true
        },
    },
}
```