検索
ホームページバックエンド開発Python チュートリアルPylint を使用して Python コード スタイルを標準化する方法 (IBM より)_python

この記事では、詳細な理論的紹介とわかりやすい例を通じて、Python コード分析ツール Pylint について包括的に紹介します。これを読めば、読者は自分の開発プロジェクトに Pylint を簡単に適用できるようになると思います。 Pylint とは? Pylint は Python コードのエラーを分析し、コード スタイルの標準を満たしていないエラーを検出します。 Pylint で使用されるデフォルトのコーディング スタイルは PEP 8 (詳細については「参考文献」を参照) であり、問​​題が発生する可能性のあるコードです。現在の Pylint の最新バージョンは pylint-0.18.1 です。

Pylint は、通常のコード分析ツールの機能に加えて、コード行の長さのチェック、変数名が命名標準に準拠しているかどうかのチェックなど、より多くの機能を提供します。宣言されたインターフェイスが実際に使用されるなど。

    Pylint の大きな利点は、高度に構成可能で、高度にカスタマイズ可能であり、機能を追加するための小さなプラグインを簡単に作成できることです。
  • Pylint を 2 回実行すると、現在と前回の実行結果が同時に表示されるため、コードの品質が向上したかどうかを確認できます。
  • Pylint は現在、Eclipse の pydev プラグインにも統合されています。
  • Pylintの詳細な紹介

  • Pylintのインストール

Pylintは、2.2以降のすべてのPythonバージョンで使用できます。パッケージ logilab-astng (バージョン >= 0.14) および logilab-common (バージョン >= 0.13) が必要です (具体的な情報については、「リソース」を参照してください)。Python バージョンが 2.3 より前の場合は、optik パッケージも必要です (この記事では、次の例ではこのケースを考慮しません)。

Pylint で使用されるすべてのパッケージのダウンロード アドレス

logilab-astng 最新パッケージのダウンロード: http://www.logilab.org/856/

logilab-common 最新パッケージのダウンロード: http://www.logilab. org/848/optik のパッケージのダウンロード: http://optik.sourceforge.net/

Pylint の最新のパッケージのダウンロード: http://www.logilab.org/project/pylint

Linux への Pylint のインストール

1. Linux では、まず Python パッケージ (バージョン 2.2 以上) をインストールし、環境変数 $PATH に Python 実行可能ファイルへのパスを追加します。

2. Pylint、logilab-astng (バージョン >= 0.14) および logilab-common (バージョン >= 0.13) のパッケージをダウンロードし、tar zxvf *.tar.gz を使用してこれらのパッケージを解凍します。

3. logilab-astng、logilab-common、Pylint が解凍されたフォルダーに順に入力し、Python setup.py install コマンドを実行してインストールします。 4. インストールが完了したら、pylint [options] module_or_package を通じて Pylint を呼び出すことができます。

Windows への Pylint のインストール


1. Python パッケージ (バージョン 2.2 以降) をインストールし、デスクトップの [マイ コンピューター] アイコンを右クリックし、[プロパティ]、[詳細設定]、[環境変数] を選択し、Python を $PATH に追加します。 、C:Python26 など。

2. 解凍ツールを使用してすべてのパッケージを解凍します。

3. コマンド ライン ウィンドウを開き、cd を使用して logilab-astng、logilab-common、Pylint の解凍されたフォルダーに順番に入力し、コマンド python setup.py install を実行してインストールします。 4. インストールが完了すると、Python インストール パスに Scripts フォルダーが表示されます。このフォルダーには、pylint.bat などのいくつかの Bat スクリプトが含まれています。 5. pylint.bat を呼び出すときにフルパスを入力しないようにするには、pylint.bat のリダイレクト ファイルを Python インストール ディレクトリに作成します。これは、pylint.bat の実際のパスを含むプレーン テキスト ファイルです。 . 、C:\Python26Scriptspylint.bat など。

6. インストールが完了したら、pylint [options] module_or_package を通じて Pylint を呼び出すことができます。



Pylint呼び出し


リスト1. Pylint呼び出しコマンド

pylint [options] module_or_package


Pylintを使用してモジュール module.py のコードを確認します:

1.モジュールフォルダー、実行

現在の作業ディレクトリが Python パスに自動的に追加されるため、この呼び出し方法は常に機能します。

  • 2. モジュールが配置されているフォルダーを入力せずに、pylint [options] directory/module.py<code>pylint [options] module.py を実行します。この呼び出しメソッドは、次の条件が満たされる場合に機能します: ディレクトリが Pythonパッケージ (たとえば、__init__.py ファイルを含む) またはディレクトリが Python パスに追加されます。

  • Pylint を使用してパッケージパッケージのコードを確認します:

    pylint [options] directory/module.py<br>这种调用方式当如下条件满足的时候是可以工作的:directory 是个 Python 包 ( 比如包含一个 __init__.py 文件 ),或者 directory 被加入了 Python 的路径中。

使用 Pylint 对一个包 pakage 进行代码检查:

  • 1. 进入这个包所在文件夹,运行 pylint [options] pakage

    1. パッケージが存在するフォルダーに入り、pylint [options] pakage を実行します。
  • 現在の作業ディレクトリが Python パスに自動的に追加されるため、この呼び出し方法は常に機能します。
  • pylint [options] directory/ pakage
    2. パッケージが存在するフォルダーに入らずに

    を実行します。 🎜 この場合、次の条件が満たされる場合に機能します: ディレクトリが Python パスに追加されます。たとえば、Linux では、PYTHONPATH=$PYTHONPATH: ディレクトリをエクスポートします。 🎜

さらに、tkinter パッケージがインストールされているマシンの場合、コマンド pylint-gui を使用して単純な GUI インターフェイスを開き、ここにモジュールまたはパッケージの名前を入力します (規則はコマンド ラインと同じです)。 「実行」をクリックすると、Pylint の出力が GUI に表示されます。

Pylint の共通コマンドラインパラメータ

  • -h、--help

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

  • --generate-rcfile

    pylint --generate-rcfile を使用してサンプル構成ファイルを生成できます。リダイレクトを使用して、後で使用できるようにこの構成ファイルを保存できます。他のオプションを前に追加して、これらのオプションの値が生成された構成ファイルに含まれるようにすることもできます。例: pylint --persistent=n --generate-rcfile > pylint.conf を見ると、persistent=no がデフォルト値の yes ではなくなっていることがわかります。

  • --rcfile=

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

  • -i , --include-ids=

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

  • -r , --reports=

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

  • --files-output=

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

  • -f , --output-format=

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

  • --disable-msg=

    たとえば、出力に警告メッセージ W0402 が含まれている場合、出力に表示したくない場合は、次のように指定できます。 --disable- msg= W0402

Pylint の出力

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

ソースコード分析部分:

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

MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE

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

(C) 規約。コーディング スタイル標準
(R) リファクタリングに違反します。非常に貧弱に書かれたコード。
(W) 警告。 Python 固有の質問。
(E) エラー。おそらくコードのバグです。
(F) 致命的なエラー。 Pylint のそれ以上の実行を妨げるエラー。

リスト 2. Pylint での utils モジュールの出力結果

************** Module utils
C: 88:Message: Missing docstring
R: 88:Message: Tooいくつかのパブリック メソッド (0/2)
C:183:MessagesHandlerMixIn._cat_ids: ドキュメント文字列がありません
R:183:MessagesHandlerMixIn._cat_ids: メソッドは関数である可能性があります
R:282:MessagesHandlerMixIn.list_messages: ブランチが多すぎます (14/12)

レポート セクション:

ソース コード分析が完了すると、各カテゴリのメッセージ数、モジュールの依存関係など、プロジェクトの特定の側面に焦点を当てた一連のレポートが作成されます。 。具体的には、レポートには次の側面が含まれます:

  • チェックされたモジュールの数。

  • 各モジュールのエラーと警告の割合。たとえば、2 つのモジュール A と B があります。合計 4 つのエラーが検出され、A に 1 つのエラーが、B に 3 つのエラーが検出された場合、A のエラーの割合は 25%、B のエラーの割合は 75% になります。 。

  • エラーと警告の合計数。

Pylintを使用してPythonコードを分析する具体的な例

以下は、xmlファイルからいくつかの値を読み取り、それらを表示するPythonコードdw.pyです。コードは次のとおりです。 3. ソースコード

import string 
 #!/usr/bin/env python 
 
 import xml.dom.minidom 
 
 xmlDom=xml.dom.minidom.parse("identity.xml") 
 organizations = xmlDom.getElementsByTagName(&#39;DW&#39;) 
 for org in organizations: 
  products = org.getElementsByTagName(&#39;linux&#39;) 
 for product in products: 
  print &#39;ID: &#39; + product.getAttribute(&#39;id&#39;) 
  print &#39;Name: &#39; + product.getAttribute(&#39;name&#39;) 
  print &#39;Word Count: &#39; + product.getAttribute(&#39;count&#39;)


リスト 4.identity.xmlの内容

<IBM> 
  <DW> 
    <linux id="100" name="python" count="3000" /> 
  </DW> 
</IBM>


このときPylintを使った結果(出力をhtml形式でコピーしたものです)は、 :

リスト 5. Pylint 分析結果

************* Module dw
C:1:Missing docstring
C:5:Operator not preceded by a space xmlDom=xml.dom.minidom.parse("identity.xml") ^
C:5:Invalid name "xmlDom" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C:6:Invalid name "organizations" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

Report 部分省略

输出中第一部分是源代码分析,第二部分是报告。输出结果中有这么多信息,从哪里开始分析呢?首先使用如下的步骤来分析代码:

1. 因为输出结果太长,所以可以先不让它输出报告部分,先根据源代码分析部分来找出代码中的问题。使用选项 "--reports=n"。
2. 使用选项 "--include-ids=y"。可以获取到源代码分析部分每条信息的 ID。

清单 6. 使用 pylint --reports=n --include-ids=y dw.py 的结果

************* Module dw
C0111: 1: Missing docstring
C0322: 5: Operator not preceded by a space xmlDom=xml.dom.minidom.parse("identity.xml") ^
C0103: 5: Invalid name "xmlDom" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103: 6: Invalid name "organizations" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

每个信息前面都会加上一个 id, 如果不理解这个信息的意思,可以通过 pylint --help-msg=id来查看。

清单 7. 使用 pylint --help-msg= C0111 的结果

C0111: *Missing docstring*
Used when a module, function, class or method has no docstring. Some special
methods like __init__ doesn't necessary require a docstring.
This message belongs to the basic checker.

3. 开始分析每个源代码中的问题。从上面知道,第一个问题的原因是缺少 docstring,在代码中增加 docstring, 修改后的代码如下:

清单 8. 增加 docstring 修改后的源码


#!/usr/bin/env python 
 
"""This script parse the content of a xml file"""
 
 import xml.dom.minidom 
 
 xmlDom=xml.dom.minidom.parse("identity.xml") 
 organizations = xmlDom.getElementsByTagName(&#39;DW&#39;) 
 for org in organizations: 
 products = org.getElementsByTagName(&#39;linux&#39;) 
 for product in products: 
  print &#39;ID: &#39; + product.getAttribute(&#39;id&#39;) 
  print &#39;Name: &#39; + product.getAttribute(&#39;name&#39;) 
  print &#39;Word Count: &#39; + product.getAttribute(&#39;count&#39;)


重新运行 pylint --reports=n --include-ids=y dw.py,结果为:

清单 9. 运行结果

************* Module dw
C0322: 7: Operator not preceded by a space
xmlDom=xml.dom.minidom.parse("identity.xml")
^
C0103: 7: Invalid name "xmlDom" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103: 8: Invalid name "organizations" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

可以看到源代码中的第一个问题已被解决。

4. 关于第二个 C0322 的问题,这里的分析结果说明得比较清楚,是代码第七行中的等号运算符两边没有空格。我们在这里加上空格,重新运行 pylint --reports=n --include-ids=y dw.py,结果为:

清单 10. 运行结果

************* Module dw
C0103: 7: Invalid name "xmlDom" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C0103: 8: Invalid name "organizations" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

5. 可以看到现在问题只剩下 C0103 了。这里的意思是变量命名规则应该符合后面正则表达式的规定。Pylint 定义了一系列针对变量,函数,类等的名字的命名规则。实际中我们不一定要使用这样的命名规则,我们可以定义使用正则表达式定义自己的命名规则,比如使用选项 --const-rgx='[a-z_][a-z0-9_]{2,30}$',我们将变量 xmlDom改为 xmldom, 代码如下:

清单 11. 将变量 xmlDom 改为 xmldom 后的源码


#!/usr/bin/env python 
 
"""This script parse the content of a xml file"""
 
 import xml.dom.minidom 
 
 xmldom = xml.dom.minidom.parse("identity.xml") 
 organizations = xmldom.getElementsByTagName(&#39;DW&#39;) 
 for org in organizations: 
 products = org.getElementsByTagName(&#39;linux&#39;) 
 for product in products: 
  print &#39;ID: &#39; + product.getAttribute(&#39;id&#39;) 
  print &#39;Name: &#39; + product.getAttribute(&#39;name&#39;) 
  print &#39;Word Count: &#39; + product.getAttribute(&#39;count&#39;)


运行 pylint --reports=n --include-ids=y --const-rgx='[a-z_][a-z0-9_]{2,30}$' dw.py,结果中就没有任何问题了。

6. 如果希望一个组里的人都使用这些统一的规则,来规范一个部门的代码风格。比如说大家都使用 --const-rgx='[a-z_][a-z0-9_]{2,30}$'作为命名规则,那么一个比较便捷的方法是使用配置文件。
使用 pylint --generate-rcfile > pylint.conf来生成一个示例配置文件,然后编辑其中的 --const-rgx选项。或者也可以直接 pylint --const-rgx='[a-z_][a-z0-9_]{2,30}$' --generate-rcfile > pylint.conf,这样生成的配置文件中 --const-rgx选项直接就是 '[a-z_][a-z0-9_]{2,30}$'了。
以后运行 Pylint 的时候指定配置文件:pylint --rcfile=pylint.conf dw.py
这样 Pylint 就会按照配置文件 pylint.conf中的选项来指定参数。在一个部门中,大家可以共同使用同一个配置文件,这样就可以保持一致的代码风格。

7. 如果把 report 部分加上,即不使用 --reports=n,可以看到报告部分的内容。

结束语

この記事では、詳細な理論的紹介とわかりやすい例を通じて、Python コード分析ツール Pylint について包括的に紹介します。これを読んだ読者は、Pylint を自分の開発プロジェクトに簡単に適用できるようになると思います。

関連トピック

  • Pylint公式ウェブサイト。

  • logilab-astng の最新パッケージのダウンロード。

  • logilab-common の最新パッケージのダウンロード。

  • optik パッケージのダウンロード。

  • Pylint の最新パッケージのダウンロード。

  • Python コード スタイル標準 PEP 8 -- Python コードのスタイル ガイドをダウンロードしてご覧ください。

  • Python の詳細については、developerWorks の Python トピックを参照してください。

関連する推奨事項:

Python コードチェックツール pylint を使用すると、Python がより標準化されます

以上がPylint を使用して Python コード スタイルを標準化する方法 (IBM より)_pythonの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。