Python コード スキャン: Python コードの品質を向上させるアーティファクト - pylint の詳細な説明と使用ガイド

目次

導入

パイリントの特徴

インストールと構成

使用例

コマンドラインパラメータ

ファイルのチェックを無視する

ファイル内の実行タイプ (C、R、W、E、F) を無視し、チェックしません。

ファイル内の関数の実行タイプ (C、R、W、E、F) を無視し、チェックしません。

ファイル内の特定のクラスの実行タイプ (C、R、W、E、F) を無視し、チェックしません

メンバーなしのプロンプトを無視する

コマンドラインで pylint を使用します: disable=W

プロファイル構成

プロジェクト全体をスキャンする

pylintの応用シナリオ

参考資料


※今後の技術共有や即時アップデート、よりタイムリーな技術情報や学習技術資料は、公式アカウントCTO Plusにて公開してまいりますので、公式アカウント: CTO Plusをフォローしてください。

習得が簡単で強力なプログラミング言語として、Python はますます多くの人を魅了しています。ただし、Python の柔軟性と構文ルールが緩いため、コードの品質管理が課題となります。この問題を解決するために、Python コードの品質を向上させるのに役立つ人気のツール pylint を紹介します。

pylint は、Python コードを静的に分析し、潜在的な問題を見つけることができる Python コード検査ツールです。コードの構文エラーをチェックするだけでなく、コード スタイル、命名規則、コードの複雑さなどの側面もチェックできます。PEP 8 仕様およびその他のベスト プラクティスに基づいて、pylint はコードの品質を評価し、対応する提案と修復方法を提供する一連のルールを提供します。

この記事「Python コード スキャン: Python コードの品質を向上させるアーティファクト - Pylint の詳細な説明と使用ガイド」は、「Python コードの仕様とスキャン」シリーズの 4 番目です。最初の 3 つの記事は、ご自身の状況に応じて参照できます。CTO Plusのフォローアップ記事:

コード仕様と静的スキャン シリーズの内容:

  1. エンタープライズレベルの Python コードの静的スキャン - コード仕様、ロジック、文法、セキュリティ チェック、自動コード配置の概要
  2. Python PEP8 コード仕様を読む
  3. Python コード スキャン: 新世代 Python リンター ツール Ruff
  4. Python コード スキャン: Python コードの品質を向上させるアーティファクト - pylint の詳細な説明と使用ガイド
  5. Python コードスキャン: 軽量 Python 静的コード解析ツール pyflakes
  6. Python コード スキャン: Python コードの仕様とエラー チェックのための強力なツール - flake8 の詳細な説明と実践
  7. Python コード スキャン: mypy の静的型チェックに最適な選択
  8. Python コード スキャン: Python コードの冗長性を自動的に削除する - オートフレークの使用に関するヒントと例
  9. Python コード スキャン: Python コードの書式設定のための強力なツール - yapf の詳細な説明とベスト プラクティス
  10. Python コード スキャン: ワンクリックで Python コードをフォーマットする黒魔術 - 黒の使用法チュートリアル
  11. Python コードスキャン: import 文自動仕分けツール - isor の使用ガイドと使用例
  12. Python コード スキャン: Python コード スタイルを自動的に修復するツール - autopep8 の詳細な説明と例
  13. Python コード スキャン: project-pyproject-flake8 構成および使用法でのコード仕様とエラー チェック
  14. Python コード スキャン: エンタープライズ レベルのコード セキュリティ脆弱性スキャン バンディット

導入

Pylint は、コード スタイル標準 (Pylint がデフォルトで使用するコード スタイルは PEP 8) に準拠していないライブラリや、コード行の長さ、変数名が準拠しているかどうかのチェックなどの一般的なエラーを検出する Python コード分析ツールです。記述されたコードが PEP-8 コーディング仕様に準拠していない場合、エラーが報告されます。これは、いくつかの一般的なエディターや IDEに統合されており 、コマンド ラインからスタンドアロンで実行することもできます。

pylint の設定ファイルとそのチェック方法を変更して、変数名や関数名を強制的にキャメルケースにするなど、他のコーディング標準に準拠させることができます。Pylint を使用すると、チームが統一されたコーディング標準を策定しやすくなります。

パイリントの特徴

pylint には次のような特徴があります。

1. 豊富なルール セット: pylint は、コーディング スタイル、命名規則、コードの複雑さなどの問題をカバーする多数のルールを提供します。ニーズに応じて、適切なチェックルールを選択できます。

2. カスタマイズ可能なルール: pylint はカスタム ルールをサポートしており、プロジェクトのニーズに応じて独自のルールを定義し、特定のコード品質要件を満たすことができます。

3. 詳細レポート: pylint は、各問題の説明、場所、推奨される修正を含む詳細レポートを生成します。これらのレポートは、コード内の問題を迅速に特定して解決するのに役立ちます。

4. 統合が簡単: pylint は、エディターや継続的統合システムなどの他のツールと統合できます。コード作成プロセス中にリアルタイムでコードをチェックし、コードを送信する前にチェックしてコードの品質を保証できます。

インストールと構成

次に、pylint のインストールを開始します。以下に示すように、pip コマンドを通じて pylint をインストールできます。

pip インストール pylint

  1. Pycharm の設定

引数:$ファイルパス$

  1. Pycharmで構成ファイルを指定する方法

  1. Pycharm にパラメータを追加してカスタム型チェックをシールドする

無効化=W、E、R、C

使用例

 コマンド ラインからPylint を実行pylint [options] path/to/dir または pylint [options] path/to/module.py 使用すると、コード内の違反やエラーがコンソールに出力されます。

 pylintrc 構成ファイルを使用して、 Pylint がチェックするコード エラーをカスタマイズすることもできます

コマンドラインパラメータ

  1. -h、-ヘルプ

すべてのヘルプ情報を表示します。

  1. --generate-rcfile

pylint --generate-rcfile を使用して、サンプル構成ファイルを生成できます。リダイレクトを使用して、後で使用できるようにこの構成ファイルを保存できます。

pylint --generate-rcfile > pylint.conf

  1. --rcfile=<xx.conf>

pylint を実行するための設定ファイルを指定します。使用する構成を構成ファイルに含めると、独自のコードが標準化されるだけでなく、これらの仕様を他のユーザーと簡単に共有できるようになります。

pylint --rcfile=pylint.conf dw.py

  1. --reports=<y_or_n>

デフォルトは n で、Pylint の出力にはソース コード分析部分だけでなくレポート部分も含まれることを意味します。

pylint --rcfile=pylintrc.conf --reports=y main.py

検査結果を生成するレポートには上記のフォーマットが組み込まれており、Wは生成される検査レベルを表しており、レベルはエラー、警告、リファクタリング、規則の4種類に分かれており、最初の文字によって対応するレベルが決まります。「10, 0」は、アラームが配置されているソース コード ファイル内の行番号と列番号を表します。「未使用のインポートヘルプ」は問題の詳細を表します。"(unused-import)は問題のメッセージID情報です。

次の情報はメッセージ カテゴリに従って分類されており、4 つのレベルのアラーム情報が要約されています。

  1. --help-msg=

アラームのヘルプ情報を取得します。

特定のアラーム タイプのヘルプ情報を取得する必要がある場合は、「pylint --help-msg」コマンドを使用して取得できます。

pylint --help-msg=C0114

出力にメッセージ ID を含めてから、pylint --help-msg= を使用してエラーの詳細を表示し、エラーを具体的に特定できるようにします。

  1. --出力形式=

出力形式を設定します。選択できる形式はテキスト、解析可能、カラー化、msvs (ビジュアル スタジオ) で、デフォルトの出力形式はテキストです。

pylint --output-format=msvs external.py

  1. xx.txt

各モジュール/パッケージのメッセージを pylint_module/package.txt というファイルに出力し、レポートがある場合は pylint_global.[txt|html] というファイルに出力します。デフォルトでは、ファイルではなく画面に出力されます。

pylint --output-format=msvs external.py > test.txt

Pylint 出力

