Skip to main content

Python コードに対して関数型プログラミングのルール違反を検査するツール

Project description

fp-checker

Python コードを解析し、関数型プログラミングのルールに反した関数を検査する Rust 製ツールです。CLI と Python API の両方を提供し、結果は text / JSON / SARIF の各形式で出力できます。組み込みルールに加えて、設定ファイルだけで custom rule を追加できます。

どこを見れば何が分かるか

現在の実装範囲

  • Rust workspace: fp_checker_core, fp_checker_cli, fp_checker_py
  • Python 構文解析: rustpython-parser ベースの adapter
  • ignore デコレータ: @fp_ignore を既定値としてサポート
  • MVP ルール:
    • 可変グローバル状態
    • 代入の多用
    • 直接 I/O
    • 非決定的呼び出し
    • 外部状態への副作用
    • ミュータブルなデフォルト引数
    • 直接的な effectful call
    • global / nonlocal
  • 追加ルール:
    • hidden mutation
    • loop 内副作用
    • 例外制御フロー
    • class method 内副作用
    • 参照透過性を壊す暗黙依存
    • 非推奨 API 使用
  • 出力形式: text / JSON / SARIF
  • AI 向けの structured fix_hint を JSON に含める
  • CLI / Python API / pyproject.toml 設定対応
  • 設定スキーマ: unknown key を reject する strict TOML
  • config 駆動の custom rule: call / name / attribute_write
  • CI 上の Python smoke test: 3.9 / 3.10 / 3.11 / 3.12
  • JSON schema 検証: tests/fixtures/report.schema.json
  • リリース自動化: tag push で GitHub Release と PyPI publish
  • benchmark: cargo bench -p fp_checker_core
  • pre-commit: .pre-commit-config.yaml

クイックスタート

CLI

cargo run -p fp_checker_cli -- check tests/fixtures/sample_project
cargo run -p fp_checker_cli -- check tests/fixtures/sample_project --format json
cargo run -p fp_checker_cli -- check tests/fixtures/sample_project --format sarif

Python API

maturin develop --manifest-path crates/fp_checker_py/Cargo.toml
python3 -c "import fp_checker; print(fp_checker.available_rules())"
import fp_checker

print(fp_checker.check_code("def f(items=[]):\n    return items", format="json"))

開発コマンド

cargo check
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test

リポジトリ構成

.
├── crates/
│   ├── fp_checker_cli/
│   ├── fp_checker_core/
│   └── fp_checker_py/
├── docs/
├── python/
│   └── examples/
├── tests/
│   └── fixtures/
├── .devcontainer/
├── .github/
│   ├── dependabot.yml
│   └── workflows/
├── Cargo.toml
├── pyproject.toml
├── CONTRIBUTING.md
├── SECURITY.md
└── CHANGELOG.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fp_checker-0.1.0.tar.gz (45.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fp_checker-0.1.0-cp39-abi3-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.9+Windows x86-64

fp_checker-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ x86-64

fp_checker-0.1.0-cp39-abi3-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file fp_checker-0.1.0.tar.gz.

File metadata

  • Download URL: fp_checker-0.1.0.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fp_checker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 393324b97cbaf78e682d14293c3ffd156e5a0b540ec31e2196c40c65d68c91bb
MD5 198c30a811f04130ce269f12c3ca273f
BLAKE2b-256 b6ba6e7236eb8c4331ffe58967553cbeb46dd6490851c0aaf13a127d547ef036

See more details on using hashes here.

Provenance

The following attestation bundles were made for fp_checker-0.1.0.tar.gz:

Publisher: release.yml on sotanengel/python-fp-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fp_checker-0.1.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: fp_checker-0.1.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fp_checker-0.1.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4003e04c69ffc73e30429344cc33337d38586d96c85136d55280d797e2503af0
MD5 37fb388361e58b3ecba934efdb627e59
BLAKE2b-256 35013c273ff7d0208a266bdd4f054d8611ef608ab41d4d026b456e72348a9452

See more details on using hashes here.

Provenance

The following attestation bundles were made for fp_checker-0.1.0-cp39-abi3-win_amd64.whl:

Publisher: release.yml on sotanengel/python-fp-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fp_checker-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for fp_checker-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4b709b1d541507a9fc9a22d48d1dddc8d94cf4f56d3b2105f93acc34e3083c54
MD5 7d615ade1cd5d5017e57605401ffe9db
BLAKE2b-256 119ba5a5b9006b8170bd767844965d03c921664bf4eaff84885d7637fffa49cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fp_checker-0.1.0-cp39-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yml on sotanengel/python-fp-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fp_checker-0.1.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fp_checker-0.1.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83211aafebda7ba992b74a19e04b26cf62d17946f556de4f7e0370c7f1724712
MD5 fa9a69953cf34e9b502886e437b09531
BLAKE2b-256 eb356f20c5757447f64d0bbe02e66aec8f3f461ca0aadc980058de853a58a720

See more details on using hashes here.

Provenance

The following attestation bundles were made for fp_checker-0.1.0-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on sotanengel/python-fp-checker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page