目次
ファイル内の実行タイプ (C、R、W、E、F) を無視し、チェックしません。
ファイル内の関数の実行タイプ (C、R、W、E、F) を無視し、チェックしません。
ファイル内の特定のクラスの実行タイプ (C、R、W、E、F) を無視し、チェックしません
コマンドラインで pylint を使用します: disable=W
※今後の技術共有や即時アップデート、よりタイムリーな技術情報や学習技術資料は、公式アカウントCTO Plusにて公開してまいりますので、公式アカウント: CTO Plusをフォローしてください。
習得が簡単で強力なプログラミング言語として、Python はますます多くの人を魅了しています。ただし、Python の柔軟性と構文ルールが緩いため、コードの品質管理が課題となります。この問題を解決するために、Python コードの品質を向上させるのに役立つ人気のツール pylint を紹介します。
pylint は、Python コードを静的に分析し、潜在的な問題を見つけることができる Python コード検査ツールです。コードの構文エラーをチェックするだけでなく、コード スタイル、命名規則、コードの複雑さなどの側面もチェックできます。PEP 8 仕様およびその他のベスト プラクティスに基づいて、pylint はコードの品質を評価し、対応する提案と修復方法を提供する一連のルールを提供します。
この記事「Python コード スキャン: Python コードの品質を向上させるアーティファクト - Pylint の詳細な説明と使用ガイド」は、「Python コードの仕様とスキャン」シリーズの 4 番目です。最初の 3 つの記事は、ご自身の状況に応じて参照できます。CTO Plusのフォローアップ記事:
コード仕様と静的スキャン シリーズの内容:
- 「エンタープライズレベルの Python コードの静的スキャン - コード仕様、ロジック、文法、セキュリティ チェック、自動コード配置の概要」
- 「Python PEP8 コード仕様を読む」
- 「Python コード スキャン: 新世代 Python リンター ツール Ruff」
- 「Python コード スキャン: Python コードの品質を向上させるアーティファクト - pylint の詳細な説明と使用ガイド」
- 「Python コードスキャン: 軽量 Python 静的コード解析ツール pyflakes」
- 「Python コード スキャン: Python コードの仕様とエラー チェックのための強力なツール - flake8 の詳細な説明と実践」
- 「Python コード スキャン: mypy の静的型チェックに最適な選択」
- 「Python コード スキャン: Python コードの冗長性を自動的に削除する - オートフレークの使用に関するヒントと例」
- 「Python コード スキャン: Python コードの書式設定のための強力なツール - yapf の詳細な説明とベスト プラクティス」
- 「Python コード スキャン: ワンクリックで Python コードをフォーマットする黒魔術 - 黒の使用法チュートリアル」
- 「Python コードスキャン: import 文自動仕分けツール - isor の使用ガイドと使用例」
- 「Python コード スキャン: Python コード スタイルを自動的に修復するツール - autopep8 の詳細な説明と例」
- 「Python コード スキャン: project-pyproject-flake8 構成および使用法でのコード仕様とエラー チェック」
- 「 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
- Pycharm の設定
引数:$ファイルパス$
- Pycharmで構成ファイルを指定する方法
- Pycharm にパラメータを追加してカスタム型チェックをシールドする
無効化=W、E、R、C
使用例
コマンド ラインからPylint を実行pylint [options] path/to/dir
または pylint [options] path/to/module.py
使用すると、コード内の違反やエラーがコンソールに出力されます。
pylintrc
構成ファイルを使用して、 Pylint がチェックするコード エラーをカスタマイズすることもできます。
コマンドラインパラメータ
- -h、-ヘルプ
すべてのヘルプ情報を表示します。
- --generate-rcfile
pylint --generate-rcfile を使用して、サンプル構成ファイルを生成できます。リダイレクトを使用して、後で使用できるようにこの構成ファイルを保存できます。
pylint --generate-rcfile > pylint.conf
- --rcfile=<xx.conf>
pylint を実行するための設定ファイルを指定します。使用する構成を構成ファイルに含めると、独自のコードが標準化されるだけでなく、これらの仕様を他のユーザーと簡単に共有できるようになります。
pylint --rcfile=pylint.conf dw.py
- --reports=<y_or_n>
デフォルトは n で、Pylint の出力にはソース コード分析部分だけでなくレポート部分も含まれることを意味します。
pylint --rcfile=pylintrc.conf --reports=y main.py
検査結果を生成するレポートには上記のフォーマットが組み込まれており、Wは生成される検査レベルを表しており、レベルはエラー、警告、リファクタリング、規則の4種類に分かれており、最初の文字によって対応するレベルが決まります。「10, 0」は、アラームが配置されているソース コード ファイル内の行番号と列番号を表します。「未使用のインポートヘルプ」は問題の詳細を表します。"(unused-import)は問題のメッセージID情報です。
次の情報はメッセージ カテゴリに従って分類されており、4 つのレベルのアラーム情報が要約されています。
- --help-msg=
アラームのヘルプ情報を取得します。
特定のアラーム タイプのヘルプ情報を取得する必要がある場合は、「pylint --help-msg」コマンドを使用して取得できます。
pylint --help-msg=C0114
出力にメッセージ ID を含めてから、pylint --help-msg= を使用してエラーの詳細を表示し、エラーを具体的に特定できるようにします。
- --出力形式=
出力形式を設定します。選択できる形式はテキスト、解析可能、カラー化、msvs (ビジュアル スタジオ) で、デフォルトの出力形式はテキストです。
pylint --output-format=msvs external.py
- 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
- 指定されたタイプを無効にしない
pylint + ターゲットのプロジェクトまたはファイル
テストコードファイルを書く
pylintを実行する
の結果
コードが標準に修正され、修正されたコードが再度スキャンされると、検出ステータスがなく、スコアが 10 であることがわかります。
または、コマンドラインで pylint pylint_test.py を実行します。
- Wタイプを無効にする
pylint --disable=W 外部.py
プロファイル構成
プロジェクトのルート ディレクトリに構成ファイル pylintrc.conf を生成します。
pylint --generate-rcfile > pylintrc.conf
pylint --persistent=n --generate-rcfile > pylintrc.conf
- 個々のファイルをスキャンするための設定ファイルの持ち運び
pylint --rcfile=pylintrc.conf manage.py
- 指定した項目を無効にする
警告を無効にする設定と、指定した項目のチェックを無効にする設定を行います。
pylint のいくつかの状態: エラー (エラー) 警告 (警告) リファクタリング (再構築) 規約 (仕様)
--disable=W、E、R、C
--disable=E、R、C
--disable=E、R
R0801 項目を無効にして再度スキャンすると、矛盾した結果が出力されなくなることがわかります。
- 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 をチェック手順として使用して、コードが送信される前に問題を発見し、間違ったコードがメイン ブランチにマージされるのを避けることができます。
参考資料
- 公式ドキュメント: http://pylint.pycqa.org/en/latest/user_guide/output.html
- pylint:https://pylint.readthedocs.io/en/latest/user_guide/usage/run.html
- Python コード仕様: エンタープライズ レベルのコード静的スキャン - コード仕様、ロジック、構文、セキュリティ チェック、およびコード仕様の自動配置 (1)_pycharm コード仕様のチェック_SteveRocket のブログ - CSDN ブログ
- https://blog.csdn.net/zhouruifu2015/article/details/129877179
Pythonコラム
https://blog.csdn.net/zhouruifu2015/category_5742543
詳細情報 · WeChat パブリック アカウント [ CTO Plus ] を検索し、フォローして詳細情報を入手し、一緒に学び、コミュニケーションしましょう。
公開アカウントの説明については、次のリンクを参照してください。
さらなる興奮を求めて公式アカウントをフォローして一緒に学び成長していきましょう
標準ライブラリ シリーズ - 推奨書籍:
推奨
読書: