7
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VisualStudioCodeでPython開発環境構築 (0からflake8による静的解析及びコード整形まで)

Last updated at Posted at 2020-06-01

はじめに

Python環境構築を新しく開発を始める人に教える必要があったので、折角なので参考までに投稿します。
VisualStudioCode(以下VSCode)でのPython環境構築から静的解析及びコード整形までをまとめて記載します。
これがほかの人にも役立つといいなぁ。

※本環境構築では静的解析ツールにflake8を、コードの整形にはautopep8を使用します。

追記:
Python仮想環境構築についてもまとめました。
[VSCodeでプロジェクト用のPython仮想環境をvenvで準備する]
(https://qiita.com/enya314/items/0e62b68fe70f52a628bf)

対象OS

Windows10 64bit

Python環境構築

Pythonのインストール

インストーラダウンロード

Pythonのホームページから最新のPythonインストーラをダウンロードする。

tempsnip.png

インストール及びPathの設定

VSCodeやコマンドラインでPythonを実行するときはPythonのインストール場所を環境変数として登録する必要がありますが、
Pythonはインストーラでのインストール時に「Add Python 3.8 to Path」にチェックを入れることでインストールと同時に設定してくれます。

Path.png

チェックを入れた後にInstallNowをクリックすることでインストールできます。

VSCodeインストール

VisualStudioCodeのホームページから最新のVSCodeをダウンロードし、インストールします。
インストーラに従って進めていけば大丈夫です。
※本記事ではVer1.45.1を使って記載しています。

VSCodeへのPython Extentionのインストール

VSCode用のPython拡張機能をインストールします。

  1. VSCode上の左メニューの赤枠内のアイコンをクリック or Ctr+Shift+X
  2. 検索欄に「Python」を入力
  3. PythonのExtentionを選択後、Installをクリックする。

Python_ext.png

ここまででVSCodeでのPythonの実行環境は準備出来ました。

静的解析ツールの設定

実行環境は出来ましたが、ここではソースコードの構文に問題がないか、
コーディング規約に違反していかな等を解析してくれる静的解析のツール設定を追加で行います。
静的解析を行うことで、簡易なバグを発見出来たり、
複数人で開発しても共通のコーディングスタイルを使用していることでコードの可読性や保守性が向上します。

本環境構築では静的解析ツールにflake8を、
コードの整形にautopep8を使用します。

モジュールのインストール

上部メニューのTerminalからNewTerminalを開く。

terminal.PNG

表示されたTerminalで以下のコマンドを実施する。

pip install flake8
pip install autopep8

VSCodeの設定変更

インストールしたモジュールを静的解析及びコード整形に利用するため、
VSCodeの設定を変更します。

①上部メニューからFile⇒Preferences⇒Settingsと移動してクリックする。

settings.PNG

②Settingsの右上のOpenSettings(Json)をクリックする。

SettingJson.png

③setting.json内に下記のように設定を記載する。
※既に記載がある場合は、追記、更新してください。

{
    "python.linting.pylintEnabled": false,
    "python.linting.flake8Enabled": true, 
    "python.linting.lintOnSave": true,
    "python.linting.flake8Args": [
      "--ignore=W293, W504, E501",
      "--max-complexity=20"
    ],
    "python.formatting.provider": "autopep8",
    "python.formatting.autopep8Args": [
      "--aggressive",
      "--max-line-length=200"
    ]
}

補足:各種設定の意味

標準の静的解析をOFFにし、代わりにflake8を利用する。
保存時に静的解析を行う。

"python.linting.pylintEnabled": false,
"python.linting.flake8Enabled": true, 
"python.linting.lintOnSave": true,

flake8の設定で、【W293:空行には空白が含まれます】は、エディタの自動インデントに引っかかってしまうのでオフ。
バイナリ演算子後に改行するとWarningになる【W504:バイナリ演算子後の改行】をオフ。
【E501:行が長すぎる】画面サイズによるがデフォルトの80文字だと割とすぐに折り返しになってしまうのでオフ。(ここは好みです。)

--max-complexityの設定ではプログラムの複雑度(分岐の多さの指標)を20までとしています。

"python.linting.flake8Args": [
  "--ignore=W293, W504, E501",
  "--max-complexity=20"
],

コード整形で使用するモジュールをautopep8に指定

"python.formatting.provider": "autopep8",

1行の最大文字数はデフォルトでは80文字となっている。
以下の設定では200文字を超えた場合に、コード整形時に折り返しを行う設定。
aggressiveを設定することでより積極的にコード整形してくれる。

"python.formatting.autopep8Args": [
  "--aggressive",
  "--max-line-length=200"
]

## 静的解析とコード整形のお試し

静的解析

flake8の規約に引っかかったところは赤や黄色の波線で表示される。
波線にカーソルを合わせると、エラーや警告の詳細が確認できます。
flake8.PNG

コード整形

Shift + Alt + Fを押下することで、コード整形を実施できます。
コード内を右クリックし、メニュー内の[Format Document]からも実施できます。

静的解析エラーの出ていたコードに対してコード整形を実施した結果が下図のとおりです。
エラーが消えてなくなりました😃
autopep8.PNG

おまけ

その他開発等でおすすめのVSCode Extention

  • vscode-icons

ファイルツリーがアイコン表示され、見やすくなります。

  • Bracket Pair Colorizer

コード内の括弧に色を付けてくれて括弧のペアが視認しやすくなります。
Pythonだと恩恵少ないかもですが。

  • PlantUML

テキストベースのUMLツール
以下の記事がインストールの参考になります。
https://qiita.com/couzie/items/9dedb834c5aff09ea7b2
OracleJavaは商用有償化したので、私はadoptopenjdkで代用しています。

  • Draw.io Integration

お絵描きツール、サクサク絵が描けます!
以下の記事がインストールの参考になります。
https://qiita.com/riku-shiru/items/5ab7c5aecdfea323ec4e
最新版(v4.0)はインストールしただけだとExport出来なかったので、以下の記事を参照
https://qiita.com/tfukumori/items/0f2b52088cd39f5c124e

  • Japanese Language Pack for VS Code

日本語で表示したいときは必須!

7
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?