クリーンなコードを自動化する
8858 ワード
我々は、フォーマット、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 >
このパッケージは、ユニットテストの実行に役立ちます.注意しておく必要があるのは、あなたのPythonテストを含むPythonファイルが' testRunu 'で始まることです.p >
< tt > assert文のみがサポートされます.パッケージ< br/>をインストールするには
<> P >
クラスをハイライト表示する
ユニットテストを実行するには、次のコマンドを入力します.
<> P >
クラスをハイライト表示する
すべてのテストがパスした場合、同様の出力< br/>を見るべきです
<> P >
クラスをハイライト表示する
複数の相対的なインポートに関連するエラーが発生した場合< br/>
<> P >
クラスをハイライト表示する
< tt > PyTestの依存関係の問題です.あなたはAstroIDをアンインストールし、再度インストールする必要があります.これにより、AlTest AstroIDバージョンがインストールされますbr/>
<> P >
クラスをハイライト表示する
この後、PyTestをアンインストールしてPyTest < br/>をインストールしなければなりません
<> P >
クラスをハイライト表示する
これは、Googleによって開発され、場所の書式設定をサポートします.パッケージ< br/>をインストールするには
<> P >
クラスをハイライト表示する
ファイルをフォーマットするには、次の< br/>を入力します
<> P >
クラスをハイライト表示する
<高橋潤子>
<> P >
クラスをハイライト表示する
しかしながら、これは我々の仮想環境フォルダも含みます.Venvフォルダーを無視するには、単にファイルを作成します.YapfignoreとVenvを追加します.p >
注意:このコマンドは実行するのに多少時間がかかるかもしれません.'**'の代わりに、フォルダの特定の名前を使用できます.p >
このパッケージはインポート文をソートしてPEP 8規則に従うようにします.p >
インポートは次の順序でグループ化しなければなりません.
<ウル> 標準ライブラリのインポート 関連サードパーティ輸入. ローカルアプリケーション/ライブラリ固有のインポート. < ull >
< tt > isort re - orderステートメントを実行して上記の規則を守ります.br/>
パッケージ< br/>をインストールするには
<> P >
クラスをハイライト表示する
< tt > isort < br/>を実行します.
<> P >
クラスをハイライト表示する
未使用のインポート、変数、オブジェクトキーを取り除くのに役立ちます.p >
パッケージをインストールするには
<> P >
クラスをハイライト表示する
< ulink > autoflake < br/>を実行する
<> P >
クラスをハイライト表示する
<ウル>
autopep8 3.9 k +⭐️
black 22.2 k +⭐️ < ull >
< p > pylintはコードがPEP 8規則と標準に従うことを保証します.これは、各Pythonのファイルを10からスコアを与える(それは同様に否定的なスコアを与えることができます)/
パッケージをインストールするには
<> P >
クラスをハイライト表示する
リンチ< br/>を実行するには
<> P >
クラスをハイライト表示する
< p >議論
基本的なスクリプトは、重要な動作が起こる前に、例えば、コミットが行われる前にコードが実行される前に、コードがrepoにプッシュされる前にhere .
私たちはプリコミットフックに焦点を合わせます.事前コミットフックは、コミットを行う前に実行されるフックです.p >
パッケージをインストールしましょう
<> P >
クラスをハイライト表示する
< tag >サンプル前のフックYAMLファイルを生成します.br/>
<> P >
クラスをハイライト表示する
私たちのフックを追加しましょう
<> P >
クラスをハイライト表示する
すべてのコミットの前に、私たちのYAMLファイルで定義されたpre - commitフックが実行されます.p >
<武井>br/>
すべてを削除し、以下の< br/>を維持するだけです
<> P >
クラスをハイライト表示する
プラグインを追加します
<> P >
クラスをハイライト表示する
YAPF < br/>のサンプルプラグインを定義しましょう
<> P >
クラスをハイライト表示する
<高橋潤子>p >
他のすべてのプラグインはかなり似ています.以下の全てのプラグインは<山田>
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/rahulbanerjee26/38cd584f7c40db65e5d92e0fbd9b1279.js//>
< div >
以下は< tt/p/pの成功です
< P >
プリコミットフックを設定すると、コードがPEP 8規格に従って適切にフォーマットされますbr/>
私はあなたが役に立つ記事を見つけてほしい.私を付け加えてください
我々が使うパッケージについて話す前に、私たちが使う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 >
インポートは次の順序でグループ化しなければなりません.
<ウル>
< 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 +⭐️
リンギング🔎
ピント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/>
私はあなたが役に立つ記事を見つけてほしい.私を付け加えてください
Reference
この問題について(クリーンなコードを自動化する), 我々は、より多くの情報をここで見つけました https://dev.to/rahulbanerjee99/automate-clean-code-and-linting-in-python-palテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol