Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@sakusaku_tempura

VSCodeでのPython開発でリアルタイムにコードチェックが走るようにする

はじめに

これまでPythonを使うときはちょっとしたスクリプトを書くシーンが多く、とりあえずJupyterNotebookに打ち込み&実行してコーディング規約違反は後から気づいて直す…ということが多かったのですが…

PythonのWebアプリケーションフレームワークであるDjangoでの開発をVisualStudioCodeで行いたい!ということになり、静的コードチェックとフォーマットツールを導入しました。

設定にあたりいくつか記事を参考にさせていただきましたが、JavaScriptのESLintプラグインのように入力時リアルタイムにチェックが走る設定をする記事が見当たらなかったので、備忘も兼ねて記事にしました。

概要

Pythonのコードチェックにはいくつか種類があり、現在VSCodeで設定できるものだけでも以下の通りたくさんあります。

  • bandit
  • flake8
  • mypy
  • prospector
  • pycodestyle
  • pydocstyle
  • pylama
  • pylint (default)

それぞれの特徴などはこの記事には記しませんが、今回インストールしたflake8にはVSCode用にcornflakes-linterというプラグインがあり、導入することで入力に合わせてリアルタイムにコードチェックを走らせることができます!
cornflakes.gif

環境

  • Windows 10 Enterprise
  • Python 3.9.1
  • Visual Studio Code 1.52.1 (Pythonプラグインインストール済)

導入手順

flake8をインストールする

コマンドプロンプト等のコンソールから下記コマンドを実行

pip install flake8

cornflakes-linterプラグインをインストールする

VSCodeのMarketplaceからcornflakes-linterをインストール
image.png

VScodeでcornflakes-linterを設定する

ファイル>ユーザ設定>設定 で設定画面を開く
image.png

cornflake等のキーワードで検索するとCornflakes>Linterの項目が出てくるので、下図のように設定

  • flake8のインストール先パス
  • コードチェックのタイミング(今回はリアルタイムにしたいのでonTypeを選択) image.png

VSCodeでデフォルトのLinting設定を変更する【重要】

※ここを正しく設定しないとcornflakes-linterではなくデフォルトのflake8が動作してしまうのでご注意ください(実際躓きました…)

前のステップと同様にVSCodeの設定画面を開き、Python>Lintingの項目を下図のように設定

  • PythonのLinting自体は 有効化
    image.png

  • 初期状態でPylintが有効化されている場合は 無効化
    image.png

  • デフォルトのflake8は 無効化
    image.png

  • デフォルトのLint On Saveは 無効化
    image.png

以上です!いたってシンプルな手順で設定ができました。
この状態で.pyファイルを編集すると、コードチェックが動作するようになっているはずです。

おわりに

フォーマットツールは別途blackをインストールし、保存時に自動整形されるように設定しています。(2つ目の参考リンク)
どのみち自動整形のために保存はするし、こまめな保存癖もあるのですが、リアルタイムチェックだと誤った入力(変数名のタイポなど…)をしたときにすぐ気づけたり、書きながら「あ、こういう書き方駄目なのか」とすぐフィードバックが得られたりとメリットも多いので、使い分けかなと思います。

PythonでWeb開発をされている方にはぜひ一度お試しいただきたいです…!

参考リンク

https://qiita.com/psychoroid/items/2c2acc06c900d2c0c8cb
https://blog.daisukekonishi.com/post/python-black/

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
sakusaku_tempura
JavaScriptとPythonが好きです。習うより慣れろ思考が強め。 AWSとAzureがあれば何でも作れると思っている節があります。
abeam-s
当社は『Real Partner』としてお客様の企業価値向上にむけ、様々なIT領域において企画・開発から運用保守まで一貫したサービスを提供しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?