見出し画像

mypy オプション メモ

とりあえず多すぎてわけわからないけど、見つけたやつ

毎回手動で指定するのは困難を極めるので設定ファイルを使うのが良い。
以下記事参照

基本的なオプション

  • -h, --help
    ヘルプメッセージを表示して終了します。

  • -v, --verbose
    詳細なメッセージを表示します。

  • -V, --version
    mypy のバージョン番号を表示して終了します。

  • -O FORMAT, --output FORMAT
    カスタム出力形式を設定します。


設定ファイル関連

  • --config-file CONFIG_FILE
    設定ファイル(mypy.ini、.mypy.ini、pyproject.toml、setup.cfg、~/.config/mypy/config、~/.mypy.ini など)を指定します。
    複数のオプションを毎回コマンドラインで指定する代わりに、設定ファイルで一括管理できます。

  • --warn-unused-configs
    未使用の [mypy-<pattern>] や [[tool.mypy.overrides]] セクションがあれば警告を表示します。
    (逆に、--no-warn-unused-configs で警告を抑制できます)


インポート関連のオプション

  • --no-namespace-packages
    namespace パッケージ(PEP 420、__init__.py がないパッケージ)のサポートを無効にします。
    (逆は --namespace-packages)

  • --ignore-missing-imports
    存在しないモジュールのインポートをエラーにせず、静かに無視します。

  • --follow-imports {normal,silent,skip,error}
    インポートの扱い方を指定します。

    • normal: 通常通りインポートを追跡

    • silent: エラー表示を控えめに

    • skip: インポートをスキップ

    • error: インポートエラーとして扱う

  • --python-executable EXECUTABLE
    PEP 561 準拠のインストール済みパッケージやスタブを探す際に使用する Python 実行ファイルを指定します。

  • --no-site-packages
    インストール済みの PEP 561 準拠パッケージの検索を行いません。

  • --no-silence-site-packages
    PEP 561 パッケージ内のエラーをサイレンスせずに表示します。

  • --junit-format {global,per_file}
    --junit-xml オプションと併用した場合の出力形式を指定します。

    • global: 全エラーをまとめた1つのテスト結果として出力

    • per_file: 各ファイルごとにテストエントリを出力


プラットフォーム・構成関連

  • --python-version x.y
    指定した Python バージョン(例: 3.9)でコードを型チェックします。

  • --platform PLATFORM
    特定の OS プラットフォーム用の型チェックを行います。
    (デフォルトは sys.platform)

  • --always-true NAME
    指定した変数名を常に True とみなします。
    (同じオプションを複数回指定可能)

  • --always-false NAME
    指定した変数名を常に False とみなします。


動的型付けの禁止関連

  • --enable-incomplete-feature {NewGenericSyntax,PreciseTupleTypes}
    新しい/実験的な機能(例: 新しいジェネリック構文や厳密なタプル型)のサポートを有効にします。

  • --disallow-any-unimported
    インポートを追跡できなかったために Any 型となるケースを禁止します。

  • --disallow-any-expr
    式に Any 型が発生することをすべて禁止します。

  • --disallow-any-decorated
    デコレーター変換後の関数で、署名に Any 型が含まれる場合を禁止します。

  • --disallow-any-explicit
    型指定の際に明示的に Any を使うことを禁止します。

  • --disallow-any-generics
    明示的な型パラメータが指定されていないジェネリック型の使用を禁止します。
    (逆は --allow-any-generics)

  • --disallow-subclassing-any
    Any 型の値を継承してクラス定義することを禁止します。
    (逆は --allow-subclassing-any)


未定義型の関数定義と呼び出し

  • --disallow-untyped-calls
    型注釈のない関数を、型注釈のある関数から呼び出すことを禁止します。
    (逆は --allow-untyped-calls)

  • --untyped-calls-exclude MODULE
    特定のパッケージ、モジュール、またはクラスについては、未注釈関数の呼び出しのチェックを無効にします。

  • --disallow-untyped-defs
    型注釈のない関数定義や、型情報が不完全な定義を禁止します。
    (逆は --allow-untyped-defs)

  • --disallow-incomplete-defs
    型情報が不完全な関数定義を禁止します。(完全に未注釈の場合は対象外)
    (逆は --allow-incomplete-defs)

  • --check-untyped-defs
    型注釈がない関数の内部も型チェックします。
    (逆は --no-check-untyped-defs)

  • --disallow-untyped-decorators
    型付き関数に対して、型注釈のないデコレーターを使用することを禁止します。
    (逆は --allow-untyped-decorators)


None と Optional の扱い

  • --implicit-optional
    デフォルト値が None の引数は自動的に Optional 型とみなします。
    (逆は --no-implicit-optional)

  • --no-strict-optional
    厳密な Optional チェックを無効にします。
    (逆は --strict-optional)


警告の設定

  • --warn-redundant-casts
    推論された型へのキャストが冗長な場合に警告します。
    (逆は --no-warn-redundant-casts)

  • --warn-unused-ignores
    不要な # type: ignore コメントについて警告を表示します。
    (逆は --no-warn-unused-ignores)

  • --no-warn-no-return
    戻り値を返さない関数に対する警告を抑制します。
    (逆は --warn-no-return)

  • --warn-return-any
    型注釈のある関数から Any 型の値を返す場合に警告します。
    (逆は --no-warn-return-any)

  • --warn-unreachable
    到達不可能なコードに対して警告を表示します。
    (逆は --no-warn-unreachable)


厳格モードその他のオプション

  • --allow-untyped-globals
    トップレベルの変数で型注釈がない場合のエラーを抑制します。
    (逆は --disallow-untyped-globals)

  • --allow-redefinition
    変数の再定義(型が変更される場合も含む)を許可します。
    (逆は --disallow-redefinition)

  • --no-implicit-reexport
    インポートを暗黙的に再エクスポートしないようにします。
    (逆は --implicit-reexport)

  • --strict-equality
    型が異なる値同士の比較(等価性、同一性、コンテナのチェック)を禁止します。
    (逆は --no-strict-equality)

  • --extra-checks
    追加のチェックを有効にします(たとえば、TypedDict の部分的な上書きの禁止など)。
    (逆は --no-extra-checks)

  • --strict
    以下の厳格なチェックを一括で有効にするショートカットです:

    • --warn-unused-configs

    • --disallow-any-generics

    • --disallow-subclassing-any

    • --disallow-untyped-calls

    • --disallow-untyped-defs

    • --disallow-incomplete-defs

    • --check-untyped-defs

    • --disallow-untyped-decorators

    • --warn-redundant-casts

    • --warn-unused-ignores

    • --warn-return-any

    • --no-implicit-reexport

    • --strict-equality

    • --extra-checks

  • --disable-error-code NAME
    特定のエラーコードを無効化します。

  • --enable-error-code NAME
    特定のエラーコードを有効化します。


エラーメッセージの表示設定

  • --show-error-context
    エラーの前に、コンテキスト説明("note:" メッセージ)を表示します。
    (逆は --hide-error-context)

  • --show-column-numbers
    エラー出力に列番号を表示します。
    (逆は --hide-column-numbers)

  • --show-error-end
    エラー出力に終了行・列番号も表示します(--show-column-numbers も暗黙に有効にします)。
    (逆は --hide-error-end)

  • --hide-error-codes
    エラー出力からエラーコードを非表示にします。
    (逆は --show-error-codes)

  • --show-error-code-links
    エラーコードに関連するドキュメントへのリンクを表示します。
    (逆は --hide-error-code-links)

  • --pretty
    視覚的に整形されたエラー出力(ソフトなワードラップ、ソースコードスニペット、エラー位置のマーキングなど)を使用します。
    (逆は --no-pretty)

  • --no-color-output
    エラー出力に色付けを行いません。
    (逆は --color-output)

  • --no-error-summary
    エラーの統計サマリーを表示しません。
    (逆は --error-summary)

  • --show-absolute-path
    エラー出力にファイルの絶対パスを表示します。
    (逆は --hide-absolute-path)


