Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Katkı

Referans

Lint ve tip denetimi

Cluster ERP'nin pyproject.toml içindeki Ruff ve mypy yapılandırması, sabitlenmiş araç sürümleri ve CI ile pytest'in onları nerede çalıştırdığı.

Cluster ERP Python kodunu Ruff ile lint eder ve mypy ile katı kipte tip denetiminden geçirir. İki araç da pyproject.toml içinde yapılandırılır, tam sürümlere sabitlenir ve iki yerde çalışır: CI'ın lint işi ve pytest dosyası tests/test_static_quality.py. Bu sayfa ayarları ve komutları listeler. Web JavaScript kodunun CI'da lint kapısı yoktur; başka bir yerde çalıştırılıp çalıştırılmadığı koddan belirlenemedi.

Kapsam ve kaynak

  • Tanımlandığı yer: pyproject.toml ([tool.mypy], [[tool.mypy.overrides]], [tool.ruff], [tool.ruff.lint], [tool.ruff.lint.per-file-ignores] bölümleri).
  • Çalıştıran: .github/workflows/ci.yml (lint işi) ve tests/test_static_quality.py.
  • Sayı: 9 seçili Ruff kural ailesi, 2 yok sayılan kural ve 9 dosya bazlı yok sayma girdisi; pyproject.toml:123-149 üzerinden sayıldı.

Araç sürümleri

dev eki iki aracı da sabitler. Bir yorum, sıfır bulgu durumunun bu sürümlere göre ölçüldüğünü ve bir sabitlemeyi yükseltmenin kendi yeniden çalıştırmasıyla bilinçli bir değişiklik olduğunu söyler (pyproject.toml:75-78).

Araç Sürüm Kaynak
mypy 1.20.2 pyproject.toml:80
Ruff 0.15.12 pyproject.toml:83
pytest >=8.0.0 pyproject.toml:81
pytest-asyncio >=0.24.0 pyproject.toml:82

mypy ayarları

Ad Değer Anlam Kaynak
strict true Tüm katı denetimler açıktır pyproject.toml:100
plugins pydantic.mypy Pydantic modelleri denetleyici tarafından anlaşılır pyproject.toml:101
python_version 3.12 Hedef dil sürümü pyproject.toml:102
geçersiz kılma ignore_missing_imports boto3.*, botocore.*, reportlab.* için true Bu isteğe bağlı bağımlılıklar tip taslağı içermez; çağrı yerleri Any olarak tiplenir pyproject.toml:104-111

Ruff ayarları

Ad Değer Anlam Kaynak
target-version py312 Hedef dil sürümü pyproject.toml:114
line-length 100 En fazla satır uzunluğu pyproject.toml:115
select E, F, W, I, N, UP, B, A, SIM Çalışan kural aileleri pyproject.toml:123
ignore B008 yok sayılır FastAPI Depends(), Query() ve require_permission() çağrılarını argüman varsayılanlarına koyar pyproject.toml:125-127
ignore N802 yok sayılır Qt geçersiz kılma yöntemleri C++ adlarını korur pyproject.toml:128-130

TCH ailesi bilerek seçilmez. Yorum, kod tabanının açıklamaları çalışma zamanında çözdüğünü (Pydantic v2 modelleri, SQLAlchemy Mapped[], FastAPI rota imzaları) ve import'ları bir TYPE_CHECKING bloğuna taşımanın çözümlemeyi bozacağını açıklar (pyproject.toml:117-122).

Dosya bazlı yok saymalar

Yol Yok sayılan kural Verilen gerekçe Kaynak
migrations/** E501 Göçler uzun satır içi SQL içeren dondurulmuş tarihsel kayıtlardır pyproject.toml:134-136
src/cluster_erp/ai/intent_engine.py N806 İşlev kapsamında büyük harfli sabitler pyproject.toml:137-141
src/cluster_erp/modules/procurement/mrp/services.py N806 Aynı gerekçe pyproject.toml:142
src/cluster_erp/server/routes/chat.py N806 Aynı gerekçe pyproject.toml:143
src/cluster_erp/desktop/modules/procurement/mrp/stock_requirements.py N806 Aynı gerekçe pyproject.toml:144
src/cluster_erp/desktop/modules/procurement/mrp/time_phased.py N806 Aynı gerekçe pyproject.toml:145
src/cluster_erp/desktop/widgets/chat/chat_widget.py N806 Aynı gerekçe pyproject.toml:146
src/cluster_erp/desktop/widgets/generic/field_factory.py N815 Qt sinyal adları PySide yazımını korur pyproject.toml:147-148
src/cluster_erp/desktop/core/api_worker.py N813 Aynı gerekçe pyproject.toml:149

Araçların çalıştığı yerler

Yer Komut Kapsam Kaynak
CI işi lint python -m ruff check src tests src, tests .github/workflows/ci.yml:51
CI işi lint python -m mypy src Qt istemcisi dahil src .github/workflows/ci.yml:52
pytest ruff check src/ tests/ scripts/ src, tests, scripts tests/test_static_quality.py:26-35
pytest mypy src/cluster_erp paket tests/test_static_quality.py:21-23, tests/test_static_quality.py:38-46

CI, mypy'den önce masaüstü ekini PySide6==6.8.3 ile kurar; böylece Qt istemcisi bu sürüme göre tip denetiminden geçer (.github/workflows/ci.yml:48-50).

Aynı denetimleri bir iş istasyonunda çalıştırmak için CI komutlarını kullanın:

python -m ruff check src tests
python -m mypy src

Kısıtlar ve doğrulama

  • Statik kalite testi yalnız yeni bulgularda değil, herhangi bir bulguda başarısız olur. Belge dizesi deponun 2026-08-17'de sıfır Ruff bulgusuna ve 2026-08-18'de sıfır katı mypy bulgusuna ulaştığını kaydeder (tests/test_static_quality.py:3-10).
  • mypy alt sürecinin süre sınırı 600 saniye, Ruff alt sürecininki 300 saniyedir (tests/test_static_quality.py:33, tests/test_static_quality.py:44).

Tutarsızlıklar

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13