0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

みなさんは、Linter や Formatter を使用していますか

Pythonの開発では、Linterとして flake8、Formatter として Black などがよく使用される(体感です)と思います。

これらについて考える機会や知る機会が意外となく、実務経験では必須レベルなのに知らない方も多そうなので軽く調査したことを書いていきます。

本記事のまとめ

Lint や Formatter をCI/CDに組み込むと幸せになれます!!!

そもそも Lint, Format is 何?

結論から言うと、自動でコードがベストプラクティスに従ってるか、解析してくれるものです。

例えば、Python では PEP8と呼ばれる、コードを書く際の決まりがあります。
コードは動かすだけなら簡単にかけますが、個々人が好き勝手にいろんな書き方をしてしまうと他の人の書いたコードが読みづらかったりして、今後の開発に差し支えてしまいます。

そこで、コードを書く際のルールを決めたものが PEP8 です。

Lint は、このようなコードの規則やベストプラクティスに従っていないコードを静的解析によってチェックします。

Formatterは、コードに影響が出ない範囲内で、軽微な修正をするようにコードを静的解析でチェックします。

(静的解析とは、ざっくりコードを実行せずに解析することをいいます。)

静的開発ツールであり、ファイルを読み込んでルールベースに合致するか判定するだけなので色々と開発でされてます。
Python では Linter として、Flake8、Formatter として Black, isort などをよく使います。(他のツールもよく使います。)

どう使うの?

ここでは Python で flake8, black を使用してみます。
パッケージ管理ツールとして poetry を使用してますが、pip などでも同じです。

  • flake8
poetry add flake8
  • black
poetry add black

下記コマンド実行すると、警告が表示されたりフォーマットが修正されたりしていい感じにしてくれます。(細かい使い方は公式ドキュメントをご参照ください)

poetry run flake8 .
poetry run black .

かなり簡単に使えますね!!!

なんでつかうの?どこに使うの?

既に説明しましたが、基本的に多人数でのgitなどの環境での開発で使われます。
そのため、いわゆるCI/CD(Continuous Integration/Continuous Delivery & Deployment)にてアプリケーションのデプロイの自動化でチェックする際に使われます。

例えば、Github Actions と呼ばれる CI/CD ツールでは、以下のような yml ファイルを .github/workflows/の配下におくことで、push や pull request を行う際に、black や flake8 が自動で行われます。

name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:

  check-lint-and-formatting:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: 3.10
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install poetry
        poetry install --no-root
    - name: Format with Black
      run: poetry run black --check .
    - name: Lint with flake8
      run: poetry run flake8 .

まとめ

意外と知らないLinterやFormmaterについて書いてみました。

何か間違いや気になることがあれば気軽にご連絡いただけますと幸いです。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?