Pylint のデフォルトの出力形式は生のテキスト形式ですが、-f、--output-format= を使用して html などの他の出力形式を指定できます。Pylint の出力には、ソース コード分析部分とレポート部分の 2 つの部分があります。

ソースコード解析部分:

各 Python モジュールについて、Pylint の結果には最初にいくつかの "*" 文字が表示され、その後にモジュールの名前が表示され、次に一連のメッセージが表示されます。メッセージの形式は次のとおりです。

MESSAGE_TYPE: LINE_NUM:[OBJECT:] メッセージ

MESSAGE_TYPE には次のタイプがあります。

(C) 条約。コーディングスタイル標準に違反します

(R) 再建。非常に貧弱に書かれたコード。

(W) 警告。Python 固有の質問。

(E) エラー。おそらくコードのバグです。

(F) 致命的なエラー。Pylint のそれ以上の実行を妨げるエラー。

ファイルのチェックを無視する

external.py はチェックしないでください。ファイル内に設定します: # pylint: Skip-file

# pylint: スキップファイル

pysdk.first_layer から BaseLayer をインポート

クラスイベント(BaseLayer):

    def __init__(自分自身):

        # pylint: 無効化=C0115

        super(イベント, 自己).__init__()

クラスメトリクス(BaseLayer):

    def __init__(自分自身):

        super(メトリクス, self).__init__()

ファイル内の実行タイプ(C、R、W、E、F) を無視し、チェックしません。

external.py'W'タイプはチェックされていません。ファイル内で設定します: # pylint : disable=W

# pylint: 無効化=W

pysdk.first_layer から BaseLayer をインポート

クラスイベント(BaseLayer):

    def __init__(自分自身):

        super(イベント, 自己).__init__()

クラスメトリクス(BaseLayer):

    def __init__(自分自身):

        super(メトリクス, self).__init__()

ファイル内の関数の実行タイプ(C、R、W、E、F) を無視し、チェックしません。

external.py'W,R,E'タイプはチェックされていません。ファイル内の関数または通常の関数の下に設定します: # pylint: disable=W,E, R

pysdk.first_layer から BaseLayer をインポート

クラスイベント(BaseLayer):

    def __init__(自分自身):

        # pylint: 無効化=W,R,E

        super(イベント, 自己).__init__()

    def __init__(自分自身):

        super(イベント, 自己).__init__()

クラスメトリクス(BaseLayer):

    def __init__(自分自身):

        super(メトリクス, self).__init__()

ファイル内の特定のクラスの実行タイプ (C、R、W、E、F) を無視し、チェックしません

external.py「W,R,E」タイプはチェックされていません。ファイル内のクラスの下に設定します: # pylint: disable=C,F,W,E, R

pysdk.first_layer から BaseLayer をインポート

クラスイベント(BaseLayer):

    # pylint: 無効化=C、R、W、E、F

    def __init__(自分自身):

        super(イベント, 自己).__init__()

    def __init__(自分自身):

        super(イベント, 自己).__init__()

クラスメトリクス(BaseLayer):

    def __init__(自分自身):

        super(メトリクス, self).__init__()

メンバーなしのプロンプトを無視する

コード変更 #pylint: disable=no-member

pylint --disable=no-member ...

コマンドラインで pylint を使用します: disable=W

  1. 指定されたタイプを無効にしない

pylint + ターゲットのプロジェクトまたはファイル

テストコードファイルを書く

pylintを実行する

の結果

コードが標準に修正され、修正されたコードが再度スキャンされると、検出ステータスがなく、スコアが 10 であることがわかります。

または、コマンドラインで pylint pylint_test.py を実行します。

  1. Wタイプを無効にする

pylint --disable=W 外部.py

プロファイル構成

プロジェクトのルート ディレクトリに構成ファイル pylintrc.conf を生成します。

pylint --generate-rcfile > pylintrc.conf

pylint --persistent=n --generate-rcfile > pylintrc.conf

  1. 個々のファイルをスキャンするための設定ファイルの持ち運び

pylint --rcfile=pylintrc.conf manage.py

  1. 指定した項目を無効にする

