クリーンなコードを自動化する


我々は、フォーマット、lint、コードをテストするためにいくつかのパッケージを見て、後でプロセスを自動化する前コミットフックを作成します.
我々が使うパッケージについて話す前に、私たちが使うPythonファイルを見てみましょう
ヘルパーという関数があります.パイ
< div >
単純な算術関数を持つ.すべての関数は2つのパラメータを受け取り、算術演算を行います.p >
< tt > testerRennヘルパーというファイルがあります.Py


< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/rahulbanerjee26/3679ac560c34526e7b8dbd6e02de4c84.js//>
< div >
このファイルは単に以前に定義した関数をテストします.assertを使って単純な等価性チェックを行います.p >
< tt >使用するパッケージを見てみましょうp >

テスト🧪


pytest 7.7 k +⭐️


このパッケージは、ユニットテストの実行に役立ちます.注意しておく必要があるのは、あなたのPythonテストを含むPythonファイルが' testRunu 'で始まることです.p >
< tt > assert文のみがサポートされます.パッケージ< br/>をインストールするには
<> P >
クラスをハイライト表示する
pip install pytest
< div >
ユニットテストを実行するには、次のコマンドを入力します.
<> P >
クラスをハイライト表示する
pytest test_helpers.py
< div >
すべてのテストがパスした場合、同様の出力< br/>を見るべきです
<> P >
クラスをハイライト表示する
test_helpers.py ....             [100%]

========= 4 passed in 0.01s ===========
< div >
複数の相対的なインポートに関連するエラーが発生した場合< br/>
<> P >
クラスをハイライト表示する
astroid.exceptions.TooManyLevelsError:
< div >
< tt > PyTestの依存関係の問題です.あなたはAstroIDをアンインストールし、再度インストールする必要があります.これにより、AlTest AstroIDバージョンがインストールされますbr/>
<> P >
クラスをハイライト表示する
pip uninstall astroid
pip install astroid
< div >
この後、PyTestをアンインストールしてPyTest < br/>をインストールしなければなりません
<> P >
クラスをハイライト表示する
pip uninstall pytest
pip install pytest
< div >

書式設定✍️


yapf 12 k +⭐️


これは、Googleによって開発され、場所の書式設定をサポートします.パッケージ< br/>をインストールするには
<> P >
クラスをハイライト表示する
pip install yapf
< div >
ファイルをフォーマットするには、次の< br/>を入力します
<> P >
クラスをハイライト表示する
yapf --in-place *.py
< div >
<高橋潤子>
<> P >
クラスをハイライト表示する
yapf --in-place **/*.py
< div >
しかしながら、これは我々の仮想環境フォルダも含みます.Venvフォルダーを無視するには、単にファイルを作成します.YapfignoreとVenvを追加します.p >
注意:このコマンドは実行するのに多少時間がかかるかもしれません.'**'の代わりに、フォルダの特定の名前を使用できます.p >

ISort 4.1 k +⭐️


このパッケージはインポート文をソートしてPEP 8規則に従うようにします.p >
インポートは次の順序でグループ化しなければなりません.
<ウル>
  • 標準ライブラリのインポート
  • 関連サードパーティ輸入.
  • ローカルアプリケーション/ライブラリ固有のインポート.
  • < ull >
    < tt > isort re - orderステートメントを実行して上記の規則を守ります.br/>
    パッケージ< br/>をインストールするには
    <> P >
    クラスをハイライト表示する
    pip install isort
    
    < div >
    < tt > isort < br/>を実行します.
    <> P >
    クラスをハイライト表示する
    isort .
    
    < div >

    オートフレーク400⭐️


    未使用のインポート、変数、オブジェクトキーを取り除くのに役立ちます.p >
    パッケージをインストールするには
    <> P >
    クラスをハイライト表示する
    pip install autoflake
    
    < div >
    < ulink > autoflake < br/>を実行する
    <> P >
    クラスをハイライト表示する
    autoflake --in-place --remove-unused-variables --remove-all-unused-imports *.py
    
    < div >

    他のフォーマッタ


    <ウル>

  • autopep8 3.9 k +⭐️

  • black 22.2 k +⭐️
  • < ull >

    リンギング🔎


    ピント3.5 K +⭐️


    < p > pylintはコードがPEP 8規則と標準に従うことを保証します.これは、各Pythonのファイルを10からスコアを与える(それは同様に否定的なスコアを与えることができます)/
    パッケージをインストールするには
    <> P >
    クラスをハイライト表示する
    pip install pylint
    
    < div >
    リンチ< br/>を実行するには
    <> P >
    クラスをハイライト表示する
    pylint --fail-under=7 *.py
    
    < div >
    < p >議論--fail-under ファイルが下限を下回った場合、エラーが返されます.p >

    前処理フック🪝


    何がgitフックですか?


    基本的なスクリプトは、重要な動作が起こる前に、例えば、コミットが行われる前にコードが実行される前に、コードがrepoにプッシュされる前にhere .


    私たちはプリコミットフックに焦点を合わせます.事前コミットフックは、コミットを行う前に実行されるフックです.p >
    パッケージをインストールしましょう
    <> P >
    クラスをハイライト表示する
    pip install pre-commit
    
    < div >
    < tag >サンプル前のフックYAMLファイルを生成します.br/>
    <> P >
    クラスをハイライト表示する
    pre-commit sample-config
    
    < div >
    私たちのフックを追加しましょう
    <> P >
    クラスをハイライト表示する
    pre-commit install
    
    < div >
    すべてのコミットの前に、私たちのYAMLファイルで定義されたpre - commitフックが実行されます.p >
    <武井>br/>
    すべてを削除し、以下の< br/>を維持するだけです
    <> P >
    クラスをハイライト表示する
    repos:
        - repo: local
          hooks:
    
    < div >
    プラグインを追加しますhooks: YAMLファイルで.以下はプラグイン< bf/>の一般的な構文です
    <> P >
    クラスをハイライト表示する
       - id: (unique id of hook)
         name: (name to be displayed in terminal)
         entry: (command to excute)
         language: system (for our case, always system) 
         always_run: true (if true, it will always run)
         pass_filenames: true (if true, hook will have access to the file name)
    
    < div >
    YAPF < br/>のサンプルプラグインを定義しましょう
    <> P >
    クラスをハイライト表示する
       - id: YAPF 
         name: YAPF 🧹
         entry: zsh -c 'yapf --in-place *.py'
         language: system
         always_run: true
         pass_filenames: true
    
    < div >
    <高橋潤子>p >
    他のすべてのプラグインはかなり似ています.以下の全てのプラグインは<山田>
    < div class ="LagagCount - gig - Link - tag "
    "スクリプトのID "https://gist.github.com/rahulbanerjee26/38cd584f7c40db65e5d92e0fbd9b1279.js//>
    < div >

    Whenever you update your YAML file, you will have to add the file to the staging area using git add . or git add .pre-commit-config.yaml


    以下は< tt/p/pの成功です
    < P >


    結論


    プリコミットフックを設定すると、コードがPEP 8規格に従って適切にフォーマットされますbr/>
    私はあなたが役に立つ記事を見つけてほしい.私を付け加えてください