インクリメンタルモード

  • --no-incremental
    モジュールキャッシュを使わず、毎回全体を再チェックします。
    (逆は --incremental)

  • --cache-dir DIR
    インクリメンタルモード用のキャッシュを保存するディレクトリを指定します(デフォルトは .mypy_cache)。

  • --sqlite-cache
    キャッシュを SQLite データベースに保存します。
    (逆は --no-sqlite-cache)

  • --cache-fine-grained
    mypy daemon 用に、詳細な依存関係情報をキャッシュに含めます。

  • --skip-version-check
    古いバージョンの mypy で作成されたキャッシュを使用する際のバージョンチェックをスキップします。

  • --skip-cache-mtime-checks
    キャッシュの内部整合性チェック(mtime に基づく)をスキップします。


高度なオプション

  • --pdb
    致命的なエラーが発生した場合に、pdb(Python デバッガ)を起動します。

  • --show-traceback, --tb
    致命的エラー時にトレースバックを表示します。

  • --raise-exceptions
    致命的エラー時に例外を発生させます。

  • --custom-typing-module MODULE
    カスタムの typing モジュールを使用します。

  • --old-type-inference
    新しい実験的な型推論アルゴリズムを無効化し、従来の型推論を使用します。

  • --custom-typeshed-dir DIR
    カスタム typeshed のディレクトリを指定します。

  • --warn-incomplete-stub
    typeshed 内の型注釈が不足している場合に警告します。
    (逆は --no-warn-incomplete-stub)

  • --shadow-file SOURCE_FILE SHADOW_FILE
    指定した SOURCE_FILE に遭遇した際、代わりに SHADOW_FILE の内容を読み込んで型チェックを行います。


レポート生成

  • --any-exprs-report DIR

  • --cobertura-xml-report DIR

  • --html-report DIR

  • --linecount-report DIR

  • --linecoverage-report DIR

  • --lineprecision-report DIR

  • --txt-report DIR

  • --xml-report DIR

  • --xslt-html-report DIR

  • --xslt-txt-report DIR

これらのオプションは、指定したディレクトリに各種形式のレポートを出力します。


その他のオプション

  • --junit-xml JUNIT_XML
    指定したファイルに junit.xml 形式のレポートを出力します。

  • --find-occurrences CLASS.MEMBER
    指定したクラスメンバーの使用箇所を表示します(実験的機能)。

  • --scripts-are-modules
    スクリプト(例: x.py)を、__main__ ではなくモジュールとして扱います。

  • --install-types
    欠落しているライブラリのスタブを pip を使って自動的にインストールします。
    (逆は --no-install-types)

  • --non-interactive
    ユーザー確認なしでスタブのインストールを行い、エラー出力を隠します。
    (逆は --interactive)


実行対象のコード指定

  • --explicit-package-bases
    カレントディレクトリおよび MYPYPATH を使用して、ファイルのモジュール名を決定します。
    (逆は --no-explicit-package-bases)

  • --exclude PATTERN
    正規表現を用いて、型チェックの対象から除外するファイル、ディレクトリ、またはパスを指定します。(複数指定可能)

  • -m MODULE, --module MODULE
    型チェックするモジュールを指定します。(複数指定可能)

  • -p PACKAGE, --package PACKAGE
    型チェックするパッケージを、再帰的に指定します。(複数指定可能)

  • -c PROGRAM_TEXT, --command PROGRAM_TEXT
    文字列として渡されたプログラムを型チェックします。

  • files
    型チェック対象のファイルまたはディレクトリを指定します。


サンプル:mypy の使用例

#!/bin/bash
# sample_mypy.sh: mypy を用いて Python ファイルを型チェックするサンプル

# --verbose:
#   詳細なメッセージを表示します。
#
# --python-version 3.9:
#   Python 3.9 用として型チェックを実施します。
#
# --exclude 'tests/':
#   テストディレクトリを型チェック対象から除外します。

mypy --verbose --python-version 3.9 --exclude 'tests/' my_program.py

このスクリプトを実行すると、my_program.py の型チェックが行われ、詳細なログが出力されます。

いいなと思ったら応援しよう!