警告を無効にする設定と、指定した項目のチェックを無効にする設定を行います。

pylint のいくつかの状態: エラー (エラー) 警告 (警告) リファクタリング (再構築) 規約 (仕様)

--disable=W、E、R、C

--disable=E、R、C

--disable=E、R

R0801 項目を無効にして再度スキャンすると、矛盾した結果が出力されなくなることがわかります。

  1. pylint は 1 行ごとに検出される文字数を設定します

1 行あたりの文字数を変更する場合、デフォルトは 100 です。

注: pylint.conf の名前を.pylintrcに変更します。つまり、実行のたびに--rcfileパラメータを指定する必要はありません

プロジェクト全体をスキャンする

プロジェクトのルート ディレクトリを右クリックし、pylint の実行を選択します。

pylint を使用する場合、プロンプト レベルには、エラー、警告、リファクタリング、および規則があります。

出力結果は、仕様に抵触する位置(列)、違反している仕様番号、具体的な内容のプロンプトであり、検出結果に応じて10点満点で採点されます。

検査情報から、上記のコードにはモジュール コメント (モジュール docstring が欠落) と関数コメント (関数 docstring が欠落) がなく、関数名がヘビの形の命名規則 (すべて小文字と文字で構成されている) に準拠していないことがわかります。アンダースコア、2 つの単語の間の使用 (ダウンライン接続) など。

pylintの応用シナリオ

pylint は、多くのプロジェクト、特に大規模なプロジェクトやチームのコラボレーションに適用できます。次に、pylint のいくつかのアプリケーション シナリオを示します。

1. コード仕様: PEP 8 仕様に準拠するプロジェクトの場合、pylint はコード スタイルが仕様に準拠しているかどうかを確認し、対応する修復提案を提供するのに役立ちます。

2. コードの品質: pylint は、コード内の一般的な問題 (未使用の変数、未使用のインポート、重複コードなど) をチェックして、コードの品質と保守性を向上させるのに役立ちます。

3. チーム コラボレーション: チーム コラボレーションでは、pylint を使用してコード スタイルと品質基準を統一し、コードの一貫性と読みやすさを向上させることができます。

4. 継続的インテグレーション: 継続的インテグレーション環境では、pylint をチェック手順として使用して、コードが送信される前に問題を発見し、間違ったコードがメイン ブランチにマージされるのを避けることができます。

参考資料

  1. 公式ドキュメント: http://pylint.pycqa.org/en/latest/user_guide/output.html
  2. pylint:https://pylint.readthedocs.io/en/latest/user_guide/usage/run.html
  3. Python コード仕様: エンタープライズ レベルのコード静的スキャン - コード仕様、ロジック、構文、セキュリティ チェック、およびコード仕様の自動配置 (1)_pycharm コード仕様のチェック_SteveRocket のブログ - CSDN ブログ
  4. https://blog.csdn.net/zhouruifu2015/article/details/129877179

Pythonコラム
https://blog.csdn.net/zhouruifu2015/category_5742543


詳細情報 · WeChat パブリック アカウント [ CTO Plus ] を検索し、フォローして詳細情報を入手し、一緒に学び、コミュニケーションしましょう。

公開アカウントの説明については、次のリンクを参照してください。


さらなる興奮を求めて公式アカウントをフォローして一緒に学び成長していきましょう

Articulate について「知識とテクノロジーのポーターであれ。生涯学習の愛好家であれ。深さと幅のある技術サークルであれ。」私は常に専門分野でスキルを磨きたいと思っていました https://mp.weixin.qq. com icon-default.png?t=N7T8/ s?__biz=MzIyMzQ5MTY4OQ==&mid=2247484278&idx=1&sn=2b774f789b4c7a2ccf10e465a1b9def6&chksm=e81c2070df6ba966026fd7851efa824b5e2704e3fd34e 7 6228ca4ce64d93f7964cd4abe60f2b#rd

標準ライブラリ シリーズ - 推奨書籍:

推奨
読書:

おすすめ

転載: blog.csdn.net/zhouruifu2015/article/details/132831978