Pisz臋 kod, pojawiaj膮 si臋 podkre艣lenia b艂臋d贸w, dostaj臋 podpowiedzi i mn贸stwo innych bajer贸w.
Ale jak to dzia艂a pod mask膮?
Zacz膮艂em pisa膰 w艂asny plugin do IntelliJ i przy okazji odkry艂em kilka smaczk贸w, kt贸rymi musz臋 si臋 podzieli膰.
Pierwsza ciekawostka?
IntelliJ nie traktuje kodu jako zwyk艂ego tekstu. W sumie logiczne...
Kiedy otwierasz plik, IDE nie bawi si臋 ci膮giem znak贸w, tylko od razu tworzy w艂asny model. W艂asn膮 struktur臋. Co艣 w rodzaju drzewa, w kt贸rym ka偶da klasa, metoda czy zmienna ma sw贸j w艂asny obiekt.
W dokumentacji nazywaj膮 to pi臋knie PSI (Program Structure Interface).
W drzewie PSI ka偶dy element ma rodzica (czyli wi臋ksz膮 struktur臋, w kt贸rej si臋 znajduje) i mo偶e mie膰 dzieci (mniejsze elementy). Klasa Animal jest rodzicem metody makeSound(), a ta z kolei mo偶e by膰 rodzicem zmiennej dog u偶ytej w jej wn臋trzu.
Dzi臋ki PSI mo偶liwa jest np. refaktoryzacja. Zmiana nazwy w jednym miejscu automatycznie zmienia j膮 wsz臋dzie. W ca艂ym kodzie. Jak to dzia艂a?
A no tak, 偶e IntelliJ nie szuka tekstu, tylko zmienia symbol w modelu PSI, a wszystkie odwo艂ania s膮 z nim powi膮zane.
Fajne, prawda?
To samo tyczy si臋 podpowiedzi, czy podkre艣lania b艂臋d贸w. Czyli zamiast operowa膰 na tek艣cie, IntelliJ dzia艂a na strukturze.
Kolejne ciekawostki niebawem 馃檪
M贸j tygodniowy post臋p
馃殌 Rozpocz膮艂em tworzenie w艂asnej wtyczki do IntelIij: