※記事内に商品プロモーションを含むことがあります。
はじめに
PythonのリンターRuffのpydocstyleプラグインを使い、docstringsのスタイルをチェックする方法を調査しました。
検証環境は以下の通りです。
- Windows 10 Home 22H2
- Python 3.13.1
- Ruff 0.11.0
Ruffとpydocstyle
RuffはPythonのリンター機能やフォーマッタ機能を持つツールです。
リンターとはソースコードの潜在的なバグやコーディングスタイルの違反がないかチェックするツールで、フォーマッタとはコーディングスタイルに合わせてコードを整形するツールです。
pydocstyleとは、もともとPythonのdocstringsがルールに合わせて記述されているかチェックするツールとして開発されていました。
しかし、2023年に開発が終了し、現在はRuffに1オプションとして組み込まれています。
pydocstyle機能を使う
Ruffの以下のコマンドを実行すると、pydocstyleのプラグインを使ってdocstringsのスタイルをチェックできます(設定ファイルを使用すると--select D
オプションは省略可能)。
スタイルの違反がある場合、エラーの内容とともに表示されます。
|
|
foo.py
は対象のスクリプトファイルやフォルダに変更して下さい。
さらに--fix
オプションを付けると、自動で修正可能な違反については修正されます。
|
|
ファイルを変更せずに差分をターミナルに表示したい場合、以下のように--diff
オプションを付けます。
|
|
pydocstyle機能の設定
Ruffの設定をpyproject.toml
に記述することができます。例を以下に示します。
|
|
select
はRuffのリンター機能で有効にするプラグインを示します。
そのため、select = ["D"]
とするとpydocstyle以外のリンター機能は無効になります。
デフォルトのリンター機能を有効にしたままpydocstyleを追加する場合、select = ["E4", "E7", "E9", "F", "B", "D"]
として下さい。
ignore
には無効にするエラー番号を定義します(複数定義可能)。
convention
には、docstringsのスタイルを指定します。
"google" | "numpy" | "pep257"
から選択します。
指定するconvention
によって、一部ルールの有効・無効が変化します。
pydocstyleのエラー番号
Ruffのpydocstyle機能には約50個のルールが定義されています。
いずれもD203
のように、D
と100~419の3桁の整数で表現されます。
これらは以下のように百の位でグループ分けされています。
- D100番台:docstringの未定義
- D200番台:docstring内や前後の改行・インデントに関連
- D300番台:docstringを囲むトリプルクォート
"""
に関連 - D400番台:句読点や大文字・小文字、コロンなどの記法に関連
先ほどignore
で無効にするエラー番号を指定しましたが、例えばD4
のように指定すると、D400
やD415
などD4
から始まるエラーは全て無効になります。
D41
としても同様に、D41
から始まるエラーは全て無効になります。
pydocstyle機能のエラー番号の一覧は以下にあります。
D100番台を見ると、パブリックメソッドにはdocstringが必要ですが、プライベートメソッドには必須ではありません。
また、docstringを日本語で書く場合、無効にすることを検討したいルールには以下があります。
- D400: docstringの1行目が
.
で終わっていない(NumPy, pep257スタイルのみ有効) - D415: docstringの1行目が
.
,!
,?
などで終わっていない(Googleスタイルのみ有効)