-
Notifications
You must be signed in to change notification settings - Fork 0
pl Architecture & Heuristics
Krzysztofci edited this page Jun 26, 2026
·
1 revision
Narzędzie analizuje strukturę kodu źródłowego bez konieczności jego faktycznego uruchamiania, wykorzystując wbudowany w standardową bibliotekę Pythona moduł ast (Abstract Syntax Tree – Abstrakcyjne Drzewo Składniowe). Dzięki takiemu podejściu proces analizy jest całkowicie bezpieczny dla systemu, niezwykle lekki i błyskawiczny.
Każda funkcja zlokalizowana w badanym projekcie jest mapowana przez klasę Analyzer(ast.NodeVisitor), gdzie przypisywane są jej punkty (wagi) w dwóch niezależnych kategoriach: GUI oraz LOGIC.
-
Nazewnictwo Funkcji:
- Słowa kluczowe takie jak
build,show,ui,widgetdodają punkty do kategorii GUI (pod warunkiem, że plik importuje powiązane biblioteki okienkowe). - Słowa kluczowe takie jak
calc,parse,load,processautomatycznie inkrementują licznik LOGIC.
- Słowa kluczowe takie jak
-
Wywołania wewnątrz ciał funkcji (Method Calls):
- Metody typu
.pack(),.grid(),.bind()czy bezpośrednie instancje komponentów UI (np.Button,Frame) stanowią silne wskaźniki przynależności do warstwy GUI. - Wywołania systemowe, operacje na plikach (
open,json,subprocess,os,re) kierują wagę funkcji w stronę LOGIC.
- Metody typu
Ostateczna kategoria, do której zostaje zakwalifikowana dana funkcja, determinowana jest przez proporcje zebranych punktów:
-
UNKNOWN: Łączna suma wag wynosi dokładnie
0(np. metody abstrakcyjne, puste interfejsy). -
GUI / LOGIC: Jeden z typów dominuje nad drugim o co najmniej
$1.5\times$ (lub waga drugiego wynosi 0). -
MIXED: Funkcja posiada cechy obu typów, ale żadna z warstw nie osiągnęła wymaganej przewagi
$1.5\times$ . Oznacza to silne powiązanie widoku z logiką biznesową (tzw. tight coupling) — kod oznaczony tym statusem jest bezpośrednim kandydatem do refaktoryzacji architektonicznej.