0
0

環境

OS: Ubuntu22.04
Python 3.11
poetry 1.8.2

前提条件

  • poetryを用いてpythonの環境構築が終わっている
  • プロジェクト内でgit initなどGithubでコード管理を行う準備ができている

やったこと

  1. 必要なパッケージをインストールする

    poetryを用いて依存パッケージをインストールするにはpoetry addを使用します。
    pre-commitの他に、コードの修正に必要なパッケージもインストールしておきます。

    # -Dをつけると、devDependenciesになる
    poetry add -D pre-commit flake8 black isort
    

    それぞれの役割は以下のとおりです。

    • isort: モジュールのインポート順序を修正
    • flake8: フォーマットの検査
    • black: 自動でフォーマットを修正
  2. .pre-commit-config.yamlを作成/編集

    以下のコマンドで.pre-commit-config.yamlが作成されます。

    poetry run pre-commit sample-config > .pre-commit-config.yaml
    
    .pre-commit-config.yaml編集前
    .pre-commit-config.yaml
    # See https://pre-commit.com for more information
    # See https://pre-commit.com/hooks.html for more hooks
    repos:
    -   repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v3.2.0
        hooks:
        -   id: trailing-whitespace
        -   id: end-of-file-fixer
        -   id: check-yaml
        -   id: check-added-large-files
    
    .pre-commit-config.yaml編集後
    .pre-commit-config.yaml
    repos:
      - repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v3.2.0
        hooks:
          - id: trailing-whitespace
          - id: end-of-file-fixer
          - id: check-yaml
          - id: check-added-large-files
      - repo: https://github.com/pycqa/flake8
        rev: 7.0.0
        hooks:
          - id: flake8
            additional_dependencies:
              - flake8-isort
            args: ["--max-line-length=150", "--ignore=W293 E203"]
      - repo: https://github.com/psf/black
        rev: 24.4.2
        hooks:
          - id: black
            language_version: python3.11
      - repo: https://github.com/pycqa/isort
        rev: 5.13.2
        hooks:
          - id: isort
            name: isort (python)
    

結果

上記を行ったあと、commitをすると以下のような出力が得られます。

git commit -m "コミットメッセージ"
> Trim Trailing Whitespace.................................................Passed
> Fix End of Files.........................................................Passed
> Check Yaml...........................................(no files to check)Skipped
> Check for added large files..............................................Passed
> flake8...................................................................Passed
> black....................................................................Passed
> isort (python)...........................................................Passed

なにか問題があるときは、passedの代わりにFailedと表示され、問題がある箇所を教えてくれます。

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