コードをよりメンテナンスしやすくする7つのPythonライブラリ


ソフトウェアプロジェクトが「保守モード」に入るにつれて、可読性と符号化基準に対する要求は簡単に外れます。しかし、コードライブラリで一貫したコードスタイルとテスト基準を維持することで、保守の圧力が大幅に軽減され、新たな開発者がプロジェクトの状況を迅速に把握することができ、同時にアプリケーションの品質をより良く維持することができます。
外部ライブラリを使ってコードの品質を確認するのは、プロジェクトの将来のメンテナンス性を守るためのいい方法です。以下は私たちのお気に入りのチェックコード(PEP 8と他のコードスタイルエラーのチェックを含む)のライブラリを紹介します。コードのスタイルが一致するように強制的に維持し、プロジェクトが成熟した時に許容できるテストのカバー率を確保します。
コードのスタイルを確認します。
PEP 8は、Pythonコードスタイル規範であり、行の長さ、インデント、複数行式、変数名の約束などを規定しています。あなたのチーム自体もPEP 8とは少し違ったコードスタイル仕様があるかもしれませんが、コードスタイル仕様の目標はコードライブラリの中で一貫した基準を強制的に実施し、コードの可読性をより強くし、維持しやすくします。下の3つのライブラリはコードの美化をお手伝いします。
1、Pyle int
PylointはPEP 8規格に違反した検査とよくあるエラーのライブラリです。いくつかの流行のエディタやIDEに統合されています。コマンドラインから単独で実行することもできます。 pip install pylint を実行して、Pyleをインストールします。その後、pylint [options] path/to/dir またはpylint [options] path/to/module.py を実行すれば、コマンドラインにPyleを使用して、コンソールにコードを出力します。ルール違反とエラーが発生したところです。
また、pylintrcプロファイルを使用して、Pylinintを定義してどのコードの誤りをチェックしますか?
2、Flaake 8
Flaake 8は「Pythonコードスタイルと品質を確認するためにPEP 8、Pyflaakes、McCabe、および第三者プラグインを統合したPythonツール」です。
実行 pip install flake8 は、フラッシュ8をインストールし、flake8 [options] path/to/dir またはflake8 [options] path/to/module.pyを実行すると、エラーと警告が表示されます。
Pyintと同様に、Flaake 8は、プロファイルを介して定義検査からのコンテンツを許可する。非常に明確な文書があります。有効な提出フックを含めて、自動検査コードを開発作業プロセスに組み込むことができます。
Flaake 8は、いくつかの流行のエディタやIDEに統合することもできますが、文書では詳細には説明されていません。Flaake 8を好きなエディタまたはIDEに統合するには、プラグイン(例えば、Sublime TextのFlaake 8プラグイン)を検索することができます。
3、Isort
Isortというライブラリはプロジェクトで導入したライブラリをアルファベット順に並べ替え、正確に異なる部分(例えば標準倉庫、第三者倉庫、自社の倉庫など)に区分することができます。このようにコードの可読性を向上させ、導入されたライブラリが多いときに各ライブラリを簡単に見つけることができます。pip install isort を実行してisortをインストールし、 isort path/to/module.py を実行すれば実行できます。文書にはさらに多くの構成項目が提供されています。例えば、設定.isort.cfgファイルによって、isortがどのように1つのライブラリの複数行の導入を処理するかを決定します。
Flaake 8、Pyintと同様に、isortは流行のエディタやIDEと統合したプラグインを提供しています。
コードのスタイルを共有します。
ファイルが変更されるたびにコマンドラインで手動でコードを確認するのはつらいことです。IDEの中にあるプラグインを使ってこの機能を実現するのもあまり好きではないかもしれません。同じように、あなたの同僚は異なるコードでチェックするかもしれません。彼らのエディタにもそのようなプラグインがないかもしれません。あなた自身もコードを厳しくチェックしたり、警告に従ってコードを修正したりしないかもしれません。つまり、あなたが共有したコードライブラリは次第に混乱して読みにくくなります。
非常に良いソリューションは、ライブラリを使用して、自動的にコードをPEP 8の仕様に従ってフォーマットします。私たちが推奨する3つのライブラリは、それぞれのカスタムレベルがあります。コードの書式設定方法を制御します。いくつかの設定がありますが、例えば、PyintとFlaake 8は、先行テストが必要です。我慢できないかもしれませんが、デフォルトの設定を変更することはできません。
4、Autopep 8
Autopep 8は、指定されたモジュールのコードを自動的にフォーマットし、再縮み、インデントの修復、余分なスペースの削除を含み、共通の比較エラー(例えば、ブール値とNone値)を再構成することができる。ドキュメント内の完全な修正リストを見ることができます。
動作 pip install --upgrade autopep8 はAutopep 8をインストールします。その後、autopep8 --in-place --aggressive --aggressive <filename> を実行すれば、コードを再フォーマットすることができます。aggressvieオプションの数はAuotopep 8がコードスタイルコントロールにどれだけのコントロールを持っているかを表します。ここではaggressvieのオプションを詳しく知ることができます。
5、Yapf
Yapfは、別の設定項目リストの再フォーマットコードを持つツールです。これはAutopep 8と異なる点は、コードの中でPEP 8仕様に違反しているところだけでなく、PEP 8に違反していないが、コードスタイルが一致しないところに再フォーマットすることであり、コードの読み取り可能性をより強くすることを意図している。 pip install yapf を実行してYapfをインストールし、yapf [options] path/to/dir またはyapf [options] path/to/module.py を実行してコードを再フォーマットすることができます。カスタマイズオプションの完全なリストはここです。
6、ブラック
ブラックはコードチェックツールの中で比較的新しいものです。それはAutopep 8とYapfと似ていますが、制約が多く、あまりにも多くのカスタムオプションがありません。このようなメリットは、どのようなコードスタイルを使うかを決める必要がないので、ブラックで決めてもらえばいいです。ここでBlack限定のカスタムオプションを確認して、設定ファイルでどのように設定するかを確認してください。
BlackはPython 3.6+に依存していますが、Python 2で作成したコードをフォーマットすることができます。pip install black を実行してBlackをインストールし、black path/to/dirまたはblack path/to/module.py を実行すれば、Blackを使用してコードを最適化することができます。
あなたのテストのカバー率を確認します。
作成テストを行っている場合は、コードライブラリに提出された新しいコードがすべてテストに合格し、テストのカバー率を低下させないことを確認する必要があります。テストカバレッジ率はテストの有効性と十分性を測る唯一の指標ではないが、プロジェクトが基本的なテスト基準に準拠することを保証する方法である。テストカバレッジ率の計算にはCoverageというライブラリの使用を推奨します。
7、Coverage
Coverageは数種類のカバー率をテストする方法を示しており、結果をコンソールまたはHTMLページに出力することを含み、どのような具体的なところがカバーされていないかを指摘している。設定ファイルを通じてカスタマイズしたCoverageで確認した内容で、より使いやすいようにすることができます。
実行 pip install coverage は、Coverageをインストールします。その後、coverage [path/to/module.py] [args] を実行してプログラムを実行し、出力結果を確認することができます。どのコード行が上書きされていないかを確認するなら、coverage report -m を実行すればいいです。
持続的な統合ツール
持続的統合(Continnutous integration)(CI)は、コードを統合して展開する前にコードスタイルエラーを自動的にチェックし、カバー率の最小値をテストするプロセスである。多くの無料または有料のツールはこの作業を実行するために使用されてもよく、具体的なプロセスはここでは説明しないが、CIプロセスはコードをより読みやすく、維持しやすい重要なステップであり、この部分についてはTravis CIおよびJenkinsを参照することができる。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。もっと知りたいなら、下のリンクを見てください。