Role¶
Co robi kod w modułach danej roli: endpointy przekazują pracę dalej, w async def nie ma blokujących wywołań, porty są abstrakcyjne, adaptery deklarują swój port, jest jeden korzeń kompozycji, nazwy ORM trzymają konwencję. Te reguły oceniają kod według wyborów zespołu, więc są opt-in; szablon może włączyć regułę dla roli, a niektóre presety też je włączają.
| Kod | Nazwa | Co zgłasza | Włączona |
|---|---|---|---|
| INW012 | thin-endpoint |
Endpoint HTTP, który sam wykonuje pracę: za dużo instrukcji, gałęzi albo pętli, własne wywołania bazy danych albo HTTP, albo brak wywołania warstwy, którą wskazuje delegate-to |
opt-in |
| INW013 | async-blocking |
Synchroniczne wywołanie bazy danych, cache'u albo chmury wewnątrz async def: synchroniczny Session SQLAlchemy, redis.Redis, boto3 albo blokujący sterownik |
opt-in |
| INW014 | ports-abstract |
Klasa w module portu, która nie jest ABC ani Protocol, albo metoda portu, której ciało wykonuje pracę | opt-in |
| INW015 | construct-only-in |
Moduł spoza korzenia kompozycji, który w czasie działania importuje adapter wyjściowy albo inną chronioną rolę lub buduje jedną z jej klas | opt-in |
| INW016 | orm-naming |
Nazwa tabeli, która nie jest w lower_case_snake i w liczbie pojedynczej, albo kolumna daty i czasu bez _at lub _date; uruchomienie dla całego projektu wymaga też konwencji nazw w MetaData |
opt-in |
| INW020 | adapter-conformance |
Publiczna klasa w module adaptera bez linii _: Port = Adapter(...) pod if TYPE_CHECKING:, taka linia wykonywana przy imporcie albo linia, której adnotacja nie nazywa żadnego portu |
opt-in |
Lista reguł zbiera reguły wszystkich kategorii w jednym miejscu; można ją przeszukiwać, filtrować i sortować.